d2 mcp
MCP服务器 D2图表语言从任何兼容MCP的AI助手编译、验证和探索D2图。
使用原生D2 CLI二进制文件(自动安装在Docker映像中)将图表编译为SVG和PNG。
工具
| 工具 | 说明 |
|---|---|
compile | D2源代码→ SVG/PNG格式。支持布局引擎、主题、草图模式、深色主题、多板定位等。 |
validate | 在不呈现的情况下检查D2语法。返回有效性状态和错误详细信息。 |
list_themes | 列出所有可用的D2主题及其ID(亮和暗)。 |
list_layouts | 列出可用的布局引擎(dagre, elk). |
list_icons | 按类别(AWS、GCP、Azure、K8s、开发、必需品、技术)浏览icons.terrastruct.com上的图标。 |
资源
| 资源 | 描述 |
|---|---|
d2://syntax-reference | 在markdown中完成D2语言语法参考。 |
本地开发
先决条件
- Node.js 22+
- D2 CLI --从安装 d2lang.com 或设置
D2_PATHenv-var到二进制位置。 - 图标(可选) --奔跑
scripts/download-icons.sh ./icons然后设置ICONS_DIR=./icons以启用本地图标分辨率。如果没有此功能,图标URL将按原样传递到D2 CLI。
npm install
npm run build
npm start对于自动重新加载的开发:
npm run dev默认情况下,服务器在端口3000上启动(用覆盖 PORT 有人)。
- 健康检查:
GET /health - MCP端点:
POST /mcp(流式HTTP传输)
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
PORT | 3000 | HTTP服务器端口 |
D2_PATH | d2 | D2 CLI二进制文件的路径(通过解析 PATH 默认情况下) |
ICONS_DIR | ./icons | 包含下载的本地分辨率SVG图标的目录 |
部署(渲染)
该项目包括 Dockerfile 和 render.yaml 一键部署蓝图 渲染Docker镜像会自动安装D2 CLI二进制文件,并在构建时下载所有图标。
- 将此仓库推送到GitHub
- 在“渲染”中,创建新的 蓝图 并连接您的仓库
- 渲染将自动检测
render.yaml并部署
或者手动创建 网络服务 与:
- 环境: 码头工人
- 健康检查路径:
/health - 计划: 自由
连接到MCP服务器
部署后,将MCP客户端配置为通过Streamable HTTP连接:
{
"mcpServers": {
"d2": {
"url": "https://your-service.onrender.com/mcp"
}
}
}将URL替换为实际的渲染服务URL(或 http://localhost:3000/mcp 当地)。
编译工具选项
| 参数 | 类型 | 说明 | |
|---|---|---|---|
code | string | D2源代码(必填) | |
layout | "dagre" | "elk" | 布局引擎(默认:dagre) |
sketch | boolean | 手绘草图模式 | |
themeID | integer | 主题ID(请参见 list_themes) | |
darkThemeID | integer | 暗模式主题ID | |
pad | integer | 像素填充(默认值:100) | |
center | boolean | 将SVG居中显示在视图框中 | |
scale | number | 比例因子(默认值:适合屏幕) | |
target | string | 多板图的目标板 | |
animateInterval | integer | 多板SVG的动画间隔(ms) | |
noXMLTag | boolean | 省略HTML嵌入的XML声明 |
许可证
麻省理工学院
