Draw.Io Server
FreeNot checkedEnables AI assistants to create, read, and manage Draw.io diagrams programmatically through natural language interactions.
About
Enables AI assistants to create, read, and manage Draw.io diagrams programmatically through natural language interactions.
README
A Model Context Protocol (MCP) server that enables AI assistants to create, read, and manage Draw.io diagrams programmatically through natural language interactions.
Overview
The Draw.io MCP Server bridges the gap between conversational AI and visual documentation, allowing users to generate professional-quality diagrams without manual drawing effort. Perfect for technical writers, software developers, and anyone who needs to create architecture diagrams, flowcharts, and network diagrams quickly.
Features
- Write XML: Create or update diagrams using valid Draw.io XML for complete control over diagram structure
- Read Diagrams: Parse and analyze existing Draw.io files with detailed shape and connection information
- Add Shapes: Insert new shapes (rectangles, ellipses, diamonds, cylinders, hexagons) into diagrams
- Add Connections: Create edges between diagram elements
- Export Support: Instructions for exporting to PNG, SVG, and PDF formats
Installation
Prerequisites
- Python 3.12 or higher
- uv (recommended) or pip
Setup
Option 1: Install from PyPI (coming soon)
pip install drawio-mcp
Option 2: Install from source
git clone <repository-url>
cd drawio-mcp
uv sync --all-extras
Option 3: Build and install locally
git clone <repository-url>
cd drawio-mcp
uv sync --all-extras
uv pip install build
python -m build
pip install dist/drawio_mcp-0.0.1-py3-none-any.whl
Usage
Running the Server
The server communicates via stdio (standard input/output):
# If installed as package
drawio-mcp
# Or run as module
python -m drawio_mcp
# Or run from source
python src/drawio_mcp/__init__.py
Configuration with Claude Desktop
Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"drawio": {
"command": "drawio-mcp",
"args": [],
"env": {}
}
}
}
Or if running from source:
{
"mcpServers": {
"drawio": {
"command": "/absolute/path/to/drawio-mcp/.venv/bin/python",
"args": ["-m", "drawio_mcp"],
"env": {}
}
}
}
Available Tools
1. write_diagram_xml ⭐ PRIMARY TOOL
Write or update a Draw.io diagram file using valid Draw.io XML content. This provides complete control over diagram structure and is the recommended way to create diagrams.
Parameters:
file_path(string): Path where the .drawio file should be saved or updated (creates file and directories if they don't exist)xml_content(string): Valid Draw.io XML content (must include complete mxfile structure)validate(boolean, optional): Whether to validate the XML before writing (default: true)
Example:
Write this XML to a new diagram file at ~/diagrams/custom.drawio:
<mxfile host="AI Agent" version="21.6.5" type="device">
<diagram name="My Diagram" id="d1">
<mxGraphModel dx="2037" dy="830" grid="1" gridSize="10">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="shape1" value="Hello" style="whiteSpace=wrap;rounded=1;" vertex="1" parent="1">
<mxGeometry x="100" y="100" width="120" height="60" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
Use Cases:
- Generate complex diagrams programmatically from code analysis
- Convert other diagram formats (Mermaid, PlantUML, etc.) to Draw.io
- Batch process diagram creation from data sources
- Create custom diagram templates with precise styling
- Build flowcharts, architecture diagrams, network topologies, ER diagrams, and more
Key Features:
- ✅ Creates files and directories automatically if they don't exist
- ✅ XML validation with detailed error messages
- ✅ Pretty-printed output for version control
- ✅ Returns statistics (shapes, connections, file size)
Documentation: See WRITE_XML_TOOL.md for comprehensive documentation, examples, and XML structure reference. See EXAMPLES_XML_TOOL.md for practical use cases and QUICK_REFERENCE_XML.md for quick XML templates.
2. read_diagram
Read and parse an existing Draw.io diagram file.
Parameters:
file_path(string): Path to the .drawio or .xml file
Example:
Read the diagram at ~/diagrams/architecture.drawio and tell me what's in it
3. add_shape
Add a new shape to an existing diagram.
Parameters:
file_path(string): Path to the diagram fileshape_type(string): Type of shape -rectangle,ellipse,diamond,cylinder,hexagon,rounded_rectangletext(string): Text content for the shapex(number): X coordinate positiony(number): Y coordinate positionwidth(number, optional): Width of the shape (default: 120)height(number, optional): Height of the shape (default: 60)
Example:
Add a database cylinder shape labeled "User DB" at position (300, 200) to ~/diagrams/architecture.drawio
4. add_connection
Add a connection between two shapes.
Parameters:
file_path(string): Path to the diagram filefrom_shape(string): ID or text label of the source shapeto_shape(string): ID or text label of the target shapelabel(string, optional): Optional label for the connection
Example:
Connect the "API Server" shape to the "Database" shape in ~/diagrams/architecture.drawio
5. export_diagram
Get instructions for exporting a diagram to various formats.
Parameters:
file_path(string): Path to the .drawio fileoutput_path(string): Path for the exported fileformat(string): Export format -png,svg, orpdf
Example:
Export ~/diagrams/architecture.drawio to PNG format at ~/diagrams/architecture.png
Creating Diagrams
The primary way to create diagrams is using the write_diagram_xml tool. This gives you complete control over the diagram structure using Draw.io's XML format.
Quick Examples
Simple Flowchart:
<mxfile host="AI Agent" version="21.6.5" type="device">
<diagram name="Process Flow" id="flow1">
<mxGraphModel dx="2037" dy="830" grid="1" gridSize="10">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="start" value="Start" style="whiteSpace=wrap;rounded=1;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
<mxGeometry x="100" y="50" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="end" value="End" style="whiteSpace=wrap;rounded=1;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
<mxGeometry x="100" y="150" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="e1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;" edge="1" parent="1" source="start" target="end">
<mxGeometry relative="1" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
Architecture Diagram: See WRITE_XML_TOOL.md and EXAMPLES_XML_TOOL.md for comprehensive examples of flowcharts, architecture diagrams, network topologies, and more.
Diagram Types
All diagram types can be created using the write_diagram_xml tool with appropriate XML structure:
Flowcharts
Process flows with start/end nodes, process steps, and decision diamonds.
Architecture Diagrams
System architecture with servers, databases, APIs, and connections showing data flow.
Network Topologies
Network topology diagrams with routers, switches, firewalls, and devices.
ER Diagrams
Entity-relationship diagrams for database schemas showing tables and relationships.
Sequence Diagrams
Interaction diagrams showing message flows between components over time.
Custom Diagrams
Any diagram type supported by Draw.io can be created with the appropriate XML structure.
Resources:
- WRITE_XML_TOOL.md - Complete XML reference and shape styles
- EXAMPLES_XML_TOOL.md - Real-world examples and use cases
- QUICK_REFERENCE_XML.md - Quick templates and snippets
Technical Details
Architecture
- MCP Protocol: Uses the Model Context Protocol for AI-tool communication
- XML-Based: Direct XML manipulation for maximum flexibility and control
- Transport: stdio-based communication for integration with MCP clients
File Format
Generated files use the standard Draw.io XML format (.drawio), which is:
- Human-readable XML text format
- Editable in Draw.io desktop and web applications
- Version control friendly
- Compatible with all Draw.io features and libraries
- Industry-standard format
Capabilities and Limitations
What You Can Do
✅ Create any diagram type - Full control via XML
✅ Read and analyze diagrams - Parse shapes, connections, and metadata
✅ Precise positioning - Control exact coordinates and sizes
✅ Custom styling - Full access to colors, shapes, and styles
✅ Batch operations - Generate multiple diagrams programmatically
✅ Template-based creation - Reusable diagram patterns
Current Limitations
⚠️ Export functionality - Requires external Draw.io CLI or desktop app for PNG/SVG/PDF export
⚠️ Shape/Connection addition - The add_shape and add_connection tools are limited due to drawpyo constraints; use write_diagram_xml for full control
Current Limitations
⚠️ Export functionality - Requires external Draw.io CLI or desktop app for PNG/SVG/PDF export
⚠️ Shape/Connection addition - The add_shape and add_connection tools are limited due to drawpyo constraints; use write_diagram_xml for full control
Development
Project Structure
drawio-mcp/
├── src/
│ └── drawio_mcp/
│ ├── __init__.py # MCP server implementation
│ └── __main__.py # Module entry point
├── dist/ # Build artifacts
├── examples/ # Example diagrams
├── pyproject.toml # Project configuration and dependencies
├── README.md # This file
├── SETUP.md # Setup guide
└── BUILD_SUMMARY.md # Build documentation
Dependencies
mcp>=1.0.0: Model Context Protocol SDKdrawpyo>=0.2.0: Draw.io diagram creation librarypytest>=7.0.0: Testing framework (dev)pytest-asyncio>=0.21.0: Async testing support (dev)
Building
To build the package for distribution:
uv sync --all-extras
python -m build
This creates:
dist/drawio_mcp-0.0.1-py3-none-any.whl(wheel package)dist/drawio_mcp-0.0.1.tar.gz(source distribution)
Roadmap
Current (v0.0.1)
- ✅ XML-based diagram creation with full control
- ✅ Diagram reading and parsing
- ✅ Shape and connection tools (limited functionality)
- ✅ Comprehensive documentation and examples
Next Release (v0.1.0)
- Enhanced XML templates library
- Merge functionality for selective updates
- Style preset system
- Auto-layout algorithms
- XML-to-JSON conversion helpers
Future
- Direct export integration (PNG/SVG/PDF)
- Code-to-diagram generators (Python, JavaScript, Java)
- Interactive diagram editor integration
- Multi-page diagram support
- Diagram diffing for version control
Contributing
Contributions are welcome! Please feel free to submit issues or pull requests.
License
[Add your license here]
Acknowledgments
- Built with MCP Python SDK
- Diagram generation powered by drawpyo
- Based on Draw.io
Support
For issues, questions, or feature requests, please open an issue on GitHub.
Install Draw.Io Server in Claude Desktop, Claude Code & Cursor
unyly install draw-io-mcp-serverInstalls into Claude Desktop, Claude Code, Cursor & VS Code — handles npx, uvx and build-from-source repos for you.
First time? Get the CLI: curl -fsSL https://unyly.org/install | sh
Or configure manually
Run in your terminal:
claude mcp add draw-io-mcp-server -- uvx drawio-mcpFAQ
Is Draw.Io Server MCP free?
Yes, Draw.Io Server MCP is free — one-click install via Unyly at no cost.
Does Draw.Io Server need an API key?
No, Draw.Io Server runs without API keys or environment variables.
Is Draw.Io Server hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Draw.Io Server in Claude Desktop, Claude Code or Cursor?
Open Draw.Io Server on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
Fetch
Web content fetching and conversion for efficient LLM usage.
AWS KB Retrieval
Retrieval from AWS Knowledge Base using Bedrock Agent Runtime.
by modelcontextprotocolSpring AI MCP Server
Provides auto-configuration for setting up an MCP server in Spring Boot applications.
llm-analysis-assistant
A very streamlined mcp client that supports calling and monitoring stdio/sse/streamableHttp, and can also view request responses through the /logs page. It also
by xuzexin-hzCompare Draw.Io Server with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All ai MCPs
