mirror of
https://github.com/storytold/cadcraft.git
synced 2026-10-27 20:36:48 -06:00
- All 2D Draw-menu items: ARC variants, CIRCLE TTR/TTT, DIVIDE/MEASURE, REVCLOUD, WIPEOUT, 3DPOLY, MLINE, HELIX, SPLINE CV, CENTERMARK/CENTERLINE, XLINE and RECTANG options. - PEDIT, SPLINEDIT, LENGTHEN, ALIGN, BLEND, REVERSE, NCOPY, CHSPACE, FLATTEN, ARRAYPATH, TEXTEDIT; FILLET with arcs and polylines; TRIM ellipses and splines; grip editing commands. - Layouts, MVIEW/VPORTS, viewport scale/lock/layers, PAGESETUP, PLOT/EXPORTPDF with our own PDF writer; paper-space rendering through viewports. - GPU canvas (wgpu batches, CPU fallback); rstar spatial index for pick/select/osnap; cadcraft-cli perf harness. - CAL, FIND/replace, MASSPROP, MEASUREGEOM; TrueType outlines in cadcraft-fonts; contributors standard (xtask contributors, About window credits); docs/mcp.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
48 lines
1.9 KiB
Markdown
48 lines
1.9 KiB
Markdown
# CADCraft and AI agents (MCP)
|
|
|
|
CADCraft speaks the [Model Context Protocol](https://modelcontextprotocol.io) over stdio.
|
|
|
|
## Start it
|
|
|
|
```sh
|
|
# Headless: an in-process drawing session, no window.
|
|
cadcraft-cli mcp
|
|
|
|
# Bridged to the running app (watch the agent draw):
|
|
cadcraft --control 7979 &
|
|
cadcraft-cli mcp --connect 127.0.0.1:7979
|
|
```
|
|
|
|
Example client configuration (Claude Code / Claude Desktop):
|
|
|
|
```json
|
|
{ "mcpServers": { "cadcraft": { "command": "cadcraft-cli", "args": ["mcp"] } } }
|
|
```
|
|
|
|
## Tools
|
|
|
|
| Tool | What it does |
|
|
|---|---|
|
|
| `command_line {text}` | Type at the command line exactly like a person: `line 0,0 @10,0 @0,5 c`, `circle 5,2 1`, `offset 0.5`, `zoom e`. Spaces act as Enter; empty text is Enter. Returns the new prompt, keywords and output. |
|
|
| `script {text}` | A multi-line script (like `.scr` files). |
|
|
| `execute {command, params}` | Any command with JSON parameters, never a dialog. `list_commands` shows ids and parameter docs. |
|
|
| `list_commands {filter?}` | The command catalog. |
|
|
| `inspect_drawing {entities?, limit?}` | Counts, extents, layers, styles, blocks, layouts, selection, undo history and entities. |
|
|
| `query_entities {type?, layer?, window?}` | Filtered entities with handles and geometry. |
|
|
| `render {width?, height?, fit?}` | A PNG image of the drawing. |
|
|
| `new_drawing {metric?}`, `open {path}`, `save {path?}`, `cancel` | Files and Escape. |
|
|
| `screenshot`, `ui_inspect`, `ui_click {x, y}` | Only when connected to the app. |
|
|
|
|
Resources: `cadcraft://drawing` (inspect JSON) and `cadcraft://commands` (catalog).
|
|
|
|
## A typical session
|
|
|
|
1. `command_line {"text": "rectang 0,0 100,60"}`
|
|
2. `execute {"command": "circle", "params": {"center": [10, 10], "radius": 4}}`
|
|
3. `command_line {"text": "dimlinear 0,0 100,0 50,-8"}`
|
|
4. `inspect_drawing {}` — verify counts and geometry.
|
|
5. `render {}` — look at it.
|
|
|
|
The end-to-end test in `crates/mcp/src/tests.rs` runs a session like this and checks the result
|
|
only through MCP.
|