mcp-excalidraw-server Skill 技能
给 AI 编程 Agent 一块实时 Excalidraw 画布
技能简介
mcp-excalidraw-server 是为 AI 编程 Agent 打造的 Excalidraw 实时画布工作台。它把 Excalidraw 从"一次性绘图小部件"升级为一块 Agent 可编程、可观察、可迭代的持久画布——Claude Code、Codex CLI、Cursor、OpenCode、Google Antigravity 只需一条 npx 即可接入。Agent 在画布上画出架构图、流程图、时序图,然后截图自查修正溢出/重叠/箭头错位,最后把 .excalidraw 文件提交到仓库,让"图随代码走"成为现实。完全本地运行,MIT 协议,无需 API Key。
核心能力
- 三合一驱动入口:Agent Skill + CLI + 26 个 MCP stdio 工具 + REST API,任意一层都可选用,能力外还打通"无需 MCP 的纯 CLI 流程"。
- 画布状态完全可控:每个图元都有
create_element/get_element/update_element/delete_element/duplicate_elements等细粒度工具,支持query_elements类型化查询(按 bbox、label、locked 状态过滤)。 - Agent 视觉自查回路:
describe_scene返回结构化文字摘要,get_canvas_screenshot返回渲染好的 PNG/SVG,Agent 可以"画→看→改→再看"循环修正,直到标签不溢出、连线不交叉。 - Headless 渲染(v2.1):截图与 PNG/SVG 导出不再依赖浏览器标签——Excalidraw 自己的 SVG 导出器在 Node 下跑(jsdom + resvg),未变更的场景 byte-identical 复现,CI / Docker 里直接出图。
- Mermaid 转换:粘贴 Mermaid 文本直接生成 Excalidraw 流程图,浏览器/多线程场景下与已有画布合并而非覆盖。
- 布局工具集:
align_elements/distribute_elements/group_elements/unlock_elements/lock_elements,支持左对齐/水平均布/分组等版式操作。 - 快照与回滚:
snapshot save/list/restore服务端命名快照,迭代中可随时回退。 - Obsidian Vault 集成:导出
.excalidraw.md格式,文件直接在 Obsidian Excalidraw 插件里打开,block 引用与同步双向兼容。 - MCP 2026-07-28 协议:支持现代客户端的
server/discover、per-request_meta信封、无握手调用,同时维持 2025 旧客户端完整可用。
安装配置
- CLI 一键安装:
npx -y mcp-excalidraw-server install-skill --dir由 Agent 自己选定项目/全局目录,安装可移植 skill 目录。 - Claude Code 接入:
claude mcp add excalidraw --scope user -- npx -y mcp-excalidraw-server。 - Claude Desktop 配置:在
claude_desktop_config.json的mcpServers添加npx -y mcp-excalidraw-server命令。 - Docker 启动:画布容器
docker run -d -p 3000:3000 ghcr.io/yctimlin/mcp_excalidraw-canvas:latest,MCP stdio 容器用host.docker.internal与画布互联。 - 依赖前置:Node.js ≥ 20;本地 Mermaid 转换与 viewport 操作仍需打开浏览器标签(画布默认 127.0.0.1:3000)。
使用步骤
- 首次部署画布:在项目根目录执行
npx -y mcp-excalidraw-server start,画布在127.0.0.1:3000启动(绘制命令会自动拉起,无需手动start)。 - 导出 Agent 可读化视觉总结:运行
npx -y mcp-excalidraw-server describe获取结构化文字摘要;或screenshot --out /tmp/diagram.png渲染 PNG。 - 绘制一张架构图:把 JSON 描述从 stdin 喂给
add命令(元素含id/type/x/y/width/height/text/backgroundColor与startElementId/endElementId标注连线),或通过 MCP 工具create_element一次一个。 - 自检修正:调用
describe_scene检查标签/位置,调用update_element --set '{...}'修改;query_elements --filter label.text=API精准查找。 - 导出到仓库:执行
export --out docs/architecture.excalidraw,把图作为代码资产提交进 git;下次修改完代码只需import重新迭代。 - 多 Agent 协同:同一画布允许多个 Agent 同时编辑(WebSocket 实时同步),各自跑不同 sub-graph 最后合并。
适用场景
- 架构图自动生成:让 Agent 根据代码结构、API 列表、数据库 schema 生成系统架构图、依赖关系图。
- Onboarding 文档:新成员接入项目时让 Agent 画出模块拓扑、数据管道、调用链路,配合 README 一并发布。
- 设计评审:Agent 改完代码后自动
screenshot当前架构图,附在 PR 描述里。 - 故障复盘:事故复盘时把时序图、状态机图、调用链路图全部交给 Agent 画,配合文字 root cause。
- CI 中的图同步:CI pipeline 跑
render docs/arch.excalidraw --out docs/arch.png把图渲染成 PNG 跟文档一起发版。 - Obsidian Vault 笔记:把架构图/概念图导出
.excalidraw.md写进 Vault,跨设备同步阅读。 - 多 Agent 协作设计:让 A Agent 画后端架构、C Agent 画前端状态、D Agent 汇总,三者共享同一画布。
适用人群
- 后端/全栈工程师:要交付架构设计、API 关系、数据库 ER 图,且希望图随代码 commit。
- DevOps / SRE:需要把服务依赖图、故障链路画出来作为 runbook 附件。
- AI 编程 Agent 重度用户:Claude Code / Cursor / Codex CLI 用户,想让 Agent 自动产出图表。
- 技术写作者与布道师:写技术博客 / 内部 wiki 时需要持续维护的架构图。
- 产品经理:把用户旅程图、状态机图直接拖进 PRD 附件。
- 学生 / 教学:计算机系统、数据结构、算法课程的可视化讲义。
工作原理
mcp-excalidraw-server 由两个进程组成一个产品:本地画布服务器(Node + Express + WebSocket + Excalidraw 前端,监听 127.0.0.1:3000)负责画布状态托管与 REST/WebSocket 实时同步;MCP stdio 服务器(基于 @modelcontextprotocol/sdk v2)暴露 26 个工具。两者通过内部 HTTP API 互通。MCP 客户端启动 stdio 服务器时,如果检测到画布未启动就自动 spawn 一个(可通过 EXCALIDRAW_NO_AUTOSTART=1 关闭)。v2.1 引入的 headless 渲染把 Excalidraw 自家的 exportToSvg 跑在 Node 端(jsdom 提供 DOM 仿真),再用 resvg 把 SVG 光栅化为 PNG;输出与浏览器导出像素级一致,未变更场景 byte-identical。MCP 协议支持 2026-07-28(server/discover + _meta 信封)与 2025 legacy(initialize 握手)双向兼容。
官方链接
- npm 包:https://www.npmjs.com/package/mcp-excalidraw-server
- GitHub 仓库:https://github.com/yctimlin/mcp_excalidraw
- GitHub Issues:https://github.com/yctimlin/mcp_excalidraw/issues
- Demo 视频:https://youtu.be/ufW78Amq5qA
- 作者 Twitter:https://x.com/ycalintim
- 协议:MIT License
- 当前版本:2.1.2(v2.1 Headless Rendering 系列)
评论与建议
登录 后参与评论或提建议