Skip to content

架构概览

总览

Cesium MCP 使用共享工具契约和协议无关的浏览器执行层,并为 WebMCP、MCP 客户端和 IDE 辅助提供独立适配层。下图展示 MCP runtime 接入路径:

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

各包职责

cesium-mcp-contracts(共享契约)

Contracts 包维护与传输协议无关的工具名称、描述、JSON Schema、默认值、结果结构和工具集归属。WebMCP 适配层和 MCP Runtime 都直接使用这套定义;Runtime 在注册工具时把标准 JSON Schema 转换为 Zod,因此 MCP 参数校验与 WebMCP 声明不会再形成两套 schema。

cesium-mcp-bridge(浏览器端)

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

  • 执行来自 WebMCP、function calling 或 MCP runtime 的命令
  • 仅在选择 MCP runtime 路径时通过 WebSocket 连接 Runtime
  • 执行 CesiumJS API 调用(相机、图层、实体等)
  • 将结构化结果返回给调用它的适配层

两种调用方式:

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

cesium-mcp-webmcp(浏览器适配层)

WebMCP 包把共享契约注册到原生 document.modelContext API。默认暴露 15 个核心工具,也可以按 12 个工具集暴露全部 61 个浏览器安全工具。它不包含 AI 模型、聊天界面、MCP 服务、WebSocket 传输层或 polyfill。

该适配层与 cesium-mcp-runtime 保持独立,接入步骤见 WebMCP 浏览器接入

cesium-mcp-runtime(Node.js)

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

  • 通过 stdio 暴露 62 个 MCP 命令工具(按 12 个工具集 组织)+ 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 智能体获取相机状态,用于上下文感知决策

工具集与动态发现

62 个 Runtime 命令工具按 12 个工具集 组织,解决 LLM 工具选择困难:

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

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

  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") ──┘

MCP HTTP 模式下,在端点 URL 后添加 ?session=xxx 可自动将所有工具调用路由到指定浏览器:

http://localhost:3216/mcp?session=project-a

路由优先级:工具参数 sessionId > URL ?session=xxx > DEFAULT_SESSION_ID 环境变量 > 第一个已连接的浏览器。

版本策略

已有的 cesium-mcp-bridgecesium-mcp-runtimecesium-mcp-dev 使用 changesets 共享同一版本号(fixed 模式)。新增的 cesium-mcp-contractscesium-mcp-webmcp 使用独立的语义化版本。

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

  • cesium-mcp-*@1.143.x 对应已验证的 cesium@~1.143.0 基线

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

Released under the MIT License.