绘图程序化服务

Draw.io MCP Server 是一个通过自然语言交互程序化创建、读取和管理 Draw.io 图表的服务,适用于技术文档编写者、软件开发者和需要快速生成架构图、流程图和网络图的用户。

  • by rf-santos
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 rf-santos/drawio-mcp

使用说明

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_rectangle
  • text (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结构创建。

资源:

技术细节

建筑

  • 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:模型上下文协议SDK
  • drawpyo>=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)
  • []交互式图表编辑器集成
  • []支持多页图表
  • []版本控制差异图

贡献

欢迎投稿!请随时提交问题或拉取请求。

许可证

[在此处添加您的许可证]

致谢

支持

对于问题、疑问或功能请求,请在GitHub上打开问题。