让我们使用最广泛使用的绘图工具 Draw.io (Diagrams.net) 来进行一些图表绘制。
Draw.io MCP 服务器是一个 模型上下文协议 (MCP) 的实现,它为人工智能代理系统带来了强大的绘图能力。这种集成使以下功能成为可能:
作为符合 MCP 标准的工具,它遵循工具集成的标准协议,使其兼容任何 MCP 客户端。此实现特别适用于需要创建 AI 系统的情况,例如:
该工具支持双向通信,允许对 Draw.io 实例进行控制,并提取图表信息供您 MCP 生态系统中的 AI 代理进一步处理。
要使用 Draw.io MCP 服务器,您需要:
--inspect 标志进行调试时注意:Draw.io 桌面应用或网络版必须可以访问运行 MCP 服务器的系统。
打开或创建配置文件:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json更新以包括此服务器:
{
"mcpServers":{
"drawio":{
"command":"npx",
"args":[
"-y",
"drawio-mcp-server"
]
}
}
}
</details>
<details>
<summary>使用 <code>pnpm</code></summary>
{
"mcpServers":{
"drawio":{
"command":"pnpm",
"args":[
"dlx",
"drawio-mcp-server"
]
}
}
}
</details>
这是一个备选的 MCP 客户端,如果您喜欢终端并且计划连接到自己的 Ollama 实例。
配置通常位于:~/.local/share/oterm/config.json
<details> <summary>使用 <code>npm</code></summary>{
"mcpServers": {
"drawio": {
"command": "npx",
"args": [
"-y",
"drawio-mcp-server"
]
}
}
}
</details>
<details>
<summary>使用 <code>pnpm</code></summary>
{
"mcpServers": {
"drawio": {
"command": "pnpm",
"args": [
"dlx",
"drawio-mcp-server"
]
}
}
}
</details>
{
/// 您的 MCP 服务器名称
"drawio": {
"command": {
/// 可执行文件的路径
"path": "npx",
/// 传递给可执行文件的参数
"args": ["-y","drawio-mcp-server"],
/// 为可执行文件设置的环境变量
"env": {}
}
}
}
</details>
<details>
<summary>使用 <code>pnpm</code></summary>
{
/// 您的 MCP 服务器名称
"drawio": {
"command": {
/// 可执行文件的路径
"path": "pnpm",
/// 传递给可执行文件的参数
"args": ["dlx","drawio-mcp-server"],
/// 为可执行文件设置的环境变量
"env": {}
}
}
}
</details>
为了控制 Draw.io 图表,您需要安装专用的浏览器扩展。
<p> <a href="https://chrome.google.com/webstore/detail/drawio-mcp-extension/okdbbjbbccdhhfaefmcmekalmmdjjide"> <picture> <source srcset="https://i.imgur.com/XBIE9pk.png" media="(prefers-color-scheme: dark)" /> <img height="58" src="https://i.imgur.com/oGxig2F.png" alt="Chrome Web Store" /></picture ></a> <a href="https://addons.mozilla.org/en-US/firefox/addon/drawio-mcp-extension/"> <picture> <source srcset="https://i.imgur.com/ZluoP7T.png" media="(prefers-color-scheme: dark)" /> <img height="58" src="https://i.imgur.com/4PobQqE.png" alt="Firefox add-ons" /></picture ></a> </p> 3. 确保已连接,扩展图标应显示绿色信号覆盖 <img alt="扩展已连接" src="https://gips3.baidu.com/it/u=3369408072,809193503&fm=3081&app=3081&f=PNG?w=32&h=32" />如果您喜欢这个项目或发现它有用,请考虑支持其持续开发。
闪电发票:

lnbc1p5f8wvnpp5kk0qt60waplesw3sjxu7tcqwmdp6ysq570dc4ln52krd3u5nzq6sdp82pshjgr5dusyymrfde4jq4mpd3kx2apq24ek2uscqzpuxqr8pqsp5gvr72xcs883qt4hea6v3u7803stcwfnk5c9w0ykqr9a40qqwnpys9qxpqysgqfzlhm0cz5vqy7wqt7rwpmkacukrk59k89ltd5n642wzru2jn88tyd78gr4y3j6u64k2u4sd4qgavlsnccl986velrg3x0pe95sx7p4sqtatttp
闪电地址:
ladislav@blink.sv
<div align="center">
<a href="https://liberapay.com/ladislav/donate"><img alt="使用 Liberapay 捐赠" src="https://liberapay.com/assets/widgets/donate.svg"></a>
</div>
Draw.io MCP 服务器提供了以下工具,用于程序化地交互图表:
get-selected-cell
获取 Draw.io 中当前选中的单元格及其所有属性
返回值:包含单元格属性(ID、几何形状、样式、值等)的 JSON 对象
get-shape-categories
从图表库中获取可用的形状类别
返回值:包含类别对象及其 ID 和名称的数组
get-shapes-in-category
从图表库中获取指定类别的所有形状
参数:
category_id:要检索形状的类别的标识符
返回值:包含形状对象及其属性和样式的数组get-shape-by-name
通过名称从所有可用形状中检索特定形状
参数:
shape_name:要检索的形状的名称
返回值:包含类别和样式信息的形状对象list-paged-model
获取当前 Draw.io 图表中所有单元格(顶点和边)的分页视图。此工具提供对完整模型数据的访问,仅包含关键字段,经过清理以移除循环依赖和冗余数据。它允许基于多个标准和属性布尔逻辑进行过滤。对于程序化地检查图表结构而不产生过大的响应大小非常有用。
add-rectangle
在活动的 Draw.io 页面上创建一个新的矩形形状,具有可定制的属性:
x,y 坐标)width,height)add-edge
创建两个单元格(顶点)之间的连接
参数:
source_id:源单元格的 IDtarget_id:目标单元格的 IDtext:边缘的可选文本标签style:边缘的可选样式属性delete-cell-by-id
通过 ID 从图表中删除指定的单元格
参数:
cell_id:要删除的单元格的 IDadd-cell-of-shape
从图表库中添加一个特定形状类型的新的单元格
参数:
shape_name:要创建的形状的名称x,y:位置坐标(可选)width,height:尺寸(可选)text:可选文本内容style:可选附加样式属性set-cell-shape
将库形状的样式应用于现有单元格
参数:
cell_id:要更改外观的单元格的 IDshape_name:要应用其样式的库形状的名称set-cell-data
存储或更新单元格上的自定义属性
参数:
cell_id:要更新的单元格的 IDkey:要设置的属性名称value:属性值(内部存储为字符串)edit-cell
通过 ID 更新现有的顶点/形状单元格
参数:
cell_id:要更改属性的单元格的 ID(必需)text,x,y,width,height,style:要更新在单元格上的可选字段;未提及的属性保持不变edit-edge
通过 ID 更新现有单元格之间的边缘连接
参数:
cell_id:要更新的边缘单元格的 ID(必需)text:边缘标签文本(可选)source_id,target_id:新源/目标单元格的可选 IDstyle:替换样式字符串(可选)