架构图是开发者最常被要、又最懒得画的东西:智能体能把系统讲得头头是道,产出的图却要么是聊完即弃的 ASCII 线框,要么是一张不可编辑的位图。draw.io 官方在 2026 年给出了正解:drawio-mcp(jgraph/drawio-mcp,官方 MCP Server)——让大模型直接生成 .drawio 格式的图,并在 draw.io 编辑器里打开,每个方框、每条连线都是可继续编辑的矢量元素。官方提供四条接入路线:聊天里内联渲染的托管 App Server、本地 npm 工具 Server、Claude Code 插件(可导出 PNG/SVG/PDF)、以及零安装的 Project Instructions。本篇把四条路线都走一遍,你按自己的工具链挑一条用。
先理解:一个 Server,四条路线
官方把「AI 画图」拆成了四个入口,输出形态各不相同,先看对照表再选路:
| 路线 | 输出形态 | 要装东西吗 | 适用场景 |
|---|---|---|---|
| MCP App Server | 聊天内内联交互查看器 | 不用(托管于 mcp.draw.io) | Claude.ai、Cursor 等 MCP Apps 宿主 |
| MCP Tool Server | 浏览器新标签打开 draw.io | 要(npm 包 @drawio/mcp) | Claude Desktop、Cursor 等本地工作流 |
| Claude Code 插件 | .drawio 文件,可导出 PNG/SVG/PDF | 一条命令装插件 | 本地开发工作流、要交付图片文件 |
| Project Instructions | 可点击的 draw.io 链接 | 不用(粘指令即用) | 快速验证、零环境依赖 |
四条路线共享同一份真源:官方维护的 XML 生成参考(边路由、容器、图层、标签、暗色模式等全部规则),MCP Server 启动时读入并写进工具描述,AI 生成什么风格的 XML 由它统一约束。生成结果还有一份 mxfile.xsd XML Schema 可做交付前校验——这正是官方工具链比「随手让模型吐 XML」可靠的地方。
内联渲染需要宿主支持 MCP Apps 协议。在不支持 MCP Apps 的宿主里,App Server 依然能用,但图不会内联渲染,只会以 XML 文本返回。用之前先确认你的客户端(Claude.ai、VS Code、Cursor 2.6+ 等)在支持列表里。
Step 1:零安装路线:托管 App Server 内联出图
# 托管端点(无需安装):
https://mcp.draw.io/mcp
# 在 Claude.ai:连接器目录里直接一键添加 draw.io
# 在 Cursor(2.6+):Agent 聊天里一键安装,
# 图直接内联渲染在对话中
# 两个工具:
# create_diagram 把 XML 渲染成内联交互图
# search_shapes 按关键词搜 10000+ 形状
# (AWS / Azure / GCP / UML / BPMN /
# Kubernetes / Cisco / 电气图 等图库)
这条路最适合「边聊边出图」:search_shapes 先找到正确形状(返回可直接粘进 XML 的 style 字符串),再调 create_diagram 渲染,这是官方建议的调用顺序——别让模型凭记忆编形状样式,先查再画,图才长得对。编辑时点图上的 Open in draw.io 按钮,新标签页打开完整编辑器继续精修。想数据不出门,官方仓库也支持用 Node.js 本地跑或部署自己的 Cloudflare Workers 实例。
Step 2:本地 Tool Server:npx 一条命令拉起
# 快速启动(推荐):
npx @drawio/mcp
# Claude Desktop 配置文件里加:
{
"mcpServers": {
"drawio": {
"command": "npx",
"args": ["@drawio/mcp"]
}
}
}
# Windows 配置文件在 %APPDATA%\Claude\ 下
# Claude Code 一条命令接入:
claude mcp add drawio -- npx -y @drawio/mcp
Tool Server 是最早期的官方形态,特点是支持三种输入格式:原生 XML、CSV、Mermaid。三个工具与输入一一对应:open_drawio_xml(原生 draw.io XML)、open_drawio_csv(表格转图,组织架构图神器)、open_drawio_mermaid(Mermaid 语法转可编辑 draw.io 图)。每个工具都带 lightbox(只读预览)与 dark(暗色模式)可选参数。工作原理:收到内容后用 pako 做 deflateRaw 压缩、Base64 编码,生成带 #create 哈希参数的 draw.io URL,浏览器打开即所见。
让模型明确用 draw.io 工具。官方提示 Claude Desktop 里能画图的路径不止一条,为避免它绕路用别的方式,提示词里点名工具(如「用 open_drawio_mermaid 画」),或加一条系统指令:「Always use the draw.io MCP tools to create diagrams.」
Step 3:三发提示验收:XML、CSV、Mermaid 各来一张
# Mermaid:时序图
# "Use open_drawio_mermaid to create a sequence
# diagram showing OAuth2 authentication flow"
# CSV:组织架构图
# "Use open_drawio_csv to create an org chart:
# CEO -> CTO, CFO; CTO -> 3 Engineers"
# XML:AWS 架构图
# "Use open_drawio_xml to create a detailed AWS
# architecture diagram with VPC, subnets,
# and security groups"
三条提示跑完,浏览器里各开一张可编辑的 draw.io 图,验收就过了。实际使用中 Mermaid 路线最适合「先把结构说清楚」:你用几行 Mermaid 描述流程,AI 补全细节并转成 draw.io 格式,之后的一切精修都在 draw.io 里做——AI 负责从零到八十分,你负责最后二十分,这是最省力的分工。
Step 4:Claude Code 插件:要交付 PNG/SVG/PDF 走这条
# Claude Code 里两条命令:
/plugin marketplace add jgraph/drawio-mcp
/plugin install drawio@drawio
# 默认行为:生成 .drawio 文件并在 draw.io 中打开
# 指定导出格式(png / svg / pdf):
# /drawio:drawio png
# (导出走本地 draw.io Desktop 的 CLI)
# 浏览器链接模式(无需 Desktop):
# /drawio:drawio url
# (Node.js zlib 压缩 XML 后生成
# app.diagrams.net 直达链接)
插件路线的差异点在文件交付:默认产出 .drawio 源文件(可继续编辑的持久副本);提格式就导出 .drawio.png / .svg / .pdf,且导出文件内嵌 XML、拿回 draw.io 仍可编辑。导出 PNG/SVG/PDF 依赖本机装有 draw.io Desktop(它用 Desktop 的 CLI 完成,which drawio 能找到才行);没装 Desktop 也不报错废弃——官方行为是保留 .drawio 文件、什么都不上传。插件同样适用于 Codex CLI 与 GitHub Copilot CLI(官方仓库提供了镜像插件)。
PNG/SVG/PDF 导出必须有 draw.io Desktop。只装插件不装 Desktop,导出类请求会退化成「保留 .drawio 文件」;要交付图片就提前装好 Desktop,或退而求其次用 /drawio:drawio url 拿链接自行截图。
Step 5:让图更好看:布局参数与 XML 规范
# 官方两个可选布局后处理(相互独立、不可叠加):
# ELK auto-layout(postLayout: "elk")
# 节点重新排成分层布局,边随布局重排
# App Server 的 create_diagram 支持
# libavoid routing(routing: "libavoid")
# 保持节点位置,只让连接线正交绕开形状
# App Server 与 Tool Server(v1.3.0+)支持
#
# 选型口诀:
# 全自动排版 -> ELK;手动摆好节点只整理连线 -> libavoid
# Mermaid 图自带布局,两种都不需要
AI 出图走形往往不是内容错而是布局乱,这两个官方布局参数就是治它的:ELK 适合「让 AI 全权排版」,libavoid 适合「你摆好了关键节点的位置、只嫌连线穿插」。XML 侧再记两条官方规范:AI 生成推荐用简化格式(只写 mxGraphModel 元素,省去外层包装,draw.io 打开时自动补全);不要生成压缩格式——deflate 加 Base64 的压缩表示虽然省 URL 空间,但不可读、不可校验、token 消耗反而更大,官方明确建议 AI 不要生成它。
Step 6:数据驻留与路线选型
# 官方数据驻留说明(各路线):
# 托管 App Server(mcp.draw.io)
# -> 图数据随 MCP 请求发到 draw.io 服务器
# 本地 Tool Server / Claude Code 插件
# -> 图不出本机(导出也只走本地 Desktop CLI)
# 严格数据限制环境:
# 自托管 App Server(仓库支持部署到
# Cloudflare Workers)或用本地路线
官方在数据驻留一节写得很硬核:仓库里不存在任何云端光栅化回退路径,convert.diagrams.net 不会被调用,本地依赖缺失时宁可保留文件也不偷偷上传。所以选型规则很简单:聊天内联预览选托管 App Server(介意数据出境就自托管);本地工作流与文件交付选 Tool Server 或插件;只想快速试一下选 Project Instructions(往 Claude Project 里粘官方指令,用 Python 生成 draw.io 链接,零安装)。
常见问题 FAQ
Q:生成的图可以直接交付吗?A:交付源文件用 .drawio(可编辑),交付图片用插件导出的 PNG/SVG/PDF(内嵌 XML 仍可回编辑器改),比截图专业得多。
Q:已有 Mermaid 代码能复用吗?A:能。Tool Server 的 open_drawio_mermaid 直接吃 Mermaid 语法并转成可编辑 draw.io 图(Mermaid 12 默认样式),存量 Mermaid 图零成本迁移。
Q:变量与占位符怎么用?完整格式支持文件级 vars 属性,标签里用 %name% 引用,渲染时替换;注意要对单元格开启 placeholders="1" 占位符才生效,且简化格式不支持文件级变量。
预期效果与自检清单
全部做完后,你应该达到:在 Claude.ai 或 Cursor 里发一句话,图直接内联渲染在聊天里,点 Open in draw.io 能继续编辑;本地 Tool Server 跑通 XML、CSV、Mermaid 三种输入各一张图;Claude Code 里 /drawio:drawio png 能产出内嵌 XML 的 PNG;知道哪条路线数据出本机、哪条不出,并按团队规范做出了选择。从此「画个架构图」这类需求,从半小时的拖拽劳动变成一句话的事,而产出物是全团队都能继续编辑的源文件。