What it is

A companion MCP server exposes SimpleDraw's editing core to Claude Code and Codex: the same drawing session, the same fixed component catalog, the same native-file validation and the same export renderer as the app. An assistant can create a drawing, insert and connect components, edit their properties, render a picture, and export native files, PNG, SVG or PDF. It cannot load arbitrary program types, run domain simulators or run scripts.

Drawings move between the browser and an assistant as native files, or live with Link agent. Drawings the assistant manages live in a workspace on your computer (Beep.SimpleDraw/mcp in your local application data folder), outside the plugin, so they survive updates.

Install the plugins

The distribution simpledraw-plugins-v1.zip holds a Codex package and a Claude Code package backed by the same compiled server and Beep.Skia libraries. Extract it to a permanent directory and run these commands there.

Requires the .NET 10 SDK or the .NET 10 ASP.NET Core Runtime. dotnet --list-runtimes must list both Microsoft.NETCore.App 10.x and Microsoft.AspNetCore.App 10.x. Native Skia dependencies must be available on the host; the Windows host is the tested one.

Claude Code

claude plugin marketplace add .
claude plugin install simpledraw@beep-tools --scope user
claude plugin list

Codex

codex plugin marketplace add .
codex plugin add simpledraw@beep-tools
codex plugin list

Start a new session, then ask: "Use SimpleDraw to create a connected workflow with Beep.Skia components, render it, and export the native drawing." The included simpledraw skill guides discovery, property editing and revision-safe changes; in Claude Code it is /simpledraw:simpledraw. Keep the extracted folder for updates. To remove: claude plugin uninstall simpledraw@beep-tools --scope user or codex plugin remove simpledraw@beep-tools.

Standalone server

# stdio (Claude Desktop, Claude Code, Codex)
dotnet <absolute-path>/Beep.SimpleDraw.Mcp.dll --workspace <absolute-workspace-directory>

# one shared process on loopback HTTP
dotnet <absolute-path>/Beep.SimpleDraw.Mcp.dll --http --port 5246 --workspace <directory>
# endpoint: http://127.0.0.1:5246/mcp

claude mcp add --scope user simpledraw -- dotnet <DLL> --workspace <directory>
codex mcp add simpledraw -- dotnet <DLL> --workspace <directory>

For Claude Desktop, merge the mcpServers.simpledraw object from docs/mcp/claude-desktop.json into %APPDATA%/Claude/claude_desktop_config.json. Restart the client or start a new chat to load newly configured tools. The HTTP endpoint accepts only the loopback host and origin.

How an agent works

  1. list_components discovers the 249 components in 16 families and the seven sketch kinds; describe_component returns the exact property contract, defaults, enums and default ports before anything is set.
  2. create_drawing or import_drawing returns an ID and a revision. Every editing call takes the current expectedRevision; on a conflict, read the drawing again and reconsider the edit. This stops Claude, Codex and you from overwriting each other.
  3. add_component, add_sketch, add_table and add_image create objects at world coordinates; style, text, path, move, resize, group, lock, reorder and delete tools reuse the app's editing and undo.
  4. get_ports exposes real port identities; connect_nodes joins them with Straight, Orthogonal or Curved routing.
  5. render_drawing returns a real inline PNG to the agent; export_drawing writes native JSON, PNG, SVG, PDF, editable PNG or library files under the workspace.

For ports on flowchart shapes, describe_component shows ShowTopBottomPorts; set it to True for a top-to-bottom flow (see Components and libraries). layout_elements and import_mermaid set it from their direction.

The tools

GroupTools
Discover and readlist_components, describe_component, list_templates, list_drawings, get_drawing, get_ports, get_connections, find_elements, find_loose_lines, list_pages, list_frames, get_table
Create and importcreate_drawing, import_drawing, import_mermaid, insert_template, add_component, add_sketch, add_image, add_table, add_next_step, create_frame, add_page
Edit objectsset_component_property, set_style, edit_text, set_path, set_link, move_elements, resize_elements, rotate_elements, flip_elements, align_elements, distribute_elements, layout_elements, group_elements, duplicate_elements, reorder_elements, lock_elements, select_elements, delete_elements, set_background, set_viewport
Tablesadd_table, get_table, set_table_cells, change_table, style_table_cells
Connectors and linesconnect_nodes, connect_elements, remove_connection, edit_connector, reconnect_connector, delete_and_reconnect, reset_route, set_line_settings, bind_arrow
Pages and framesswitch_page, rename_page, remove_page, order_frames, create_frame, list_pages, list_frames
Librariessave_library_selection, insert_library_entry, import_library, remove_library_entry
Historyundo, redo
Outputrender_drawing, export_drawing
Live linklink_board, unlink_board

The complete list is distribution/mcp-plugins/shared/tools.json. Limits are the app's: 2,000 objects across 50 pages, 6 MiB of drawing plus 25 MiB of images, a 32 MiB library of up to 100 entries, exports up to 8192 pixels a side, and 256 drawings in the workspace. Undo, redo, the viewport and the selection are in memory: a restart, or another process's edit, resets stale history.