壁画MCP服务器
MCP服务器 壁画 视觉协作平台——专注于 板内容编辑:便签、形状、文本框、区域、图像和连接器。
与 模型上下文协议 SDK和TypeScript。跑过 标准 --与任何MCP客户端(Warp、Cursor、Claude Code等)兼容。
特性
20工具 跨越4个模块:
电路板编辑-写入(13个工具)
| 工具 | 说明 |
|---|---|
create_sticky_notes | 批量创建便签(1-1000) |
update_sticky_note | 更新文本、位置、颜色、大小 |
create_text_boxes | 批量创建文本框(1-1000) |
update_text_box | 更新文本框 |
create_shapes | 批量创建形状——矩形、圆形、菱形、三角形、星形、六边形等50多种 |
update_shape | 更新形状 |
create_area | 创建分组区域 |
update_area | 更新区域 |
create_image | 从公共URL添加图像(自动检测尺寸,最大10 MB) |
connect_widgets | 在两个小部件之间绘制一个连接的箭头 |
connect_widgets_batch | 在一次通话中连接多个小部件对(最多100个) |
create_arrow | 绘制一个自由形式的箭头(不捕捉到小部件) |
delete_widget | 按ID删除任何小部件 |
板编辑-读取(2个工具)
| 工具 | 说明 |
|---|---|
get_widgets | 列出小部件(分页,默认50,剥离到关键字段) |
get_widget | 按ID获取单个小部件 |
导航(4个工具)
| 工具 | 说明 |
|---|---|
list_workspaces | 列出可访问的工作区 |
list_rooms | 列出工作区中的房间(默认限制为50) |
list_murals | 列出房间或工作区中的壁画(默认限制为50) |
get_mural | 获取壁画元数据 |
壁画管理(1个工具)
| 工具 | 说明 |
|---|---|
create_mural | 创建新壁画(默认设置:无限画布,灰色背景) |
代币效率
所有工具响应都针对最小的令牌使用进行了优化:
- 剥离响应 --只返回与决策相关的字段(id、类型、位置、文本、样式要素)
- 压缩JSON --没有漂亮的印刷,按键短(
w/h/bg而不是width/height/backgroundColor) - 批次摘要 --创建工具返回
{summary, count, ids, preview}而不是完整对象转储 - 分页 —
get_widgets默认为50个基于光标的分页项目 - 服务器端验证 --在服务器端验证形状类型(模式中没有臃肿的枚举)
先决条件
1.注册壁画应用程序
- 首选 app.mural.co → 点击你的头像→ “创建和管理应用程序”
- 点击 “新应用程序”
- 将重定向URL设置为:
http://localhost:9876/callback - 注意你的 客户端ID 和 客户端密钥
2.安装和构建
git clone https://github.com/janschmiedgen/mural-mcp.git
cd mural-mcp
npm install
npm run build3.一次性OAuth身份验证
export MURAL_CLIENT_ID=your_client_id
export MURAL_CLIENT_SECRET=your_client_secret
npm run auth这将打开您的浏览器以获取壁画同意。令牌保存到 ~/.mural-mcp/tokens.json 并在运行时自动刷新。
MCP客户端设置
扭曲
在中添加为CLI MCP服务器 设置→ MCP服务器:
{
"command": "node",
"args": ["/path/to/mural-mcp/build/index.js"],
"env": {
"MURAL_CLIENT_ID": "your_client_id",
"MURAL_CLIENT_SECRET": "your_client_secret"
}
}光标
添加 ~/.cursor/mcp.json:
{
"mcpServers": {
"mural": {
"command": "node",
"args": ["/path/to/mural-mcp/build/index.js"],
"env": {
"MURAL_CLIENT_ID": "your_client_id",
"MURAL_CLIENT_SECRET": "your_client_secret"
}
}
}
}克劳德代码
claude mcp add mural -- node /path/to/mural-mcp/build/index.js集 MURAL_CLIENT_ID 和 MURAL_CLIENT_SECRET 在您的shell环境中。
配置
工作区允许列表(可选)
通过设置来限制对特定工作区的访问 MURAL_ALLOWED_WORKSPACES 环境变量:
export MURAL_ALLOWED_WORKSPACES="workspace_id_1,workspace_id_2"如果未设置,则经过身份验证的用户可以访问的所有工作区都可用。
发展
npm install
npm run build # Compile TypeScript → build/
npm run dev # Run with tsx (hot reload)
npm run auth # Re-authenticate with Mural建筑
src/
├── index.ts # Entry point, registers tools, starts stdio transport
├── types.ts # TypeScript interfaces (Widget, Mural, Room, etc.)
├── auth/
│ ├── oauth.ts # OAuth2 + PKCE flow, token refresh
│ ├── token-store.ts # Token persistence (~/.mural-mcp/tokens.json)
│ └── workspace-guard.ts # Workspace allowlist guard
├── client/
│ └── mural-api.ts # HTTP client for Mural Public API v1
├── tools/
│ ├── widgets-write.ts # 13 write tools (create, update, connect, delete)
│ ├── widgets-read.ts # 2 read tools (get_widgets, get_widget)
│ ├── navigation.ts # 4 navigation tools (workspaces, rooms, murals)
│ └── mural-manage.ts # 1 management tool (create_mural)
└── utils/
└── strip.ts # Response strippers for token efficiency- 运输: stdio(运行时没有HTTP服务器)
- 认证: OAuth2+PKCE,令牌存储在
~/.mural-mcp/tokens.json,自动刷新 - API 壁画公共API v1(
https://app.mural.co/api/public/v1)
API壁画注释
在开发过程中发现的一些怪癖可能对贡献者有所帮助:
- 箭头语义: 在壁画API中,
startRefId箭头指向的控件是TO吗endRefId是尾巴。箭头在 第一点 在点阵列中。 - 创建时的便签样式: 仅
fontSize和textAlign可以在创建过程中设置。backgroundColor必须通过后续的更新调用进行设置。 - 图片上传: 需要三个步骤的过程:(1)下载图像,(2)通过API创建资产URL,(3)将图像放入blob存储,(4)创建引用资产名称的图像小部件。
- 垂直箭头:
connect_widgets可能会失败WIDGET_SIZE_INVALID当源和目标几乎垂直对齐时(箭头宽度接近零)。使用create_arrow(自由形式)作为退路。
许可证
麻省理工学院
