yctimlin/mcp_excalidraw

MCP server and Claude Code skill for Excalidraw — programmatic canvas toolkit to create, edit, and export diagrams via AI agents with real-time canvas sync.

这个项目是做什么的

mcp-excalidraw-server 将本地 Excalidraw 画布转变为一个可编程的工作台,供 AI 编码代理(Claude Code、Cursor、Codex 等)操作。画布完全在本地运行(Node ≥ 20,无需 API 密钥),可通过以下三种方式访问:

  1. CLInpx -y mcp-excalidraw-server <command> – 一组基于 JSON 的命令,可自动启动画布、添加/更新/删除元素、截取屏幕截图、导出文件等。
  2. MCP 服务器 – 一个暴露 26 个工具的 Model Context Protocol (MCP) stdio 服务器,任何兼容 MCP 的客户端都可以直接调用绘图操作。
  3. REST API – 面向 LangChain 等框架的普通 HTTP/WebSocket 端点。

最终结果是一个实时、可编辑的图表,代理可以(通过 describe 或截图)检查它,逐元素进行修改,最后将其导出为 .excalidraw 文件,该文件可以放在源代码旁边或 Obsidian 库中。


适合谁使用

  • 编码助手 – 需要在开发工作流中生成架构图、流程图或 UI 线框图的工具。
  • 团队 – 希望将图表文件与代码一起进行版本控制的团队(例如,将 .excalidraw 文件提交到 Git)。
  • Obsidian 用户 – 希望将图表保存在库中并保持完全可编辑性的用户。
  • 构建自定义 AI 代理工具链的人 – 构建可以调用 MCP 工具或 REST API 的工具链的开发者。

主要功能(摘自 README)

功能 说明
本地画布服务器 http://127.0.0.1:3000 上运行 Excalidraw Web UI,并提供实时 WebSocket 同步。无需外部服务。
CLI 优先设计 所有功能都作为可组合的命令(addapplyqueryscreenshotexportmermaidsnapshotarrangeshare 等)公开。JSON 输出到标准输出,退出代码表示成功/失败。
MCP 集成 实现 MCP 协议修订版 2026-07-28。26 个工具让任何 MCP 客户端(Claude Desktop、Cursor、Codex CLI、Antigravity 等)都能通过 stdio 操作画布。
REST API 面向 LangChain 和自定义脚本的简单 HTTP 端点。
元素级 CRUD 可以创建、读取、更新、删除单个形状、箭头、文本、组、锁等。
迭代优化 代理可以 describe 场景、拍摄 screenshot、调整布局,并重复直到图表完成。
导出 / 导入 导出为原生 .excalidraw JSON 或 Obsidian 兼容的 .excalidraw.md。支持导入两种格式,包括压缩文件。
确定性导出 ID、种子和键的顺序是稳定的,因此未更改的图表会生成相同的文件,不会产生杂乱的 Git 差异。
Mermaid 转换 粘贴 Mermaid 语法,生成的图表会合并到现有画布中。
视口控制 缩放、平移或适配所选元素的命令。
分享 可选地将加密上传到 excalidraw.com 以生成可分享的 URL。
Docker 镜像 用于轻松部署的预构建容器(ghcr.io/yctimlin/mcp_excalidraw)。
代理技能包 一个可移植的技能(skills/excalidraw-skill/),可通过单个 install-skill 命令安装到代理的技能目录中。
零设置自动启动 CLI 命令和 MCP 服务器会在画布未运行时自动启动(可通过 EXCALIDRAW_NO_AUTOSTART=1 禁用)。

快速开始

# 安装并启动画布(在第一个绘图命令时自动启动)
npx -y mcp-excalidraw-server start
open http://127.0.0.1:3000   # 可选 – 截图/Mermaid 需要

# 添加两个框和一个箭头(通过标准输入传递 JSON)
echo '[
  {"id":"api","type":"rectangle","x":100,"y":100,"width":160,"height":80,"text":"API Server","backgroundColor":"#a5d8ff"},
  {"id":"db","type":"rectangle","x":400,"y":100,"width":160,"height":80,"text":"Database","backgroundColor":"#99e9f2"},
  {"type":"arrow","startElementId":"api","endElementId":"db","text":"SQL"}
]' | npx -y mcp-excalidraw-server add

# 让代理查看图表
npx -y mcp-excalidraw-server describe
npx -y mcp-excalidraw-server screenshot --out diagram.png

# 为版本控制导出
npx -y mcp-excalidraw-server export --out docs/architecture.excalidraw

相同的命令也可以从兼容 MCP 的客户端或通过 HTTP 调用。


已知限制 / 未解决问题(摘自 README)

  • 服务器默认仅绑定到 127.0.0.1。要对外暴露,用户需要自行配置防火墙或反向代理 – 没有内置身份验证
  • 某些操作(例如 screenshotmermaid 转换)依赖客户端的 Excalidraw UI,因此需要打开浏览器标签页。
  • README 中有几个“已知问题 / TODO”部分,但没有列出具体错误;请查看问题跟踪器以获取最新状态。

维护者

该仓库由 yctimlin 所有,并以 mcp-excalidraw-server 发布在 npm 上(MIT 许可证)。持续集成会在每次推送时运行测试并构建 Docker 镜像。


TL;DR

mcp-excalidraw-server 为 AI 编码代理提供了一个真正可编辑的绘图表面,可以通过编程方式控制。它通过简单的 CLI、MCP stdio 服务器或 REST API 工作,并将图表存储为版本控制的 .excalidraw 文件 – 在 LLM 生成的架构想法和具体、可编辑的图表之间架起了一座实用的桥梁。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目