Public log

@next-ai-drawio/mcp-server

draw.io MCP server for Claude Code, Cursor, Codex and VS Code: the AI draws on a live browser canvas you can also edit by hand, with versions and undo

npm · fingerprint 7aa402eae402d640db71a305 · repository · RSS

16tools
2recorded versions
14dtracked
unchanged 12d

What changed

Changed 2026-10-18 10:49 UTC

1 description rewritten.

--- pinned/edit_diagram
+++ observed/edit_diagram
  {
    "annotations": {
      "openWorldHint": false
-   "description": "Edit a specific page in the current diagram by ID-based operations (update/add/delete cells).\n\nAll-or-nothing: if any operation fails, nothing is applied and every failure is listed.\n\nFreshness: the server remembers the last diagram state you have seen, and rejects this call only if the user edited the diagram in the browser since then. You do NOT need to call get_diagram before every edit: a rejected call changes nothing and includes the current XML of the page, so you can rebuild your operations and retry.\n\nCall get_diagram first only when you don't know the current diagram content (cell IDs, structure) — e.g. the diagram wasn't created in this conversation, or you're unsure your memory of it is accurate.\n\nMulti-page targeting:\n- page_id / page_name / page_index are optional; when all omitted, the FIRST page is targeted\n- Use list_pages to discover what pages exist\n\nOperations:\n- add: Add a new cell. Provide cell_id (new unique id within the page) and new_xml. One cell per operation.\n- update: Replace an existing cell by its id. Provide cell_id and complete new_xml.\n- delete: Remove a cell by its id. Only cell_id is needed. Its children and connected edges are deleted too, so give only a container's id.\n\nFor add/update, new_xml is the complete mxCell in the compact form (a shape with x, y, w, h; an edge with source and target). No XML comments. Every \" inside new_xml must be escaped as \\\" in the JSON.\n\nExample - Add a rectangle on the default (first) page:\n{\"operations\": [{\"operation\": \"add\", \"cell_id\": \"rect-1\", \"new_xml\": \"<mxCell id=\\\"rect-1\\\" value=\\\"Hello\\\" style=\\\"rounded=1;\\\" x=\\\"100\\\" y=\\\"100\\\" w=\\\"120\\\" h=\\\"60\\\"/>\"}]}\n\nExample - Delete a cell on the default page:\n{\"operations\": [{\"operation\": \"delete\", \"cell_id\": \"rect-1\"}]}",
+   "description": "Edit a specific page in the current diagram by ID-based operations (update/add/delete cells).\n\nAll-or-nothing: if any operation fails, nothing is applied and every failure is listed.\n\nFreshness: the server remembers the last diagram state you have seen, and rejects this call only if the user edited the diagram in the browser since then. You do NOT need to call get_diagram before every edit: a rejected call changes nothing and includes the current XML of the page, so you can rebuild your operations and retry.\n\nCall get_diagram first only when you don't know the current diagram content (cell IDs, structure) — e.g. the diagram wasn't created in this conversation, or you're unsure your memory of it is accurate.\n\nMulti-page targeting:\n- page_id / page_name / page_index are optional; when all omitted, the FIRST page is targeted\n- Use list_pages to discover what pages exist\n\nOperations:\n- add: Add a new cell. Provide cell_id (new unique id within the page) and new_xml. One cell per operation.\n- update: Replace an existing cell by its id. Provide cell_id and complete new_xml.\n- delete: Remove a cell by its id. Only cell_id is needed. Its children and connected edges are deleted too, so give only a container's id.\n\nFor add/update, new_xml is the complete mxCell (inside its <object> wrapper when it has custom data, see the drawing guide) in the compact form (a shape with x, y, w, h; an edge with source and target). No XML comments. Every \" inside new_xml must be escaped as \\\" in the JSON.\n\nExample - Add a rectangle on the default (first) page:\n{\"operations\": [{\"operation\": \"add\", \"cell_id\": \"rect-1\", \"new_xml\": \"<mxCell id=\\\"rect-1\\\" value=\\\"Hello\\\" style=\\\"rounded=1;\\\" x=\\\"100\\\" y=\\\"100\\\" w=\\\"120\\\" h=\\\"60\\\"/>\"}]}\n\nExample - Delete a cell on the default page:\n{\"operations\": [{\"operation\": \"delete\", \"cell_id\": \"rect-1\"}]}",
    "execution": {
      "taskSupport": "forbidden"
    },

Current tools

Show all 16 tool fingerprints
add_page
07b3cecf786aacf2
create_new_diagram
2b3c676c5dd7a791
delete_page
a237bd7f4d61a24c
edit_diagram
d7ec18e8a01175b1
export_diagram
153957f1a4c52f25
get_diagram
7ae7fa7d7538a743
get_drawing_guide
ac871c25e1ce0ace
get_selection
db84dd7111c92774
get_shape_library
e0d54ae9e7140805
list_pages
fa879e04f069bddc
list_saved_diagrams
560e7abb2b38028a
load_diagram
5432609647acf008
rename_page
ac995064af34ce23
restore_version
78869835711b5111
screenshot_diagram
4a0957498d7cefdc
start_session
8030efb509b05be0

Watch this server yourself

If you run this server, put the proxy in front of it. It pins these exact fingerprints on first connect and stops the session if they move.

npx -y mcp-pin@0.2.3 -- <your @next-ai-drawio/mcp-server command>

Or subscribe to this page's RSS feed to be told when it changes.

Badge

mcp-pin status badge for @next-ai-drawio/mcp-server

The badge states one fact about time and nothing else. It never claims a server is safe.

[![mcp-pin](https://mcp-pin.gautamkhosla.com/badge/7e5e7593cff70476.svg)](https://mcp-pin.gautamkhosla.com/servers/7e5e7593cff70476.html)