一个基于TypeScript的综合系统,结合了Excalidraw的强大绘图能力与**模型上下文协议(MCP)**集成,使AI代理能够在实时画布上创建和操作图表。
📋 选择您的安装方法
| 组件 | 本地 | Docker | 状态 |
|---|---|---|---|
| 画布服务器 | ✅ 完全工作 | ✅ 完全工作 | 生产就绪 |
| MCP服务器 | ✅ 完全工作 | ✅ 完全工作 | 生产就绪 |
| NPM发布 | 🔧 进行中 | N/A | 开发测试 |
该系统由两个独立组件组成:
您可以选择任意组合:
本地和Docker设置均完全工作且生产就绪!
观看MCP Excalidraw的实际操作!
观看AI代理如何在实时画布上创建和操作图表
┌─────────────────────────────────────────────────────────────────┐
│ 组件1 │
│ 🎨 画布服务器 │
│ (独立运行) │
│ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ 画布服务器 │◀───────▶│ 前端 │ │
│ │ (src/server.js) │ │ (React + WS) │ │
│ │ 端口3000 │ │ Excalidraw UI │ │
│ └─────────────────┘ └─────────────────┘ │
│ │
│ 📍 启动:npm run canvas 或 docker run (canvas) │
└─────────────────────────────────────────────────────────────────┘
▲
│ HTTP API
│ (可选)
│
┌─────────────────────────────────────────────────────────────────┐
│ 组件2 │
│ 🤖 MCP服务器 │
│ (独立运行) │
│ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ AI代理 │◀───────▶│ MCP服务器 │ │
│ │ (Claude) │ │ (src/index.js) │ │
│ │ 桌面/代码 │ stdio │ MCP协议 │ │
│ └─────────────────┘ └─────────────────┘ │
│ │
│ 📍 配置于:claude_desktop_config.json 或 .mcp.json │
└─────────────────────────────────────────────────────────────────┘
🎯 关键点:
• 画布和MCP服务器是分开的进程
• 画布可以本地运行或使用Docker
• MCP服务器可以本地运行或使用Docker
• 画布提供可视界面(可选)
• MCP服务器通过HTTP API连接Claude到画布
create_from_mermaid工具画布服务器提供实时Excalidraw界面。
git clone https://github.com/yctimlin/mcp_excalidraw.git
cd mcp_excalidraw
npm install
npm run build
# 生产模式(推荐)
npm run canvas
http://localhost:3000
选项B1:使用GHCR上的预构建镜像(推荐)
docker pull ghcr.io/yctimlin/mcp_excalidraw-canvas:latest
docker run -d -p 3000:3000 --name mcp-excalidraw-canvas ghcr.io/yctimlin/mcp_excalidraw-canvas:latest
选项B2:本地构建
git clone https://github.com/yctimlin/mcp_excalidraw.git
cd mcp_excalidraw
docker build -f Dockerfile.canvas -t mcp-excalidraw-canvas .
docker run -d -p 3000:3000 --name mcp-excalidraw-canvas mcp-excalidraw-canvas
http://localhost:3000
MCP服务器将您的AI助手(Claude)连接到画布。根据您的偏好选择本地或Docker格式。
您可以混合搭配任何组合:
| 画布服务器 | MCP服务器 | 状态 |
|---|---|---|
| ✅ 本地 | ✅ 本地 | 推荐 |
| ✅ 本地 | ✅ Docker | 完全工作 |
| ✅ Docker | ✅ 本地 | 完全工作 |
| ✅ Docker | ✅ Docker | 完全工作 |
配置示例将在下一节中提供:
| 脚本 | 描述 |
|---|---|
npm start | 构建并启动MCP服务器(dist/index.js) |
npm run canvas | 构建并启动画布服务器(dist/server.js) |
npm run build | 构建前端和TypeScript后端 |
npm run build:frontend | 仅构建React前端 |
npm run build:server | 将TypeScript后端编译为JavaScript |
npm run dev | 启动TypeScript监视模式 + Vite开发服务器 |
npm run type-check | 运行TypeScript类型检查而不编译 |
npm run production | 构建并启动生产模式 |
http://localhost:3000打开画布MCP服务器提供了这些工具来创建视觉图表:
// 创建矩形
{
"type": "rectangle",
"x": 100,
"y": 100,
"width": 200,
"height": 100,
"backgroundColor": "#e3f2fd",
"strokeColor": "#1976d2",
"strokeWidth": 2
}
{
"type": "text",
"x": 150,
"y": 125,
"text": "过程步骤",
"fontSize": 16,
"strokeColor": "#333333"
}
{
"type": "arrow",
"x": 300,
"y": 130,
"width": 100,
"height": 0,
"strokeColor": "#666666",
"strokeWidth": 2
}
{
"elements": [
{
"type": "rectangle",
"x": 100,
"y": 100,
"width": 120,
"height": 60,
"backgroundColor": "#fff3e0",
"strokeColor": "#ff9800"
},
{
"type": "text",
"x": 130,
"y": 125,
"text": "开始",
"fontSize": 16
}
]
}
✅ 确保您的画布服务器正在运行(来自步骤1):
npm run canvasdocker run -d -p 3000:3000 mcp-excalidraw-canvas画布应在http://localhost:3000处可访问
根据IDE和个人偏好选择配置:
| IDE | 配置文件 | 格式选项 |
|---|---|---|
| Claude桌面 | claude_desktop_config.json | 本地 ⭐ / Docker ✅ |
| Claude代码 | .mcp.json(项目根目录) | 本地 ⭐ / Docker ✅ |
| Cursor | .cursor/mcp.json | 本地 ⭐ / Docker ✅ |
⭐ = 推荐 | ✅ = 完全工作
编辑您的claude_desktop_config.json文件:
{
"mcpServers": {
"excalidraw": {
"command": "node",
"args": ["/绝对路径/to/mcp_excalidraw/dist/index.js"],
"env": {
"EXPRESS_SERVER_URL": "http://localhost:3000",
"ENABLE_CANVAS_SYNC": "true"
}
}
}
}
重要:替换/绝对路径/to/mcp_excalidraw为您实际的安装路径。
使用GHCR上的预构建镜像(推荐):
{
"mcpServers": {
"excalidraw": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--network", "host",
"-e", "EXPRESS_SERVER_URL=http://localhost:3000",
"-e", "ENABLE_CANVAS_SYNC=true",
"ghcr.io/yctimlin/mcp_excalidraw:latest"
]
}
}
}
或者本地构建:
cd mcp_excalidraw
docker build -f Dockerfile -t mcp-excalidraw .
然后在上述配置中使用mcp-excalidraw作为镜像名称。
在项目根目录创建或编辑.mcp.json:
{
"mcpServers": {
"excalidraw": {
"command": "node",
"args": ["/绝对路径/to/mcp_excalidraw/dist/index.js"],
"env": {
"EXPRESS_SERVER_URL": "http://localhost:3000",
"ENABLE_CANVAS_SYNC": "true"
}
}
}
}
重要:替换/绝对路径/to/mcp_excalidraw为您实际的安装路径。
使用GHCR上的预构建镜像(推荐):
{
"mcpServers": {
"excalidraw": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--network", "host",
"-e", "EXPRESS_SERVER_URL=http://localhost:3000",
"-e", "ENABLE_CANVAS_SYNC=true",
"ghcr.io/yctimlin/mcp_excalidraw:latest"
]
}
}
}
或者本地构建:
cd mcp_excalidraw
docker build -f Dockerfile -t mcp-excalidraw .
然后在上述配置中使用mcp-excalidraw作为镜像名称。
# 项目范围(推荐)
claude mcp add --scope project --transport stdio excalidraw \
-- docker run -i --rm --network host \
-e EXPRESS_SERVER_URL=http://localhost:3000 \
-e ENABLE_CANVAS_SYNC=true \
mcp-excalidraw
# 用户范围(跨所有项目可用)
claude mcp add --scope user --transport stdio excalidraw \
-- docker run -i --rm --network host \
-e EXPRESS_SERVER_URL=http://localhost:3000 \
-e ENABLE_CANVAS_SYNC=true \
mcp-excalidraw
编辑.cursor/mcp.json:
{
"mcpServers": {
"excalidraw": {
"command": "node",
"args": ["/绝对路径/to/mcp_excalidraw/dist/index.js"],
"env": {
"EXPRESS_SERVER_URL": "http://localhost:3000",
"ENABLE_CANVAS_SYNC": "true"
}
}
}
}
使用GHCR上的预构建镜像(推荐):
{
"mcpServers": {
"excalidraw": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--network", "host",
"-e", "EXPRESS_SERVER_URL=http://localhost:3000",
"-e", "ENABLE_CANVAS_SYNC=true",
"ghcr.io/yctimlin/mcp_excalidraw:latest"
]
}
}
}
或者本地构建:
cd mcp_excalidraw
docker build -f Dockerfile -t mcp-excalidraw .
然后在上述配置中使用mcp-excalidraw作为镜像名称。
| 设置 | 目的 | 必需 |
|---|---|---|
EXPRESS_SERVER_URL | 画布服务器URL | 是(默认:http://localhost:3000) |
ENABLE_CANVAS_SYNC | 启用实时 |