Skip to content

架构概览

总览

Cesium MCP 由三个独立的包组成,构成从 AI 智能体到三维地球的完整管线:

AI 智能体
Claude, Cursor, VS Code…
stdio / MCP
cesium-mcp-runtime
Node.js MCP 服务器
WebSocket
cesium-mcp-bridge
浏览器 SDK
API
CesiumJS Viewer
三维地球

各包职责

cesium-mcp-bridge(浏览器端)

Bridge 运行在浏览器内部,与 CesiumJS 应用共存。它:

  • 通过 WebSocket 连接到 Runtime
  • 接收 JSON-RPC 命令
  • 执行 CesiumJS API 调用(相机、图层、实体等)
  • 将结果通过 WebSocket 返回

两种调用方式:

  • 类型安全方法bridge.flyTo({ longitude: 2.29, latitude: 48.86, height: 1000 })
  • JSON 命令分发bridge.execute({ action: 'flyTo', params: { ... } })

cesium-mcp-runtime(Node.js)

Runtime 是一个 Node.js MCP 服务器,充当 AI 智能体和浏览器之间的翻译器。它:

  • 通过 stdio 暴露 44 个 MCP 工具(按 11 个工具集 组织)+ 2 个资源
  • 运行 WebSocket + HTTP 服务器(默认端口 9100)
  • 将 MCP 工具调用转译为 Bridge 命令
  • 支持多会话路由以管理多个浏览器标签页
  • 提供 HTTP Push API(POST /api/command)供后端系统集成

cesium-mcp-dev(Node.js)

Dev 服务器是独立的 IDE 助手,不需要运行中的地球。它提供:

  • CesiumJS API 文档查询(12 个核心类)
  • 常见模式的代码片段生成
  • Entity 模板构建器,用于生成配置

数据流

AI 智能体 → 地球(工具调用)

1. 用户:"添加一个地震数据的 GeoJSON 图层"
2. AI 智能体 → MCP 工具调用:addGeoJsonLayer({ url: "...", name: "earthquakes" })
3. Runtime 通过 stdio 接收工具调用
4. Runtime 发送 WebSocket 命令:{ action: "addGeoJsonLayer", params: { ... } }
5. Bridge 执行:viewer.dataSources.add(Cesium.GeoJsonDataSource.load(...))
6. Bridge 返回:{ success: true, layerId: "..." }
7. 结果回流:Bridge → Runtime → AI 智能体
8. AI 智能体:"我已经把地震数据图层添加到地图上了。"

地球 → AI 智能体(资源读取)

1. AI 智能体读取资源:cesium://scene/camera
2. Runtime 通过 WebSocket 将请求转发给 Bridge
3. Bridge 读取:viewer.camera.positionCartographic
4. Bridge 返回:{ longitude: 2.29, latitude: 48.86, height: 1000 }
5. AI 智能体获取相机状态,用于上下文感知决策

工具集与动态发现

44 个工具按 11 个工具集 组织,解决 LLM 工具选择困难:

工具集工具数默认启用
view4
entity7
layer6
interaction2
camera4
entity-ext7
animation8
tiles3
trajectory1
heatmap1
geolocation1

默认启用 4 个核心工具集(约 19 个工具)。其余工具集可通过两种方式激活:

  1. 环境变量CESIUM_TOOLSETS=all 启用全部
  2. 动态发现:两个元工具(list_toolsetsenable_toolset)允许 AI 智能体在运行时自主发现和激活工具集,无需用户手动配置
AI:"我需要创建一个动画"
→ 调用 list_toolsets → 发现 animation 工具集未启用
→ 调用 enable_toolset("animation") → 8 个动画工具变为可用
→ 调用 createAnimation(...)

会话路由

多个浏览器标签页可以连接到同一个 Runtime。每个 Bridge 连接使用一个 sessionId

浏览器标签页 1 (sessionId: "project-a") ──┐
                                          ├── cesium-mcp-runtime ── AI 智能体
浏览器标签页 2 (sessionId: "project-b") ──┘

Runtime 将 MCP 工具调用路由到匹配 DEFAULT_SESSION_ID 的会话。

版本策略

三个包使用 changesets 共享同一版本号(fixed 模式)。

主版本号.次版本号 跟踪 CesiumJS:

  • cesium-mcp-*@1.139.x 对应 cesium@~1.139.0

修订版本号 独立迭代,用于 MCP 功能更新。

Released under the MIT License.