@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
create_new_diagram
delete_page
edit_diagram
export_diagram
get_diagram
get_drawing_guide
get_selection
get_shape_library
list_pages
list_saved_diagrams
load_diagram
rename_page
restore_version
screenshot_diagram
start_session
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
The badge states one fact about time and nothing else. It never claims a server is safe.
[](https://mcp-pin.gautamkhosla.com/servers/7e5e7593cff70476.html)