Skip to main content
Glama

Draw.io MCP server

Let's do some Vibe Diagramming with the most wide-spread diagramming tool called Draw.io (Diagrams.net).

Discord channel Build project Version

Key Highlights

  • Claude Code plugin: /plugin marketplace add lgazo/drawio-mcp-server then /plugin install drawio, with /drawio-open and /drawio-status slash commands v2.3.0

  • npx drawio-mcp-server install <host> writes the MCP config for claude-code, claude-desktop, codex, zed, opencode, or all v2.3.0

  • Document persistence tools: set-document-title and save-document v2.3.0

  • Draw.io library API version compatibility mechanism v2.2.0

  • Enable Draw.io MCP in IFrames

  • AWS, GCP, Azure, Cisco19, and CiscoSafe stencils auto-discovered at runtime from drawio's sidebar

  • Multi-document targeting with list-documents and target_document selectors for multi-tab workflows

  • Multi-page targeting with required target_page selectors for page-scoped tools

  • Per-document FIFO serialization for live operations, so multiple agents can work on different files safely

  • Page management tools: list-pages, get-current-page, create-page, copy-page, rename-page

  • Import, embed, or expand Mermaid diagrams v2.1.0

  • Firefox support is back, TLS mode is necessary v2.1.0

  • Server supports TLS mode and optionally generates self-signed certificates v2.1.0

  • Import and export diagrams from/to XML, SVG (with embedded XML), or PNG (with embedded XML) v2.0.0

  • Edge geometry control with waypoints and automatic self-connector routing v2.0.0

  • Parent-child relationships for nested shapes and grouping v2.0.0

  • Unified Server and Extension in the same mono-repo v2.0.0

  • Built-in Draw.io editor - no browser extension required

  • MCP server that lets AI agents control Draw.io diagrams

  • Programmatic diagram creation, inspection, and modification via MCP tools

  • Layer management for complex diagrams

  • Works with any MCP client (Claude Desktop, Claude Code, Zed, Codex, etc.)

Related MCP server: Draw.io MCP Server

Introduction

The Draw.io MCP server brings Draw.io diagramming capabilities to AI agents. It provides MCP tools that can create, read, update, and delete diagram elements - letting AI assistants build architectural diagrams, flowcharts, and visual documentation automatically.

Two ways to use:

  1. Built-in editor - Server hosts Draw.io directly, accessible in your browser

  2. Browser extension - Connect to Draw.io running in your browser via extension

Experimental: integration with the draw.io desktop (Electron) app is in progress but currently blocked by an upstream CSP issue — see DESKTOP.md.

Requirements

  • Node.js (v22 or higher; tested against v22 LTS and v24 LTS) - Runtime environment for the MCP server

  • MCP client - Claude Desktop, Claude Code, Zed, Codex, OpenCode, or any MCP-compatible host

For Built-in Editor

No additional requirements - runs out of the box with --editor flag.

For Browser Extension

Optional

  • pnpm - Preferred package manager (npm works fine too)

Quick Start

1. Configure your MCP host

Fastest path:

  • Claude Code: /plugin marketplace add lgazo/drawio-mcp-server then /plugin install drawio.

  • Any other host: npx drawio-mcp-server install <host> where <host> is claude-code, claude-desktop, codex, zed, opencode, or all.

See docs/PLUGINS.md for the full reference, flags, and uninstall, and docs/release.md for how releases are cut.

Edit ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "drawio": {
      "command": "npx",
      "args": ["-y", "drawio-mcp-server", "--editor"]
    }
  }
}

For other MCP clients and detailed configuration (including pnpm options), see Configuration.

2. Open the editor

After restarting your MCP host, open: http://localhost:3000/

3. Start diagramming

Example prompts you can try:

"Create an event-driven architecture diagram showing a message queue with producers, consumers, and three backend services"

"Create a three-page event-driven architecture diagram. Use three agents in parallel for service topology, message flow, and retry/failure handling, with each agent assigned to a separate target page."

"Draw a CRUD API diagram with a database, API gateway, and four microservices with their endpoints"

"Add a new layer called 'Background' and move all decorative elements to it, then create a new layer for annotations"

Your AI assistant can now control the diagram using MCP tools.

Features

The server provides MCP tools for:

  • Document discovery - list connected Draw.io document instances and route later calls to a specific tab/file instance

  • Diagram inspection - read shapes, pages, layers, and cell properties

  • Diagram modification - add/edit/delete shapes, edges, and labels on a target page

  • Page management - list pages, inspect the current page, create pages, copy pages, and rename pages without forcing a visible page switch on supported runtimes

  • Layer management - create, switch, and organize layers

  • Vendor shape coverage - AWS, GCP, Azure, Cisco19, and CiscoSafe stencils auto-discovered at runtime from drawio's sidebar, so agents can place icons like mxgraph.gcp2.cloud_run or mxgraph.cisco19.router without hand-curated catalogs

  • Built-in TLS — opt-in HTTPS + WSS with manual cert/key or auto-generated self-signed material via a per-user local CA. See CONFIG.md → TLS.

See Tools Reference for the complete list of available tools.

Installation

The server runs as part of your MCP host. Detailed configuration for all supported clients (Claude Desktop, Claude Code, Zed, Codex, oterm) including npm and pnpm options is available in Configuration.

Alternative: Browser Extension

Instead of the built-in editor, you can use the browser extension to connect to Draw.io running in your browser. This works with or without the --editor flag.

  1. Open Draw.io in your browser

  2. Install the Draw.io MCP Browser Extension:

  3. Ensure the extension is connected (green signal overlay on icon)

Configuration without --editor:

{
  "mcpServers": {
    "drawio": {
      "command": "npx",
      "args": ["-y", "drawio-mcp-server"]
    }
  }
}

See the extension documentation for more details.

Experimental: Draw.io Desktop

Integration with the draw.io desktop (Electron) app is experimental and currently blocked end-to-end by an upstream CSP issue. The plugin loads inside draw.io desktop, but its WebSocket connection back to the MCP server is rejected by draw.io's hard-coded connect-src 'self' policy.

See DESKTOP.md for the full setup steps and the current limitation.

Configuration - CLI flags and advanced options

Tools Reference - Complete MCP tools documentation

Troubleshooting

Prompt examples

Contributing

Architecture

Development

Draw.io Desktop (experimental) - install path and known CSP limitation

Star History

Assessments

MSeeP.ai Security Assessment Badge

Available Tools

13 tools
add-cell-of-shapeC

This tool allows you to add new vertex cell (object) on the current page of a Draw.io diagram by its shape name. It accepts multiple optional input parameter.

ParametersJSON Schema
NameRequiredDescriptionDefault
shape_nameYesName of the shape to retrieved from the shape library of the current diagram.
xNoX-axis position of the vertex cell of the shape
yNoY-axis position of the vertex cell of the shape
widthNoWidth of the vertex cell of the shape
heightNoHeight of the vertex cell of the shape
textNoText content placed inside of the vertex cell of the shape
styleNoSemi-colon separated list of Draw.io visual styles, in the form of `key=value`. Example: `whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;`

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It states it 'adds' a vertex cell, implying a write/mutation operation, but doesn't mention permissions, side effects, error conditions, or what happens on success (e.g., returns cell ID). It lacks critical context like whether this modifies the diagram immediately, requires save operations, or has rate limits. The description is minimal beyond the basic action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that states the core functionality upfront. It avoids redundancy and unnecessary elaboration. However, it could be slightly more structured by separating purpose from parameter notes, but it remains appropriately concise for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't cover behavioral aspects like what happens after addition (e.g., returns cell ID, triggers updates), error handling, or prerequisites (e.g., requires an open diagram). Given the tool's complexity (7 parameters, write operation), more context is needed to guide effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all 7 parameters. The description adds no parameter-specific information beyond noting they are 'multiple optional input parameters' (which is evident from the schema). It doesn't explain parameter interactions, dependencies, or provide examples beyond what's in the schema. Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('add new vertex cell'), target resource ('on the current page of a Draw.io diagram'), and mechanism ('by its shape name'). It distinguishes from siblings like 'add-rectangle' (specific shape) and 'add-edge' (different element type), though it doesn't explicitly contrast with them. The purpose is specific but could be more precise about what distinguishes it from other shape-adding tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'add-rectangle' or 'add-edge'. The description mentions 'multiple optional input parameters' but doesn't explain when specific parameters are needed or what scenarios this tool is best suited for. Usage is implied only through the tool name and basic functionality.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add-edgeC

This tool creates an edge, sometimes called also a relation, between two vertexes (cells).

ParametersJSON Schema
NameRequiredDescriptionDefault
source_idYesSource ID of a cell. It is represented by `id` attribute.
target_idYesTarget ID of a cell. It is represented by `id` attribute.
textNoText content placed over the edge cell
styleNoSemi-colon separated list of Draw.io visual styles, in the form of `key=value`. Example: `edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;`edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool 'creates an edge,' implying a write/mutation operation, but doesn't describe side effects (e.g., whether it overwrites existing edges), permissions needed, error conditions, or what happens on success/failure. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose. It avoids redundancy and wastes no words, though it could be slightly more structured (e.g., by explicitly noting it's for creation versus editing). Every part earns its place, making it concise and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (a mutation operation with 4 parameters, no annotations, and no output schema), the description is incomplete. It lacks details on behavioral traits (e.g., idempotency, error handling), output format, or how it fits with siblings like 'edit-edge'. For a tool that modifies data without structured safety hints, more context is needed to guide proper usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with clear descriptions for all parameters (source_id, target_id, text, style). The description adds minimal value beyond the schema, only implying that parameters relate to 'vertexes (cells)' without detailing syntax or constraints. With high schema coverage, the baseline score of 3 is appropriate, as the description doesn't significantly enhance parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'creates an edge, sometimes called also a relation, between two vertexes (cells).' It specifies the verb ('creates'), resource ('edge'), and clarifies terminology ('relation', 'vertexes/cells'). However, it doesn't explicitly differentiate from sibling tools like 'edit-edge' or 'set-cell-data', which could involve edge modifications.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., existing cells), exclusions, or comparisons to siblings like 'edit-edge' (for modifying edges) or 'add-cell-of-shape' (for adding other elements). Usage is implied but not explicitly stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add-rectangleC

This tool allows you to add new Rectangle vertex cell (object) on the current page of a Draw.io diagram. It accepts multiple optional input parameter.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNoX-axis position of the Rectangle vertex cell
yNoY-axis position of the Rectangle vertex cell
widthNoWidth of the Rectangle vertex cell
heightNoHeight of the Rectangle vertex cell
textNoText content placed inside of the Rectangle vertex cellNew Cell
styleNoSemi-colon separated list of Draw.io visual styles, in the form of `key=value`. Example: `whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;`whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states 'add new Rectangle vertex cell' which implies a write/mutation operation, but doesn't mention permissions, side effects (e.g., if it modifies existing cells), error conditions, or what happens on success (e.g., returns a cell ID). For a mutation tool with zero annotation coverage, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two sentences that directly state the tool's purpose and parameter nature. It's front-loaded with the core action, though the second sentence about 'multiple optional input parameter' is somewhat redundant given the schema. Overall, it's efficient with minimal waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a mutation tool (adding graphical elements) with no annotations and no output schema, the description is incomplete. It lacks information on behavioral traits (e.g., what the tool returns, error handling), usage context relative to siblings, and doesn't compensate for the absence of structured output details, making it inadequate for confident agent invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter (x, y, width, height, text, style) well-documented in the schema. The description adds no additional meaning beyond stating 'multiple optional input parameter', which is already evident from the schema's optional nature and parameter count. Baseline score of 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('add new Rectangle vertex cell') and resource ('on the current page of a Draw.io diagram'), which is specific and actionable. However, it doesn't differentiate this tool from sibling tools like 'add-cell-of-shape' or 'add-edge', which likely perform similar diagram modifications, leaving some ambiguity about when to choose this specific rectangle tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It mentions 'multiple optional input parameter' but doesn't specify prerequisites, context (e.g., must have a diagram open), or compare it to siblings like 'add-cell-of-shape' for other shapes or 'edit-cell' for modifications, leaving the agent to guess based on tool names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete-cell-by-idC

Deletes a cell, whether it is a vertex or edge.

ParametersJSON Schema
NameRequiredDescriptionDefault
cell_idYesThe ID of a cell to delete. The cell can be either vertex or edge. The ID is located in `id` attribute.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It states the tool deletes cells but doesn't mention critical details like whether deletion is permanent, requires specific permissions, affects connected edges, or returns confirmation. This is a significant gap for a destructive operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste. It is front-loaded with the core action and resource, making it easy to scan and understand quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive tool with no annotations and no output schema, the description is incomplete. It lacks details on behavioral traits (e.g., permanence, side effects), usage context, and return values, which are essential for safe and effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the 'cell_id' parameter fully. The description adds no additional meaning beyond what's in the schema, such as format examples or edge cases, but doesn't contradict it either.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Deletes') and the resource ('a cell'), specifying it can be either a vertex or edge. It distinguishes from siblings like 'edit-cell' or 'set-cell-data' by focusing on deletion, though it doesn't explicitly contrast with them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'edit-cell' for modifications or 'set-cell-data' for updates. The description lacks context about prerequisites, such as needing an existing cell ID, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edit-cellA

Update properties of an existing vertex/shape cell by its ID. Only provided fields are modified; unspecified properties remain unchanged.

ParametersJSON Schema
NameRequiredDescriptionDefault
cell_idYesIdentifier (`id` attribute) of the cell to update. Applies to vertex/shape cells.
textNoReplace the cell's text/label content.
xNoSet a new X-axis position for the cell.
yNoSet a new Y-axis position for the cell.
widthNoSet a new width for the cell.
heightNoSet a new height for the cell.
styleNoReplace the cell's style string (semi-colon separated `key=value` pairs).

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It states 'Only provided fields are modified; unspecified properties remain unchanged', which is useful behavioral context for partial updates. However, it doesn't disclose other important traits like required permissions, error handling, whether changes are reversible, or what happens if the cell_id doesn't exist. For a mutation tool with zero annotation coverage, this leaves significant gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with zero waste. The first sentence states the core purpose, and the second adds crucial behavioral context about partial updates. Every sentence earns its place, and it's appropriately front-loaded with the main action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given this is a mutation tool with 7 parameters, no annotations, and no output schema, the description is incomplete. It covers the partial update behavior well but misses other important context like error conditions, return values, or prerequisites. The 100% schema coverage helps, but for a tool that modifies data, more behavioral disclosure would be beneficial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 7 parameters thoroughly. The description adds no specific parameter information beyond what's in the schema. The baseline is 3 when schema does the heavy lifting, and the description doesn't compensate with additional parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Update properties') and resource ('existing vertex/shape cell by its ID'), making the purpose specific. It distinguishes from siblings like 'add-cell-of-shape' (creation) and 'delete-cell-by-id' (deletion) by focusing on modification of existing cells.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for updating existing cells, but doesn't explicitly state when to use this tool versus alternatives like 'set-cell-data' or 'set-cell-shape'. It mentions 'Only provided fields are modified', which offers some guidance on partial updates, but lacks explicit when/when-not instructions or named alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edit-edgeA

Update properties of an existing edge by its ID. Only provided fields are modified; unspecified properties remain unchanged.

ParametersJSON Schema
NameRequiredDescriptionDefault
cell_idYesIdentifier (`id` attribute) of the edge cell to update. The ID must reference an edge.
textNoReplace the edge's label text.
source_idNoReassign the edge's source terminal to a different cell ID.
target_idNoReassign the edge's target terminal to a different cell ID.
styleNoReplace the edge's style string (semi-colon separated `key=value` pairs).

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses the partial update behavior ('Only provided fields are modified'), which is valuable. However, it doesn't mention permission requirements, error conditions (e.g., invalid cell_id), mutation effects, or response format. For a mutation tool with zero annotation coverage, this leaves significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with zero waste. First sentence states core purpose, second adds crucial behavioral detail about partial updates. Perfectly front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with 5 parameters, 100% schema coverage, but no annotations and no output schema, the description is minimally adequate. It covers the partial update behavior but lacks information about permissions, error handling, and return values. The schema handles parameters well, but behavioral context is incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 5 parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema. Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Update properties'), target resource ('existing edge'), and identifier mechanism ('by its ID'). It distinguishes from siblings like 'add-edge' (creation) and 'edit-cell' (different resource type).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when modifying an existing edge, but doesn't explicitly state when to use this vs alternatives like 'set-cell-data' or 'edit-cell'. It mentions partial updates ('Only provided fields are modified'), which provides some contextual guidance but lacks explicit exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-selected-cellB

This tool allows you to retrieve selected cell (whether vertex or edge) on the current page of a Draw.io diagram. The response is a JSON containing attributes of the cell.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool retrieves a selected cell and returns JSON attributes, but lacks details on permissions, error handling (e.g., if no cell is selected), or response format specifics. This is a significant gap for a tool with no annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core action ('retrieve selected cell') and includes key details like resource scope and response format. It avoids waste, though it could be slightly more structured by separating usage context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and low complexity (0 parameters), the description is minimally adequate. It covers the basic purpose and response type but lacks behavioral context (e.g., error cases) and usage guidelines, leaving clear gaps for an agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description correctly does not add parameter information, maintaining focus on the tool's purpose. A baseline of 4 is appropriate as it avoids unnecessary details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'retrieve' and the resource 'selected cell (whether vertex or edge) on the current page of a Draw.io diagram', making the purpose specific and understandable. However, it does not explicitly differentiate from sibling tools like 'get-shape-by-name' or 'get-shapes-in-category', which also retrieve diagram elements, so it misses the highest score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., needing a diagram open), exclusions, or compare to siblings like 'get-shape-by-name' for non-selected cells, leaving usage context implied at best.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-shape-by-nameA

Retrieve a specific shape by its name from all available shapes in the diagram's library. It returns the shape and also the category it belongs.

ParametersJSON Schema
NameRequiredDescriptionDefault
shape_nameYesName of the shape to retrieve from the shape library of the current diagram.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that it returns 'the shape and also the category it belongs', adding useful context beyond the basic retrieval action. However, it doesn't cover other behavioral traits like error handling (e.g., if the shape doesn't exist), performance aspects, or whether it's a read-only operation (implied by 'Retrieve' but not explicit). The description doesn't contradict any annotations, as none are given.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that efficiently conveys the tool's purpose and return value. It is front-loaded with the main action ('Retrieve a specific shape by its name'), followed by context ('from all available shapes in the diagram's library') and output details ('It returns the shape and also the category it belongs'). There is no wasted verbiage, making it highly concise and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (one parameter, no output schema, no annotations), the description is adequate but has gaps. It explains what the tool does and what it returns, which is sufficient for basic understanding. However, without annotations or output schema, it lacks details on error cases, return format (e.g., structure of the shape object), or how it interacts with sibling tools. This makes it minimally viable but not fully comprehensive for an agent's needs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the parameter 'shape_name' documented as 'Name of the shape to retrieve from the shape library of the current diagram.' The description adds that it retrieves 'by its name from all available shapes', reinforcing the parameter's purpose but not providing additional syntax, format details, or constraints beyond what the schema already states. With high schema coverage, the baseline is 3, and the description meets this without significant extra value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Retrieve') and resource ('a specific shape by its name'), specifying it comes from 'all available shapes in the diagram's library'. It distinguishes from siblings like 'get-shapes-in-category' (which retrieves multiple shapes) and 'get-shape-categories' (which retrieves categories). However, it doesn't explicitly differentiate from 'get-selected-cell' (which retrieves a selected cell rather than a shape by name), leaving room for minor ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by stating it retrieves 'by its name from all available shapes', suggesting it's for fetching a single shape when the name is known. However, it lacks explicit guidance on when to use this versus alternatives like 'get-shapes-in-category' (for shapes in a category) or 'get-selected-cell' (for a selected cell), and doesn't mention prerequisites or exclusions, such as whether the shape must exist in the library.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-shape-categoriesB

Retrieves available shape categories from the diagram's library. Library is split into multiple categories.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It mentions the library structure but fails to disclose key behavioral traits like whether this is a read-only operation, if it requires authentication, potential rate limits, or what the return format looks like (e.g., list of strings, objects). This leaves significant gaps for a tool with no annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two sentences that are front-loaded: the first states the purpose, and the second adds useful context about the library structure. There's no wasted text, making it efficient, though it could be slightly more structured for clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (0 parameters, no output schema, no annotations), the description is somewhat complete but has gaps. It explains what the tool does and the library structure, but without annotations or output schema, it should ideally cover more behavioral aspects like return format or usage constraints to be fully adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters with 100% coverage, so no parameters need documentation. The description adds context about the library being split into categories, which provides semantic value beyond the empty schema. This compensates adequately, though it's not extensive due to the lack of parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('retrieves') and resource ('available shape categories'), specifying it's from the diagram's library. It distinguishes from some siblings like 'get-shape-by-name' or 'get-shapes-in-category' by focusing on categories rather than individual shapes, though it doesn't explicitly contrast with all siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides minimal guidance, stating the library is split into categories, which implies this tool is for browsing categories rather than shapes. However, it lacks explicit when-to-use advice, such as when to choose this over 'get-shapes-in-category' or other shape-related tools, and offers no alternatives or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-shapes-in-categoryC

Retrieve all shapes in the provided category from the diagram's library. A shape primarily contains style based on which you can create new vertex cells.

ParametersJSON Schema
NameRequiredDescriptionDefault
category_idYesIdentifier (ID / key) of the category from which all the shapes should be retrieved.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It mentions that shapes contain 'style' for creating 'new vertex cells', hinting at downstream usage, but doesn't disclose critical behavioral traits like whether this is a read-only operation, potential rate limits, error conditions, or response format. For a tool with no annotations, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core purpose. The second sentence adds context about shape content, which is useful but not essential. It's efficient with minimal waste, though could be slightly more streamlined.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., list of shapes, error handling), behavioral aspects, or how it fits with siblings. For a tool with 1 parameter and 100% schema coverage, it should provide more context on usage and results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the parameter 'category_id' well-documented in the schema as 'Identifier (ID / key) of the category'. The description adds no additional meaning beyond this, such as examples or constraints. Baseline 3 is appropriate since the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'retrieve' and resource 'shapes in the provided category', specifying it's from 'the diagram's library'. It distinguishes from siblings like 'get-shape-by-name' (retrieves by name) and 'get-shape-categories' (retrieves categories), but doesn't explicitly contrast them. The purpose is specific and actionable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives like 'get-shape-by-name' or 'list-paged-model' is provided. The description implies usage for retrieving shapes by category, but lacks context on prerequisites, exclusions, or comparisons to sibling tools. This leaves the agent to infer usage scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list-paged-modelA

Retrieves a paginated view of all cells (vertices and edges) in the current Draw.io diagram. This tool provides access to the complete model data with essential fields only, sanitized to remove circular dependencies and excessive data. It allows to filter based on multiple criteria and attribute boolean logic. Useful for programmatic inspection of diagram structure without overwhelming response sizes.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoZero-based page number for pagination. Page 0 returns the first batch of cells, page 1 returns the next batch, etc. Default is 0.
page_sizeNoMaximum number of cells to return in a single page. Controls response size and performance. Must be between 1 and 1000. Default is 50.
filterNoOptional filter criteria to apply to cells before pagination

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key traits: the tool is read-only ('retrieves'), sanitizes data ('remove circular dependencies and excessive data'), supports pagination ('paginated view'), and allows filtering. It could improve by mentioning performance implications or error handling, but it covers essential operational aspects well.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose in the first sentence, followed by supporting details in clear, concise sentences. Each sentence adds value: data sanitization, filtering logic, and usage context, with no redundant or vague phrasing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (3 parameters with nested objects, no output schema, and no annotations), the description is mostly complete. It explains the tool's purpose, behavior, and usage context effectively. However, it lacks details on return format or error cases, which would be helpful for programmatic use without an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, providing detailed documentation for all parameters (page, page_size, filter). The description adds minimal value beyond the schema, only implying filtering capabilities ('allows to filter based on multiple criteria') without specifying how they map to parameters. This meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('retrieves', 'provides access') and resources ('cells (vertices and edges) in the current Draw.io diagram'). It distinguishes itself from siblings by emphasizing pagination, filtering, and sanitized data access, unlike tools that modify or select specific cells.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for usage ('useful for programmatic inspection of diagram structure without overwhelming response sizes'), implying this tool is for read-only analysis rather than modification. However, it does not explicitly state when to use alternatives like 'get-selected-cell' for single-cell access or when not to use it (e.g., for real-time updates).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set-cell-dataC

Sets or updates a custom attribute on an existing cell.

ParametersJSON Schema
NameRequiredDescriptionDefault
cell_idYesIdentifier (`id` attribute) of the cell to update with custom data.
keyYesName of the attribute to set on the cell.
valueYesValue to store for the attribute. Non-string values are stringified before storage.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that non-string values are stringified before storage, which is useful, but lacks critical details such as permission requirements, whether the operation is idempotent, error handling, or response format. For a mutation tool with zero annotation coverage, this leaves key behavioral traits undisclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It is front-loaded with the core action and resource, making it easy to parse quickly, which is ideal for conciseness in tool descriptions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity as a mutation operation with no annotations and no output schema, the description is insufficient. It lacks details on behavioral aspects like side effects, error cases, or return values, and doesn't differentiate from sibling tools. This leaves the agent with incomplete context for safe and effective invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema fully documents all three parameters. The description adds minimal value beyond the schema, only implying that 'key' and 'value' relate to custom attributes without providing additional context like examples or constraints. This meets the baseline for high schema coverage but doesn't enhance understanding significantly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Sets or updates') and resource ('custom attribute on an existing cell'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'edit-cell' or 'set-cell-shape', which could handle similar cell modifications, leaving some ambiguity about when to choose this specific tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'edit-cell' or 'set-cell-shape', nor does it mention prerequisites (e.g., the cell must exist). It only states what it does, without context for selection among siblings, which is a significant gap for effective tool usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set-cell-shapeC

Updates the visual style of an existing vertex cell to match a library shape by name.

ParametersJSON Schema
NameRequiredDescriptionDefault
cell_idYesIdentifier (`id` attribute) of the cell whose shape should change.
shape_nameYesName of the library shape whose style should be applied to the existing cell.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states this is an update operation, implying mutation, but doesn't cover critical aspects like permissions needed, whether changes are reversible, error handling (e.g., invalid cell_id or shape_name), or side effects. This leaves significant gaps for an agent to understand the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core action ('Updates the visual style') and specifies key constraints ('existing vertex cell', 'match a library shape by name'). There is no wasted verbiage, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (a mutation operation with no annotations and no output schema), the description is insufficient. It lacks details on behavioral traits (e.g., error conditions, side effects), usage context relative to siblings, and expected outcomes. For a tool that modifies visual properties, more guidance is needed to ensure correct agent invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents both parameters (cell_id and shape_name). The description adds no additional semantic context beyond what's in the schema, such as examples of shape names or cell_id formats. This meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Updates') and resource ('visual style of an existing vertex cell'), specifying it applies to an existing cell rather than creating a new one. However, it doesn't explicitly differentiate from sibling tools like 'edit-cell' or 'add-cell-of-shape', which might handle similar visual modifications.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'edit-cell' or 'add-cell-of-shape'. It mentions updating an existing cell but doesn't clarify if this is the preferred method for shape changes or if there are prerequisites (e.g., the cell must exist).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

B3.4/5.0
Disambiguation3/5

The tools have clear purposes but some overlap exists, such as add-cell-of-shape and add-rectangle both adding vertex cells, which could cause confusion. However, descriptions help differentiate them by shape specificity, and most tools target distinct actions like editing, deleting, or retrieving cells.

Naming Consistency4/5

Tool names follow a consistent verb_noun pattern with minor deviations, such as list-paged-model using 'paged' instead of a direct noun. Most names are clear and readable, like delete-cell-by-id and get-shape-by-name, maintaining a predictable structure throughout the set.

Tool Count5/5

With 13 tools, the count is well-scoped for a diagram editing server, covering essential operations like adding, editing, deleting, and retrieving cells and shapes. Each tool earns its place by addressing specific needs in diagram manipulation without being overwhelming.

Completeness4/5

The toolset provides comprehensive coverage for diagram editing, including CRUD operations for cells and edges, shape management, and data inspection. Minor gaps exist, such as no direct tool for creating new pages or handling diagram-level properties, but agents can work around these with existing tools.

Maintenance

ActivityMaintained
ResponsivenessWithin a week

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/lgazo/drawio-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server