使用说明
excalidraw mcp服务器
唯一具有安全强化、内联图渲染和实时画布同步功能的Excalidraw MCP服务器。
它的作用
让你的人工智能绘制一个图表,它就会出现在聊天中。MCP服务器为Claude Desktop、ChatGPT、VS Code和Cursor提供了一整套由Excalidraw格式支持的绘图工具,并对每个操作进行API身份验证、速率限制和输入验证。
v2.0添加 MCP应用程序支持:图表作为带有绘图动画的交互式SVG小部件内联流,您可以一键将任何图表导出到excalidraw.com。
两种模式,零配置
独立模式 (默认)--只需安装并运行即可。服务器使用进程内元素存储运行。没有画布服务器,没有API键,没有设置。您的MCP客户端调用这些工具,图表将内联呈现。
已连接模式 --启动可选的canvas服务器进行实时浏览器同步。多个客户端可以通过经过身份验证的WebSocket连接在同一画布上进行协作。文件持久性在重新启动时保持状态。
服务器会自动检测使用哪种模式:如果画布服务器可访问,则会连接到它。否则,它会回退到独立模式。
建筑
使用excalidraw mcp服务器创建的图表-- 在Excalidraw中编辑
特性
MCP应用程序(v2.0)
- Claude Desktop、ChatGPT和VS Code中的内联图渲染
- 当元素到达时,通过绘制动画流式传输SVG
- 一键导出到excalidraw.com
- 元素参考备忘单通过
read_me工具
16个MCP工具
- 创建、更新、删除和查询元素(矩形、椭圆、菱形、箭头、文本、直线、自由绘制)
- 一次批量创建多达100个元素
- 分组、取消分组、对齐、分配、锁定、解锁
- 美人鱼图转换
- 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应用程序) |
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服务器 |
|---|---|---|
| 身份验证 | 无 | API密钥(恒定时间比较) |
| CORS | * 通配符 |
源代码列表 |
| WebSocket身份验证 | 无 | 令牌+来源验证 |
| 费率限制 | 无 | 标准+严格等级 |
| 输入验证 | 最小 | 有界Zod .strict() |
| 安全标头 | 无 | Helmet.js+CSP |
| 请求大小限制 | 无 | 512KB正文,1MB WebSocket |
| 审计日志 | 无 | 结构化pino日志 |
配置
所有设置均通过环境变量进行。复制 .env.example 到 .env 并根据需要进行调整。
| 变量 | 默认值 | 描述 |
|---|---|---|
STANDALONE_MODE |
true |
使用进程内存储(不需要画布服务器) |
CANVAS_HOST |
127.0.0.1 |
Canvas服务器绑定地址 |
CANVAS_PORT |
3000 |
Canvas服务器端口 |
EXCALIDRAW_API_KEY |
为身份验证自动生成 | API密钥(至少32个字符) |
CORS_ALLOWED_ORIGINS |
http://localhost:3000,http://127.0.0.1:3000 |
逗号分隔的同源列表 |
RATE_LIMIT_WINDOW_MS |
60000 |
速率限制窗口(毫秒) |
RATE_LIMIT_MAX_REQUESTS |
100 |
每个窗口的最大请求数(标准层) |
PERSISTENCE_ENABLED |
false |
启用基于文件的持久性 |
PERSISTENCE_DIR |
./data |
持久存储目录 |
CANVAS_SERVER_URL |
http://127.0.0.1:3000 |
MCP服务器用于访问画布的URL |
LOG_LEVEL |
info |
日志级别:调试、信息、警告、错误 |
AUDIT_LOG_ENABLED |
true |
启用审核日志记录 |
MAX_ELEMENTS |
10000 |
画布上的最大元素数 |
MAX_BATCH_SIZE |
100 |
每批创建的最大元素数 |
MCP客户端配置
克劳德桌面版
增添 claude_desktop_config.json:
{
"mcpServers": {
"excalidraw": {
"command": "npx",
"args": ["excalidraw-mcp-server"]
}
}
}
光标
增添 .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传输、工具名称)继续工作,没有更改。
