使用说明
drawio mcp服务器
蟒蛇 模型上下文协议(MCP)服务器 用于生成和维护 draw.io架构图以编程方式绘制.
该项目使人工智能助手和自动化工具能够 读取、修改和生成draw.io图表 使用结构化命令,无需手动编辑XML。
长期目标是 供应商中立、网络感知的自动化层 用于基础设施架构图。
为什么这个项目存在
大型基础设施图,尤其是 网络架构图 --很快变得难以手动维护。
此MCP服务器允许图表:
- 从YAML拓扑模型以编程方式生成
- 通过自动化进行更新
- 由AI助手修改
- 类似代码的版本控制
图表被描述为数据并可重复生成,而不是手动编辑XML或在GUI中拖动形状。
YAML topology model
│
▼
AI Assistant (Claude)
│ MCP
▼
drawio-mcp-server
│
▼
.drawio diagram files
v1.6.0的新增功能
多集群容器编排支持
新 build_multi_cluster 该工具生成一个Rancher管理平面,该平面连接到N个下游Kubernetes或OpenShift集群,每个集群都有控制平面、worker和容纳工作负载链的命名空间/项目容器。
- 牧场主管理乐队
manage每个集群的链接(可选) - 每个集群平台:
k8s或openshift--OpenShift正确地省略了单独的etcd行 - 命名空间(
k8s)/项目(openshift)带有工作负载对象的容器 - 自动排序的工作负载流链:入口/路由→ 服务→ 部署/吊舱
- 通过YAML驱动
topology: multi_cluster
新验证码
E015 不良平台· E016 零控制平面节点· E017 零工作节点· E018 重复的群集名称· E019 不良工作负载类型· W009 Rancher已禁用多个集群· W010 未声明集群
v1.5.0的新增功能
多站点架构支持
新 build_multi_site 该工具在单个呼叫中生成由DCI/互连频带连接的N站点骨干叶结构。
- 每个站点可配置的脊椎计数、叶子计数和可选的计算行数
- 支持的互连类型:
evpn,vxlan,ospf,bgp,static - 每个频带可配置的DCI/路由反射器节点数
- 每个站点内的全网脊到叶布线
- 脊椎和DCI节点之间的自动跨站点上行链路布线
- 通过YAML驱动
topology: multi_site
新验证码
E011 重复站点名称· E012 不支持的互连类型· E013 零刺· E014 零叶· W007 未声明互连· W008 少于2个站点
特性
核心图操作(v1.0.0)
- 读取和写入原始draw.io XML
- 列出图表节点和边
- 添加、更新和删除节点
- 在节点之间创建连接
- 创建空白图表
- 自动布局(TB/BT/LR/RL)
网络感知原语(v1.1.0)
add_device()--添加具有语义角色的设备(脊椎、叶子、防火墙、gpunode等)add_link()--添加键入链接(结构、上行链路、管理)build_spine_leaf_fabric()--生成完整的脊椎叶拓扑
数据/YAML模型图(v1.2.0)
build_diagram_from_model()--从YAML文件构建完整的图表- 样式配置文件:
minimal,enterprise,dark,vendor-neutral - 使用结构化JSON错误报告进行完全验证
容器和扩展拓扑(v1.3.0)
add_container()--逻辑容器组(机架、区域、集群)group_nodes()--通过边界框将现有节点包装到容器中build_hub_spoke()--中心辐射拓扑(租户结构或广域网分支模式)build_security_stack()--5层安全区架构
测试套件和CI(v1.4.0)
- 234测试pytest套件,涵盖所有模块
- Python 3.11和3.12上的GitHub操作CI
- 覆盖门强制执行≥80%
多站点架构(v1.5.0)
build_multi_site()--带DCI互连带的N位脊叶结构- YAML支持
topology: multi_site - 新的验证代码E011-E014、W007-W008
多集群容器编排(v1.6.0)
build_multi_cluster()--Rancher管理平面+N个Kubernetes/OpenShift集群- 具有自动排序工作负载流链的命名空间/项目容器
- YAML支持
topology: multi_cluster - 新的验证代码E015-E019、W009-W010
快速入门:YAML→ 图表
单部位脊椎叶
meta:
name: "DC1 Fabric"
topology: spine_leaf
style_profile: minimal
sites:
- name: dc1
devices:
- hostname: spine01
role: spine
site: dc1
- hostname: leaf01
role: leaf
site: dc1
- hostname: compute01
role: compute_node
site: dc1
links:
- a: spine01
b: leaf01
type: fabric
- a: leaf01
b: compute01
type: uplink
多站点EVPN结构
meta:
name: "Multi-Site Fabric"
topology: multi_site
style_profile: minimal
sites:
- name: dc1
spines: 2
leafs: 4
compute_per_leaf: 2
- name: dc2
spines: 2
leafs: 4
interconnect:
type: evpn
dci_nodes: 2
生成任一图表:
build_diagram_from_model(
path="diagrams/fabric.drawio",
yaml_path="examples/multi_site.yaml"
)
所有MCP工具--v1.6.0(20个工具)
高层建筑商
| 工具 | 说明 |
|---|---|
build_multi_cluster |
Rancher+多集群K8s/OpenShift编排 |
build_multi_site |
带EVPN/DCI互连的多站点脊叶 |
build_spine_leaf_fabric |
单部位脊叶织物 |
build_hub_spoke |
中心辐射(租户结构或广域网分支模式) |
build_security_stack |
5层安全区架构 |
build_diagram_from_model |
从YAML拓扑模型文件构建 |
节点和链接图元
| 工具 | 说明 |
|---|---|
add_device |
添加具有角色/供应商/站点的键入网络设备 |
add_node |
添加通用形状 |
add_edge |
添加定向连接器 |
add_link |
添加类型化的网络链路(结构/上行链路/管理) |
add_container |
添加带标签的容器/泳道组 |
update_node |
修改标签、样式或几何图形 |
delete_node |
删除节点及其连接边 |
图表管理
| 工具 | 说明 |
|---|---|
create_blank_diagram |
创建新的空白.drawio文件 |
read_diagram |
读取原始XML内容 |
write_diagram |
写入/覆盖图表XML |
list_diagrams |
在文件夹中列出.drawio文件 |
list_nodes |
列出所有具有ID的节点和边 |
auto_layout |
自动排列(TB/BT/LR/RL) |
group_nodes |
通过bbox将节点包装到容器中 |
支持的设备角色
| 角色 | 层 | 描述 |
|---|---|---|
spine |
0 | 骨干/核心交换机 |
core_switch |
0 | 核心层交换机 |
router |
0 | 路由器 |
wan_router |
0 | 广域网/边缘路由器 |
internet |
−1 | 互联网网关 |
firewall |
0 | 防火墙 |
load_balancer |
1 | 负载均衡器 |
border_leaf |
1 | 边界叶子开关 |
branch_router |
1 | WAN分支路由器 |
leaf |
2 | ToR/叶片开关 |
application_server |
3 | 应用程序/web服务器 |
gpu_node |
3 | GPU计算节点 |
compute_node |
3 | 一般计算 |
storage_node |
3 | 存储节点 |
database_node |
4 | 数据库/持久性 |
management_switch |
侧边栏 | 带外管理 |
monitoring_node |
侧边栏 | 监控/可观察性 |
rancher_server |
−2 | 牧场主管理平面 |
k8s_master |
0 | Kubernetes控制平面 |
k8s_etcd |
0 | Kubernetes etcd节点 |
openshift_master |
0 | OpenShift控制平面 |
openshift_infra_node |
1 | OpenShift基础节点 |
ingress_controller |
1 | 入口控制器 |
k8s_worker |
2 | Kubernetes工作节点 |
openshift_worker |
2 | OpenShift工作节点 |
container_registry |
侧边栏 | 容器映像注册表 |
支持的链接类型
| 类型 | 样式 |
|---|---|
fabric |
实心,行程宽度=2 |
uplink |
实心,行程宽度=1 |
management |
灰色 |
wan |
虚线、灰色、笔划宽度=2 |
default |
普通连接器 |
样式配置文件
| 简介 | 描述 |
|---|---|
minimal |
纯彩色编码矩形(默认) |
enterprise |
思科风格钢网形状 |
dark |
黑暗主题 |
vendor-neutral |
draw.io内置网络形状 |
验证码
| 代码 | 类型 | 描述 |
|---|---|---|
| E001 | 错误 | 未知设备角色 |
| E002 | 错误 | 设备主机名重复 |
| E003 | 错误 | 设备主机名为空 |
| E004 | 错误 | 链接端点引用未知主机名 |
| E005 | 错误 | 链接端点为空 |
| E006 | 错误 | 不支持的拓扑类型 |
| E007 | 错误 | 不支持的样式配置文件 |
| E008 | 错误 | 设备引用未声明的站点 |
| E009 | 错误 | 不支持轮毂_辐条模式 |
| E010 | 错误 | 容器成员引用未知主机名 |
| E011 | 错误 | 重复的站点名称(multi_site) |
| E012 | 错误 | 不支持的互连类型(多站点) |
| E013 | 错误 | 站点声明零刺(multi_Site) |
| E014 | 错误 | 站点声明零叶子(多站点) |
| E015 | 错误 | 不支持的群集平台(multi_cluster) |
| E016 | 错误 | 集群没有控制平面节点(多集群) |
| E017 | 错误 | 群集没有工作节点(multi_Cluster) |
| E018 | 错误 | 重复的群集名称(multi_cluster) |
| E019 | 错误 | 不支持的工作负载类型(multi_cluster) |
| W001 | 警告 | 拓扑未声明--默认 |
| W002 | 警告 | 未声明网站 |
| W003 | 警告 | 未声明设备 |
| W004 | 警告 | 未声明链接 |
| W005 | 警告 | 设备未分配站点 |
| W006 | 警告 | 未声明hub_spoke拓扑_mode |
| W007 | 警告 | 未声明互连类型(multi_site) |
| W008 | 警告 | 声明的站点少于2个(multi_site) |
| W009 | 警告 | Rancher已禁用多个集群(multi_cluster) |
| W010 | 警告 | 未声明群集(multi_cluster) |
安装
git clone https://github.com/Eswarthemad/drawio-mcp-server.git
cd drawio-mcp-server
python -m venv venv
# Windows
venv\Scripts\activate
# Linux / macOS
source venv/bin/activate
pip install -r requirements.txt
开发(测试+梳理):
pip install -r requirements-dev.txt
pytest tests/ -v
Claude桌面配置
增添 claude_desktop_config.json:
{
"mcpServers": {
"drawio-mcp": {
"command": "C:\\path\\to\\drawio-mcp-server\\venv\\Scripts\\python.exe",
"args": ["C:\\path\\to\\drawio-mcp-server\\server.py"]
}
}
}
保存后重新启动Claude Desktop。
项目结构
drawio-mcp-server/
├── server.py MCP tool registration (20 tools)
├── drawio.py XML engine and topology builders
├── models.py YAML topology model dataclasses
├── styles.py Style profile resolver
├── validators.py Model validation (E001–E019, W001–W010)
├── requirements.txt Runtime dependencies
├── requirements-dev.txt Dev dependencies (pytest, ruff)
├── examples/
│ ├── spine_leaf.yaml
│ ├── multi_site.yaml
│ └── multi_cluster.yaml
└── tests/
├── test_drawio.py
├── test_models.py
├── test_styles.py
├── test_validators.py
├── test_multisite.py
└── test_multicluster.py
版本历史记录
| 版本 | 亮点 |
|---|---|
| v1.0.0 | 10个核心工具——读/写/列表/添加/删除/布局 |
| v1.1.0 | 网络感知原语,脊椎叶构建器 |
| v1.2.0 | YAML拓扑模型、样式配置文件、验证 |
| v1.3.0 | 容器、轮毂、安全堆栈 |
| v1.4.0 | 234测试套件,GitHub Actions CI,覆盖门 |
| v1.5.0 | 多站点EVPN/DCI构建器,E011-E014,W007-W008 |
| v1.6.0 | 多集群牧场主/K8s/OpenShift,E015-E019,W009-W010 |
路线图
- 支持多页图表(逻辑/物理/流量视图)
- VDOM架构构建器
- 其他拓扑示例
- CI覆盖门提高以匹配新的测试计数
贡献
看 贡献.md.
许可证
根据MIT许可证发布。