mcpField
E
excalidraw

excalidraw

本地服务
github.com/debu-sinha媒体与设计438 周前更新

关于 excalidraw

excalidraw 是一个 MCP 服务,可让 AI 客户端创建和编辑 Excalidraw 图表,支持内嵌渲染和可选的实时画布同步。它将图表工具与身份验证、输入校验和请求限流结合起来。

主要功能

  1. 01创建和编辑图表元素
  2. 02将 Mermaid 图表转换为 Excalidraw
  3. 03以内嵌动画 SVG 渲染图表
  4. 04将画布导出为 SVG 或 PNG
  5. 05通过画布服务器同步客户端
  6. 06验证身份并限制请求频率

适用场景

  1. 01根据聊天内容创建架构图
  2. 02编辑并排列画布元素
  3. 03在共享实时画布上协作
  4. 04导出图表以供其他用途

MCP 相关

该服务向 MCP 客户端提供图表创建、编辑、查询、分组、导出和资源工具。它支持 stdio,也可连接可选的画布服务器进行实时同步。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"debu-sinha-excalidraw": {
"command": "npx",
"args": [
"-y",
"excalidraw-mcp-server"
]
}
}
}
启动命令npx -y excalidraw-mcp-server

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmexcalidraw-mcp-server1.0.2

工具

14

收录的工具列表 · 更新于 2 周前

参数类型必填说明
xnumber是
yany是
textstring否
typeenum是rectangle | ellipse | diamond | arrow | text | line | freedraw
anglenumber否
widthnumber否
heightany否
lockedboolean否
pointsarray否
opacitynumber否
fontSizenumber否
groupIdsarray否
roughnessnumber否
fontFamilyinteger否
strokeColorany否
strokeWidthnumber否
backgroundColorstring否

详细介绍

excalidraw-mcp-server

唯一一款具备安全加固、内嵌图表渲染和实时画布同步功能的 Excalidraw MCP 服务。

CI npm npm downloads License: MIT Node

演示:通过 WebSocket 同步实时逐个绘制架构图元素

功能介绍

让 AI 绘制图表,图表就会直接出现在聊天窗口中。此 MCP 服务为 Claude Desktop、ChatGPT、VS Code 和 Cursor 提供一整套基于 Excalidraw 格式的绘图工具,并对每项操作进行 API 身份验证、速率限制和输入验证。

v2.0 新增 MCP Apps 支持:图表以交互式 SVG 小组件的形式内嵌流式呈现,并带有绘制动画;你还可以一键将任意图表导出到 excalidraw.com。

两种模式,零配置

独立模式(默认)——安装后即可使用。服务通过进程内元素存储运行。无需画布服务、API 密钥或其他设置。MCP 客户端调用工具,图表便会内嵌渲染。

连接模式——启动可选的画布服务,实现浏览器实时同步。多个客户端可通过经过身份验证的 WebSocket 连接在同一画布上协作。文件持久化可在重启后保留状态。

服务会自动检测要使用的模式:如果能连接到画布服务,就会连接;否则会回退到独立模式。

架构

架构:MCP 客户端通过 stdio 连接到服务;服务可以在独立模式下使用进程内存储和内嵌小组件,也可以在连接模式下使用画布服务、WebSocket 浏览器前端和文件持久化

此图使用 excalidraw-mcp-server 创建——在 Excalidraw 中编辑

功能特性

MCP Apps(v2.0)

  • 在 Claude Desktop、ChatGPT 和 VS Code 中内嵌渲染图表
  • 随元素到达而流式生成 SVG,并播放绘制动画
  • 一键导出到 excalidraw.com
  • 通过 read_me 工具查看元素参考速查表

16 个 MCP 工具

  • 创建、更新、删除和查询元素(矩形、椭圆、菱形、箭头、文本、直线、自由绘制)
  • 一次最多批量创建 100 个元素
  • 分组、取消分组、对齐、分布、锁定、解锁
  • Mermaid 图表转换
  • SVG 和 PNG 导出

安全性

  • 使用恒定时间比较进行 API 密钥身份验证
  • 限制来源的 CORS(不使用通配符)
  • 通过令牌和来源验证进行 WebSocket 身份验证
  • 标准和严格的速率限制级别
  • 有界 Zod 模式,每个端点均使用 .strict()
  • 使用 CSP 的 Helmet.js 安全标头

基础设施

  • 在浏览器客户端之间实时进行 WebSocket 同步
  • 可选的原子写入文件持久化
  • 结构化 pino 审计日志

安装

npm install -g excalidraw-mcp-server

也可以直接运行:

npx excalidraw-mcp-server

快速开始

独立模式(大多数用户推荐)

只需将 MCP 客户端指向此服务。无需画布服务。

{
  "mcpServers": {
    "excalidraw": {
      "command": "npx",
      "args": ["excalidraw-mcp-server"]
    }
  }
}

然后向 AI 提出请求:“绘制一张架构图,包含一个负载均衡器、三台应用服务器和一个数据库”

连接模式(浏览器实时同步)
# Generate an API key
node scripts/generate-api-key.cjs

# Start the canvas server
EXCALIDRAW_API_KEY=<your-key> npm run canvas

# Open http://localhost:3000 to see the live canvas

使用相同的 API 密钥,将 MCP 客户端指向此服务:

{
  "mcpServers": {
    "excalidraw": {
      "command": "npx",
      "args": ["excalidraw-mcp-server"],
      "env": {
        "EXCALIDRAW_API_KEY": "<your-key>",
        "CANVAS_SERVER_URL": "http://127.0.0.1:3000"
      }
    }
  }
}

MCP 工具

工具描述
create_view将元素渲染为带流式动画的内嵌 SVG 小组件(MCP Apps)
read_me获取元素参考速查表(类型、颜色、尺寸提示)
create_element创建单个元素(矩形、椭圆、菱形、箭头、文本、直线、自由绘制)
update_element按 ID 更新现有元素
delete_element按 ID 删除元素
query_elements按类型、锁定状态或组 ID 搜索元素
get_resource获取场景状态、所有元素、主题或库
batch_create_elements一次调用最多创建 100 个元素
group_elements将多个元素编组
ungroup_elements将元素从组中移除
align_elements对齐元素(左对齐、居中、右对齐、顶部对齐、垂直居中、底部对齐)
distribute_elements均匀分布元素(水平或垂直)
lock_elements锁定元素以防止修改
unlock_elements解锁元素
create_from_mermaid将 Mermaid 图表转换为 Excalidraw 元素
export_scene将画布导出为 SVG 或 PNG

安全性对比

功能典型 MCP 服务excalidraw-mcp-server
身份验证无API 密钥(恒定时间比较)
CORS* 通配符来源允许列表
WebSocket 身份验证无令牌 + 来源验证
速率限制无标准和严格级别
输入验证最低限度带 .strict() 的有界 Zod
安全标头无Helmet.js + CSP
请求大小限制无请求体 512KB,WebSocket 1MB
审计日志无结构化 pino 日志

配置

所有设置均通过环境变量配置。将 .env.example 复制为 .env,并根据需要调整。

变量默认值描述
STANDALONE_MODEtrue使用进程内存储(无需画布服务)
CANVAS_HOST127.0.0.1画布服务绑定地址
CANVAS_PORT3000画布服务端口
EXCALIDRAW_API_KEY自动生成用于身份验证的 API 密钥(至少 32 个字符)
CORS_ALLOWED_ORIGINShttp://localhost:3000,http://127.0.0.1:3000以逗号分隔的来源允许列表
RATE_LIMIT_WINDOW_MS60000速率限制时间窗口,单位为毫秒
RATE_LIMIT_MAX_REQUESTS100每个时间窗口的最大请求数(标准级别)
PERSISTENCE_ENABLEDfalse启用基于文件的持久化
PERSISTENCE_DIR./data持久化存储目录
CANVAS_SERVER_URLhttp://127.0.0.1:3000MCP 服务用于连接画布的 URL
LOG_LEVELinfo日志级别:debug、info、warn、error
AUDIT_LOG_ENABLEDtrue启用审计日志
MAX_ELEMENTS10000画布上的最大元素数
MAX_BATCH_SIZE100批量创建时的最大元素数

MCP 客户端配置

Claude Desktop

添加到 claude_desktop_config.json:

{
  "mcpServers": {
    "excalidraw": {
      "command": "npx",
      "args": ["excalidraw-mcp-server"]
    }
  }
}
Cursor

添加到项目根目录下的 .cursor/mcp.json:

{
  "mcpServers": {
    "excalidraw": {
      "command": "npx",
      "args": ["excalidraw-mcp-server"]
    }
  }
}
VS Code

添加到 MCP 设置中:

{
  "mcpServers": {
    "excalidraw": {
      "command": "npx",
      "args": ["excalidraw-mcp-server"]
    }
  }
}

对于连接模式,将 "env": { "EXCALIDRAW_API_KEY": "<key>", "CANVAS_SERVER_URL": "http://127.0.0.1:3000" } 添加到上述配置中。将 <key> 替换为通过 node scripts/generate-api-key.cjs 生成的密钥。

开发

# Install dependencies
npm ci

# Run in development mode (watch + Vite dev server)
npm run dev

# Run tests
npm test

# Run tests with coverage
npm run test:coverage

# Lint
npm run lint

# Type check
npm run type-check

# Build (server + widget + frontend)
npm run build

项目结构

src/
  mcp/              MCP server (stdio transport)
    tools/          16 tool implementations
    apps/           MCP Apps wiring, standalone store, cheatsheet
    schemas/        Zod schemas and input limits
    canvas-client.ts  HTTP client for canvas server
    index.ts        MCP server entry point
  canvas/           Canvas server (Express + WebSocket)
    middleware/      Auth, CORS, rate limiting, audit, security headers
    routes/         REST API routes + SVG export
    ws/             WebSocket handler and protocol
    store/          Element storage (memory + file)
    index.ts        Canvas server entry point
  shared/           Shared config, types, logging
widget/             MCP Apps inline widget (Vite + singlefile build)
frontend/           Excalidraw React frontend (browser)
test/               Unit and integration tests (290 tests)

从 v1.x 迁移

零配置升级。原有的全部 14 个工具均可照常使用,新增了 create_view 和 read_me。画布服务现在是可选的(会自动启用独立模式)。

npm install -g excalidraw-mcp-server@2

现有 MCP 客户端配置(stdio 传输、工具名称)无需更改即可继续使用。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。