内容
# Cartogram MCP 服务器
> **状态:早期阶段,积极开发中。** 欢迎提交问题和拉取请求。
远程 MCP 服务器(可流式传输的 HTTP + OAuth 2.1/PKCE),允许与 MCP 兼容的 AI 代理(例如 Claude Code)读取和写入用户的 Cartogram 项目和图表,受到用户在网页应用的 `/settings/integrations` 中控制的相同每个项目访问授权和读取/写入/管理员范围。
生产实例:`https://mcp.cartogram.andrewpg.me` — 指向任意与 MCP 兼容的客户端到该 URL,它通过动态客户端注册(RFC 7591)自行注册,并从那里引导 OAuth 同意屏幕。
## 本地开发
需要运行 Supabase 后端 — 请参阅 sibling [`cartogram-supabase`](https://github.com/Andrewdpg/cartogram-supabase) 仓库:
supabase start # 从 cartogram-supabase 仓库
然后,从此仓库:
cp .env.example .env
# 填写 SUPABASE_URL / SUPABASE_ANON_KEY / SUPABASE_SERVICE_ROLE_KEY
# 从 `supabase start` 的输出中,随机 MCP_JWT_SIGNING_SECRET,以及
# MCP_FRONTEND_URL(前端的 OAuth 同意屏幕所在位置)
npm install
npm run dev
## 测试
npm test
## 公开的工具
| 工具 | 范围 | 备注 |
|---|---|---|
| `list_projects` | 读取 | |
| `list_diagrams` | 读取 | 返回其他图表的 `childDiagram` 无法到达的图表 — 选择器/代理需要直接的 slug |
| `get_diagram` | 读取 | |
| `create_project` | 写入 | 自动授予 MCP 访问创建的项目;初始化一个空的 `deployment` 图表 |
| `create_diagram` | 写入 | |
| `update_diagram` | 写入 | 乐观锁:传递先前 `get_diagram` 调用的 `version`;不匹配返回 `{ conflict: true }` |
| `validate_diagram` | 无 | 干燥运行形状验证,无数据库写入 |
| `invite_collaborator` | 管理员 | |
## 已知的限制
- `delete_project` 和 `remove_collaborator` 故意不公开(破坏性,对围绕“文档存储库”构建的流程价值较低 — 如果有实际需求,请稍后添加)。
- `childDiagram` 的 slugs 在写入时不会针对现有图表进行验证 — 输入错误会创建悬空引用而不是快速失败。