使用说明
Draw.io MCP服务器
一个模型上下文协议(MCP)服务器,使AI助手能够通过自然语言交互以编程方式创建、读取和管理Draw.io图表。
概述
Draw.io MCP服务器弥合了对话式人工智能和可视化文档之间的差距,允许用户生成专业质量的图表,而无需手动绘制。非常适合技术作家、软件开发人员以及需要快速创建架构图、流程图和网络图的任何人。
特性
- 写入XML:使用有效的Draw.io XML创建或更新图表,以完全控制图表结构
- 阅读图表:解析和分析具有详细形状和连接信息的现有Draw.io文件
- 添加形状:在图表中插入新形状(矩形、椭圆形、菱形、圆柱体、六边形)
- 添加连接:在图表元素之间创建边
- 出口支持:导出为PNG、SVG和PDF格式的说明
安装
先决条件
- Python 3.12或更高版本
- uv(推荐)或pip
设置
选项1:从PyPI安装(即将推出)
pip install drawio-mcp
选项2:从源代码安装
git clone <repository-url>
cd drawio-mcp
uv sync --all-extras
选项3:在本地构建和安装
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
用法
运行服务器
服务器通过stdio(标准输入/输出)进行通信:
# If installed as package
drawio-mcp
# Or run as module
python -m drawio_mcp
# Or run from source
python src/drawio_mcp/__init__.py
使用Claude Desktop进行配置
添加到您的Claude Desktop配置(~/Library/Application Support/Claude/claude_desktop_config.json 在macOS上):
{
"mcpServers": {
"drawio": {
"command": "drawio-mcp",
"args": [],
"env": {}
}
}
}
或者,如果从源代码运行:
{
"mcpServers": {
"drawio": {
"command": "/absolute/path/to/drawio-mcp/.venv/bin/python",
"args": ["-m", "drawio_mcp"],
"env": {}
}
}
}
可用工具
1. write_diagram_xml ⭐ 主要工具
使用有效的Draw.io XML内容编写或更新Draw.io图表文件。这提供了对图表结构的完全控制,是创建图表的推荐方法。
参数:
file_path(string):应保存或更新.drawio文件的路径(如果不存在,则创建文件和目录)xml_content(string):有效的Draw.io XML内容(必须包含完整的mx文件结构)validate(布尔值,可选):是否在写入前验证XML(默认值:true)
例子:
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>
使用案例:
- 通过代码分析以编程方式生成复杂的图表
- 将其他图表格式(Mermaid、PlantUML等)转换为Draw.io
- 从数据源创建批处理流程图
- 创建具有精确样式的自定义图表模板
- 构建流程图、架构图、网络拓扑、ER图等
主要特点:
- ✅ 如果文件和目录不存在,则自动创建它们
- ✅ 带有详细错误消息的XML验证
- ✅ 用于版本控制的漂亮打印输出
- ✅ 返回统计信息(形状、连接、文件大小)
文档: 看 WRITE_XML_TOOL.md 获取全面的文档、示例和XML结构参考。看 示例_XML_TOOL.md 用于实际用例和 快速引用_XML.md 用于快速XML模板。
2. read_diagram
读取并解析现有的Draw.io图表文件。
参数:
file_path(string):.drawio或.xml文件的路径
例子:
Read the diagram at ~/diagrams/architecture.drawio and tell me what's in it
3. add_shape
将新形状添加到现有图表中。
参数:
file_path(string):图表文件的路径shape_type(字符串):形状类型-rectangle,ellipse,diamond,cylinder,hexagon,rounded_rectangletext(string):形状的文本内容x(数字):X坐标位置y(编号):Y坐标位置width(数字,可选):形状的宽度(默认值:120)height(数字,可选):形状的高度(默认值:60)
例子:
Add a database cylinder shape labeled "User DB" at position (300, 200) to ~/diagrams/architecture.drawio
4. add_connection
在两个形状之间添加连接。
参数:
file_path(string):图表文件的路径from_shape(string):源形状的ID或文本标签to_shape(string):目标形状的ID或文本标签label(string,可选):连接的可选标签
例子:
Connect the "API Server" shape to the "Database" shape in ~/diagrams/architecture.drawio
5. export_diagram
获取将图表导出为各种格式的说明。
参数:
file_path(string):.drawio文件的路径output_path(string):导出文件的路径format(string):导出格式-png,svg,或pdf
例子:
Export ~/diagrams/architecture.drawio to PNG format at ~/diagrams/architecture.png
创建图表
创建图表的主要方法是使用 write_diagram_xml 工具。这使您可以使用Draw.io的XML格式完全控制图表结构。
快速示例
简单流程图:
<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>
架构图: 看 WRITE_XML_TOOL.md 和 示例_XML_TOOL.md 获取流程图、架构图、网络拓扑等的综合示例。
图表类型
所有图表类型都可以使用创建 write_diagram_xml 具有适当XML结构的工具:
流程图
带有开始/结束节点、流程步骤和决策菱形的流程。
架构图
系统架构,包括服务器、数据库、API和显示数据流的连接。
网络拓扑
带有路由器、交换机、防火墙和设备的网络拓扑图。
ER图
显示表和关系的数据库模式的实体关系图。
顺序图
显示组件之间随时间变化的消息流的交互图。
自定义图表
Draw.io支持的任何图表类型都可以使用适当的XML结构创建。
资源:
- WRITE_XML_TOOL.md -完整的XML参考和形状样式
- 示例_XML_TOOL.md -真实世界的示例和用例
- 快速引用_XML.md -快速模板和片段
技术细节
建筑
- MCP协议:使用模型上下文协议进行AI工具通信
- 基于XML:直接XML操作,实现最大的灵活性和控制
- 运输:基于stdio的通信,用于与MCP客户端集成
文件格式
生成的文件使用标准的Draw.io XML格式(.drawio),即:
- 人类可读的XML文本格式
- 可在Draw.io桌面和web应用程序中编辑
- 版本控制友好
- 与Draw.io的所有功能和库兼容
- 行业标准格式
能力和局限性
你能做什么
✅ 创建任何图表类型 -通过XML实现完全控制
✅ 阅读并分析图表 -解析形状、连接和元数据
✅ 精确定位 -控制精确的坐标和大小
✅ 自定义样式 -完全访问颜色、形状和样式
✅ 批量操作 -以编程方式生成多个图表
✅ 基于模板的创建 -可重用的图表模式
当前限制
⚠️ 导出功能 -需要外部Draw.io CLI或桌面应用程序才能导出PNG/SVG/PDF
⚠️ 形状/连接添加 -The add_shape 和 add_connection 由于drawpyo约束,工具有限;使用 write_diagram_xml 完全控制
当前限制
⚠️ 导出功能 -需要外部Draw.io CLI或桌面应用程序才能导出PNG/SVG/PDF
⚠️ 形状/连接添加 -The add_shape 和 add_connection 由于drawpyo约束,工具有限;使用 write_diagram_xml 完全控制
发展
项目结构
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
依赖项
mcp>=1.0.0:模型上下文协议SDKdrawpyo>=0.2.0:Draw.io图表创建库pytest>=7.0.0:测试框架(开发)pytest-asyncio>=0.21.0:异步测试支持(dev)
建筑
要构建分发包,请执行以下操作:
uv sync --all-extras
python -m build
这将创建:
dist/drawio_mcp-0.0.1-py3-none-any.whl(车轮组件)dist/drawio_mcp-0.0.1.tar.gz(来源分布)
路线图
电流(v0.0.1)
- ✅ 基于XML的图表创建,具有完全控制功能
- ✅ 图表读取和解析
- ✅ 形状和连接工具(功能有限)
- ✅ 全面的文档和示例
下一版本(v0.1.0)
- []增强的XML模板库
- []用于选择性更新的合并功能
- []风格预设系统
- []自动布局算法
- []XML到JSON转换帮助程序
未来
- []直接导出集成(PNG/SVG/PDF)
- []代码到图表生成器(Python、JavaScript、Java)
- []交互式图表编辑器集成
- []支持多页图表
- []版本控制差异图
贡献
欢迎投稿!请随时提交问题或拉取请求。
许可证
[在此处添加您的许可证]
致谢
- 内置 MCP Python SDK
- 图表生成由 drawpyo
- 基于 Draw.io
支持
对于问题、疑问或功能请求,请在GitHub上打开问题。
