绘图自动化服务器

一个用于通过程序生成和维护draw.io架构图的Python模型上下文协议(MCP)服务器,适用于AI助手和自动化工具读取、修改和生成图表。

  • by Eswarthemad
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Eswarthemad/drawio-mcp-server

使用说明

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许可证发布。