testzzcz
一个综合系统,结合了Excalidraw强大的绘图功能与模型上下文协议(MCP)的集成,使AI代理能够在实时在线环境中创建和操作图表。
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"excalidraw": {
"args": [
"run",
"-i",
"--rm",
"mcp-excalidraw-server"
],
"command": "docker"
}
}
}
服务介绍
MCP Excalidraw 服务器:结合AI的高级实时可视化绘图
一个综合系统,将 Excalidraw 强大的绘图功能 与 模型上下文协议 (MCP) 集成在一起,使 AI 代理能够在实时画布上创建和操作图表。
🚦 当前状态及版本信息
📋 选择您的安装方法
| 版本 | 状态 | 推荐用途 |
|---|---|---|
| 本地开发 | ✅ 完全测试 | 🎯 推荐 |
| NPM 发布版 | 🔧 调试中 | 开发测试 |
| Docker 版本 | 🔧 开发中 | 未来的部署 |
当前推荐:本地开发
为了获得最稳定的体验,我们建议使用本地开发设置。我们正在积极改进 NPM 包和 Docker 部署选项。
开发说明
- NPM 包: 目前正在调试 MCP 工具注册问题
- Docker 版本: 正在提高画布同步的可靠性
- 本地版本: ✅ 所有功能完全可用
🚀 该系统的作用
- 🎨 实时画布: 可通过网页浏览器访问的实时 Excalidraw 画布
- 🤖 AI 集成: MCP 服务器允许 AI 代理(如 Claude)创建视觉图表
- ⚡ 实时同步: 通过 MCP API 创建的元素会立即出现在画布上
- 🔄 WebSocket 更新: 多个连接客户端之间的实时同步
- 🏗️ 生产就绪: 清晰、简洁的用户界面适合最终用户
🎥 演示视频
观看 MCP Excalidraw 的实际效果!
观看 AI 代理如何在实时画布上创建和操作图表
🏛️ 架构概览
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ AI Agent │───▶│ MCP Server │───▶│ Canvas Server │
│ (Claude) │ │ (src/index.js) │ │ (src/server.js) │
└─────────────────┘ └──────────────────┘ └─────────────────┘
│
▼
┌─────────────────┐
│ Frontend │
│ (React + WS) │
└─────────────────┘
🌟 主要特性
实时画布集成
- 通过 MCP 创建的元素会立即出现在实时画布上
- 基于 WebSocket 的实时同步
- 支持多客户端并提供实时更新
生产就绪的界面
- 清晰、简洁的用户界面,显示连接状态
- 简单的“清除画布”功能
- 无开发杂乱或调试信息
全面的 MCP API
- 元素创建: 矩形、椭圆、菱形、箭头、文本、线条
- 元素管理: 更新、删除、带过滤条件的查询
- 批量操作: 一次调用创建多个元素
- 高级功能: 分组、对齐、分布、锁定
健壮的架构
- Express.js 后端,支持 REST API 和 WebSocket
- React 前端,使用官方 Excalidraw 包
- 双路径元素加载以提高可靠性
- 自动重连和错误处理
📦 安装与设置
✅ 推荐:本地开发设置
最稳定且功能完整的选项
1. 克隆仓库
git clone https://github.com/yctimlin/mcp_excalidraw.git
cd mcp_excalidraw
npm install
2. 构建前端
npm run build
3. 启动系统
选项 A: 生产模式(推荐)
# Start canvas server (serves frontend + API)
npm run canvas
选项 B: 开发模式
# Start both canvas server and Vite dev server
npm run dev
4. 访问画布
打开您的浏览器并导航至:
http://localhost:3000
🔧 替代安装方法(开发中)
NPM 包(测试版)
# Currently debugging tool registration - feedback welcome!
npm install -g mcp-excalidraw-server
npx mcp-excalidraw-server
Docker 版本(即将推出)
# Canvas sync improvements in progress
docker run -p 3000:3000 mcp-excalidraw-server
🔧 可用脚本
| 脚本 | 描述 |
|---|---|
npm start |
启动 MCP 服务器 (src/index.js) |
npm run canvas |
启动画布服务器 (src/server.js) |
npm run build |
构建用于生产的前端 |
npm run dev |
启动画布 + Vite 开发服务器 |
npm run production |
构建并以生产模式启动 |
🎯 使用指南
对于最终用户
- 在
http://localhost:3000打开画布 - 检查连接状态(应显示“已连接”)
- AI 代理现在可以创建实时出现的图表
- 使用“清除画布”来移除所有元素
**对于 AI 代理(通过 MCP)**MCP 服务器提供了这些工具来创建可视化图表:
基本元素创建
// Create a rectangle
{
"type": "rectangle",
"x": 100,
"y": 100,
"width": 200,
"height": 100,
"backgroundColor": "#e3f2fd",
"strokeColor": "#1976d2",
"strokeWidth": 2
}
创建文本元素
{
"type": "text",
"x": 150,
"y": 125,
"text": "Process Step",
"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": "Start",
"fontSize": 16
}
]
}
🔌 与 Claude Desktop 集成
✅ 推荐:使用本地安装
对于本地开发版本(最稳定),请在您的 claude_desktop_config.json 中添加以下配置:
{
"mcpServers": {
"excalidraw": {
"command": "node",
"args": ["/absolute/path/to/mcp_excalidraw/src/index.js"]
}
}
}
重要提示:将 /absolute/path/to/mcp_excalidraw 替换为您克隆仓库的实际绝对路径。
🔧 备选配置(测试版)
NPM 包(测试中)
{
"mcpServers": {
"excalidraw": {
"command": "npx",
"args": ["-y", "mcp-excalidraw-server"]
}
}
}
当前正在调试工具注册 - 如果您遇到问题,请告知我们!
Docker 版本(即将推出)
{
"mcpServers": {
"excalidraw": {
"command": "docker",
"args": ["run", "-i", "--rm", "mcp-excalidraw-server"]
}
}
}
画布同步改进正在进行中。
🔧 与其他工具集成
Cursor IDE
在您的 .cursor/mcp.json 中添加:
{
"mcpServers": {
"excalidraw": {
"command": "node",
"args": ["/absolute/path/to/mcp_excalidraw/src/index.js"]
}
}
}
VS Code MCP 扩展
对于 VS Code MCP 扩展,在设置中添加:
{
"mcp": {
"servers": {
"excalidraw": {
"command": "node",
"args": ["/absolute/path/to/mcp_excalidraw/src/index.js"]
}
}
}
}
🛠️ 环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
EXPRESS_SERVER_URL |
http://localhost:3000 |
用于 MCP 同步的画布服务器 URL |
ENABLE_CANVAS_SYNC |
true |
启用/禁用画布同步 |
DEBUG |
false |
启用调试日志 |
PORT |
3000 |
画布服务器端口 |
HOST |
localhost |
画布服务器主机 |
📊 API 端点
画布服务器提供以下 REST 端点:
| 方法 | 端点 | 描述 |
|---|---|---|
GET |
/api/elements |
获取所有元素 |
POST |
/api/elements |
创建新元素 |
PUT |
/api/elements/:id |
更新元素 |
DELETE |
/api/elements/:id |
删除元素 |
POST |
/api/elements/batch |
创建多个元素 |
GET |
/health |
服务器健康检查 |
🎨 可用的 MCP 工具
元素管理
create_element- 创建任何类型的 Excalidraw 元素update_element- 修改现有元素delete_element- 删除元素query_elements- 使用过滤器搜索元素
批量操作
batch_create_elements- 一次调用创建复杂的图表
元素组织
group_elements- 组合多个元素ungroup_elements- 解组元素组align_elements- 对齐元素(左、中、右、上、中、下)distribute_elements- 均匀分布元素lock_elements/unlock_elements- 锁定/解锁元素
资源访问
get_resource- 访问场景、库、主题或元素数据
🏗️ 开发架构
前端 (frontend/src/)
- React + Vite:现代构建系统
- 官方 Excalidraw:
@excalidraw/excalidraw包 - WebSocket 客户端:实时元素同步
- 简洁 UI:生产就绪界面
画布服务器 (src/server.js)
- Express.js:REST API 和静态文件服务
- WebSocket:实时客户端通信
- 元素存储:内存中存储,支持持久化选项
- CORS:跨域支持
MCP 服务器 (src/index.js)
- MCP 协议:标准模型上下文协议
- 画布同步:向画布服务器发送 HTTP 请求
- 元素管理:完整的 CRUD 操作
- 批量支持:复杂图表创建
🐛 故障排除
NPM 包问题
- 症状:MCP 工具未正确注册
- 临时解决方案:使用本地开发设置
- 状态:正在积极调试 - 即将更新
Docker 版本注意事项
- 症状:元素可能不会立即同步到画布
- 临时解决方案:使用本地开发设置
- 状态:正在改进同步可靠性
画布无法加载
- 确保
npm run build成功完成 - 检查
dist/index.html是否存在- 确认 canvas 服务器在 3000 端口上运行
元素不同步
- 确认 MCP 服务器正在运行 (
npm start) - 检查环境变量中
ENABLE_CANVAS_SYNC=true - 确认可以通过
EXPRESS_SERVER_URL访问 canvas 服务器
WebSocket 连接问题
- 检查浏览器控制台中的 WebSocket 错误
- 确保没有防火墙阻止 WebSocket 连接
- 尝试刷新浏览器页面
构建错误
- 删除
node_modules并运行npm install - 检查 Node.js 版本(需要 16+)
- 确保所有依赖项都已安装
📋 项目结构
mcp_excalidraw/
├── frontend/
│ ├── src/
│ │ ├── App.jsx # Main React component
│ │ └── main.jsx # React entry point
│ └── index.html # HTML template
├── src/
│ ├── index.js # MCP server
│ ├── server.js # Canvas server (Express + WebSocket)
│ ├── types.js # Shared types and utilities
│ └── utils/
│ └── logger.js # Logging utility
├── dist/ # Built frontend (generated)
├── vite.config.js # Vite build configuration
├── package.json # Dependencies and scripts
└── README.md # This file
🔮 开发路线图
- NPM 包: 解决 MCP 工具注册问题
- Docker 部署: 改进 canvas 同步
- 增强功能: 添加更多 MCP 工具和功能
- 性能优化: 实时同步改进
🤝 贡献
我们欢迎贡献!如果您在使用 NPM 包或 Docker 版本时遇到问题,请:
- 叉取仓库
- 创建一个特性分支 (
git checkout -b feature/amazing-feature) - 提交您的更改 (
git commit -m 'Add amazing feature') - 推送到该分支 (
git push origin feature/amazing-feature) - 打开一个 Pull Request
📝 许可证
此项目根据 MIT 许可证发布 - 详情请参阅 LICENSE 文件。
🙏 致谢
- Excalidraw 团队 - 提供了出色的绘图库
- MCP 社区 - 提供了 Model Context Protocol 规范
