Skip to content

cesium-mcp-runtime

MCP 服务器(stdio)— 58 个工具(12 个工具集)+ 2 个资源,支持动态发现。

npm

安装与运行

bash
npx cesium-mcp-runtime

或全局安装:

bash
npm install -g cesium-mcp-runtime
cesium-mcp-runtime

MCP 客户端配置

Claude Desktop

claude_desktop_config.json

json
{
  "mcpServers": {
    "cesium": {
      "command": "npx",
      "args": ["-y", "cesium-mcp-runtime"]
    }
  }
}

VS Code (GitHub Copilot)

.vscode/mcp.json

json
{
  "servers": {
    "cesium-mcp": {
      "command": "npx",
      "args": ["-y", "cesium-mcp-runtime"]
    }
  }
}

Cursor

.cursor/mcp.json

json
{
  "mcpServers": {
    "cesium": {
      "command": "npx",
      "args": ["-y", "cesium-mcp-runtime"]
    }
  }
}

MCP 工具(58 + 2 元工具)

工具按 12 个工具集 组织。默认启用 4 个核心工具集(约 31 个工具)。设置 CESIUM_TOOLSETS=all 启用全部,或由 AI 在运行时动态发现和激活。

工具集

工具集工具数默认启用描述
view8相机视角控制 + 视点书签 + 场景导出
entity10核心实体操作 + 批量、查询与属性查看
layer8图层管理(GeoJSON、Schema、样式、底图)
interaction3截图、高亮与测量
camera4高级相机控制(环绕、注视)
entity-ext7扩展实体类型(盒体、柱体、墙等)
animation8动画系统(路径点、时钟、追踪、光照)
tiles53D Tiles、地形、影像服务、CZML 与 KML
trajectory1轨迹回放
heatmap1热力图可视化
scene2场景选项与后处理效果
geolocation1地理编码 — 将地址/地名转换为坐标(Nominatim/OSM)

动态发现

all 模式下,始终注册两个元工具:

工具描述
list_toolsets列出所有工具集及其启用状态
enable_toolset在运行时动态启用一个工具集

视图

flyTo

相机飞行到指定位置(带动画过渡)。

参数类型必填默认值说明
longitudenumber经度(-180 ~ 180)
latitudenumber纬度(-90 ~ 90)
heightnumber50000相机高度(米)
headingnumber0航向角(度),0 = 正北
pitchnumber-45俯仰角(度),-90 = 正下方
durationnumber2飞行动画时长(秒)

setView

瞬间切换到指定视角(无动画)。

参数类型必填默认值说明
longitudenumber经度(-180 ~ 180)
latitudenumber纬度(-90 ~ 90)
heightnumber50000高度(米)
headingnumber0航向角(度)
pitchnumber-90俯仰角(度)
rollnumber0翻滚角(度)

getView

获取当前相机状态。无参数。

返回: { longitude, latitude, height, heading, pitch, roll }

zoomToExtent

缩放适配到地理包围盒。

参数类型必填默认值说明
westnumber西边界经度
southnumber南边界纬度
eastnumber东边界经度
northnumber北边界纬度
durationnumber2动画时长(秒)

saveViewpoint

将当前相机状态保存为命名视点书签。

参数类型必填默认值说明
namestring视点书签名称

返回值: 保存的 ViewState 对象。

loadViewpoint

恢复先前保存的视点书签。

参数类型必填默认值说明
namestring视点书签名称
durationnumber0飞行时长(秒,0 = 立即跳转)

返回值: 恢复的 ViewState,未找到则报错。

listViewpoints

列出所有已保存的视点书签。无参数。

返回值: [{ name, state: ViewState }]

exportScene

将当前场景中的所有实体和图层导出为结构化 JSON 快照。

无参数。

返回值: { entities: [...], layers: [...], camera: ViewState }

实体

addMarker

添加点标记,可附加标注。返回 entityId

参数类型必填默认值说明
longitudenumber经度(-180 ~ 180)
latitudenumber纬度(-90 ~ 90)
labelstring标注文本
colorstring"#3B82F6"CSS 颜色
sizenumber12点大小(像素)
idstring自动自定义图层 ID

addLabel

为 GeoJSON 要素添加文本标注。

参数类型必填默认值说明
dataobjectGeoJSON FeatureCollection
fieldstring标注字段名
styleobject标注样式(font, fillColor, outlineColor, scale)

addModel

在指定位置放置 3D 模型(glTF/GLB)。返回 entityId

参数类型必填默认值说明
longitudenumber经度
latitudenumber纬度
heightnumber0高度(米)
urlstringglTF/GLB 模型 URL
scalenumber1缩放比例
headingnumber0航向角(度)
pitchnumber0俯仰角(度)
rollnumber0翻滚角(度)
labelstring模型标注

addPolygon

添加多边形区域。返回 entityId

参数类型必填默认值说明
coordinatesnumber[][]外环坐标 [[lon, lat, height?], ...]
colorstring"#3B82F6"填充颜色
outlineColorstring"#FFFFFF"描边颜色
opacitynumber0.6透明度(0–1)
extrudedHeightnumber拉伸高度(米)
clampToGroundbooleantrue是否贴地
labelstring标注文本

addPolyline

添加折线。返回 entityId

参数类型必填默认值说明
coordinatesnumber[][]坐标 [[lon, lat, height?], ...]
colorstring"#3B82F6"线条颜色
widthnumber3线宽(像素)
clampToGroundbooleantrue是否贴地
labelstring标注文本

updateEntity

更新已有实体属性。

参数类型必填默认值说明
entityIdstring要更新的实体 ID
positionobject新位置 { longitude, latitude, height? }
labelstring新标注
colorstring新颜色
scalenumber新缩放
showboolean可见性

removeEntity

按 ID 移除单个实体。

参数类型必填默认值说明
entityIdstring要移除的实体 ID

batchAddEntities

在一次调用中添加多个不同类型的实体。

参数类型必填默认值说明
entitiesobject[]实体定义数组

每个实体对象必须包含 type 字段("marker", "polyline", "polygon", "model", "label", "billboard", "box", "cylinder", "ellipse", "rectangle", "wall", "corridor")以及该实体类型对应的参数。

返回值: { entityIds: string[], errors: string[] }

queryEntities

搜索和筛选场景中的实体。

参数类型必填默认值说明
namestring按名称筛选(模糊匹配,不区分大小写)
typestring按类型筛选("point", "billboard", "label", "model", "polyline", "polygon"
bboxnumber[]包围盒筛选 [west, south, east, north]

返回值: [{ entityId, name?, type, position? }]

getEntityProperties

获取指定实体的所有属性。

参数类型必填默认值说明
entityIdstring实体 ID

返回值: { entityId, name, type, position?, properties }

图层

addGeoJsonLayer

加载 GeoJSON 数据作为图层。支持内联数据和 URL 加载两种方式。

参数类型必填默认值说明
dataobjectGeoJSON FeatureCollection(内联数据)
urlstringGeoJSON 文件 URL(浏览器端加载)
idstring自动图层 ID
namestring显示名称
styleobject样式配置(color, opacity, pointSize, strokeWidth, randomColor, gradient, choropleth, category)

dataurl 至少提供其一。

listLayers

列出当前所有图层。无参数。

返回: [{ id, name, type, visible, color }]

removeLayer

按 ID 移除图层。

参数类型必填默认值说明
idstring图层 ID

clearAll

移除所有图层、实体和数据源。无参数。

setLayerVisibility

切换图层可见性。

参数类型必填默认值说明
idstring图层 ID
visibleboolean是否可见

updateLayerStyle

修改图层样式。

参数类型必填默认值说明
layerIdstring图层 ID
labelStyleobject标注样式(font, fillColor, outlineColor, outlineWidth, scale)
layerStyleobject图层样式(color, opacity, strokeWidth, pointSize)
tileStyleobject3D Tiles 样式(Cesium3DTileStyle 表达式:color, show, pointSize, meta)

getLayerSchema

获取图层属性字段结构(GeoJSON DataSource 或 3D Tiles 批量表)。

参数类型必填默认值说明
layerIdstring图层 ID

返回值: { layerId, layerName, entityCount, fields: [{ name, type, sample? }] }

setBasemap

切换底图影像。

参数类型必填默认值说明
basemapstring"dark" | "satellite" | "standard"

相机

lookAtTransform

环绕式相机注视目标位置。

参数类型必填默认值说明
longitudenumber目标经度
latitudenumber目标纬度
heightnumber0目标高度(米)
headingnumber0相机航向角(度)
pitchnumber-45相机俯仰角(度)
rangenumber1000距目标距离(米)

startOrbit

开始相机环绕旋转。

参数类型必填默认值说明
speednumber0.005旋转速度(弧度/帧)
clockwisebooleantrue旋转方向

stopOrbit

停止环绕动画。无参数。

setCameraOptions

配置相机控制器选项。

参数类型必填默认值说明
enableRotateboolean启用旋转
enableTranslateboolean启用平移
enableZoomboolean启用缩放
enableTiltboolean启用倾斜
enableLookboolean启用环视
minimumZoomDistancenumber最小缩放距离(米)
maximumZoomDistancenumber最大缩放距离(米)
enableInputsboolean启用/禁用所有输入

扩展实体类型

addBillboard

在指定位置添加图片图标。

参数类型必填默认值说明
longitudenumber经度
latitudenumber纬度
heightnumber0高度(米)
imagestring图片 URL
namestring名称
scalenumber1.0缩放
colorColorInput着色
pixelOffset{x, y}像素偏移
heightReferencestring"NONE" | "CLAMP_TO_GROUND" | "RELATIVE_TO_GROUND"

addBox

添加 3D 盒体。

参数类型必填默认值说明
longitudenumber经度
latitudenumber纬度
heightnumber0高度(米)
dimensionsobject尺寸 { width, length, height }(米)
namestring名称
materialMaterialInput材质
outlinebooleantrue显示轮廓
outlineColorColorInput轮廓颜色
fillbooleantrue显示填充
orientationobject方向 { heading, pitch, roll }(度)

addCorridor

添加走廊(带宽度的路径)。

参数类型必填默认值说明
positionsPositionDegrees[]位置数组 [{ longitude, latitude, height? }]
widthnumber宽度(米)
namestring名称
materialMaterialInput材质
cornerTypestring"ROUNDED" | "MITERED" | "BEVELED"
heightnumber离地高度
extrudedHeightnumber拉伸高度

addCylinder

添加圆柱体或圆锥体。

参数类型必填默认值说明
longitudenumber经度
latitudenumber纬度
heightnumber0高度(米)
lengthnumber柱体高度(米)
topRadiusnumber顶部半径(米)
bottomRadiusnumber底部半径(米)
namestring名称
materialMaterialInput材质
outlinebooleantrue显示轮廓
slicesnumber128切片数

addEllipse

添加椭圆。

参数类型必填默认值说明
longitudenumber中心经度
latitudenumber中心纬度
heightnumber0高度(米)
semiMajorAxisnumber长半轴(米)
semiMinorAxisnumber短半轴(米)
namestring名称
materialMaterialInput材质
extrudedHeightnumber拉伸高度
rotationnumber旋转角(弧度)
outlineboolean显示轮廓

addRectangle

添加矩形。

参数类型必填默认值说明
westnumber西边界经度
southnumber南边界纬度
eastnumber东边界经度
northnumber北边界纬度
namestring名称
materialMaterialInput材质
heightnumber高度
extrudedHeightnumber拉伸高度
outlineboolean显示轮廓

addWall

沿路径添加墙体。

参数类型必填默认值说明
positionsPositionDegrees[]位置数组 [{ longitude, latitude, height? }]
namestring名称
minimumHeightsnumber[]各位置最小高度
maximumHeightsnumber[]各位置最大高度
materialMaterialInput材质
outlineboolean显示轮廓

动画

createAnimation

创建基于时间的路径动画(实体沿路径移动)。

参数类型必填默认值说明
waypointsobject[][{ longitude, latitude, height?, time }],time 为 ISO 8601
namestring动画名称
modelUristringglTF URL 或预设:cesium_man, cesium_air, ground_vehicle, cesium_drone
showPathbooleantrue显示轨迹线
pathWidthnumber2轨迹宽度(像素)
pathColorstring"#00FF00"轨迹颜色
pathLeadTimenumber0前导时间(秒)
pathTrailTimenumber1e10尾迹时间(秒)
multipliernumber1时钟倍速
shouldAnimatebooleantrue自动开始

controlAnimation

播放或暂停动画。

参数类型必填默认值说明
actionstring"play" | "pause"

removeAnimation

删除动画实体。

参数类型必填默认值说明
entityIdstring要删除的动画实体 ID

listAnimations

列出所有活跃动画。无参数。

返回: [{ entityId, name?, startTime, stopTime, exists }]

updateAnimationPath

更新动画路径的可视属性。

参数类型必填默认值说明
entityIdstring动画实体 ID
widthnumber路径宽度(像素)
colorstring路径颜色
leadTimenumber前导时间(秒)
trailTimenumber尾迹时间(秒)
showboolean显示/隐藏路径

trackEntity

相机追踪实体,或停止追踪。

参数类型必填默认值说明
entityIdstring要追踪的实体 ID(省略则停止追踪)
headingnumber相机航向角(度)
pitchnumber-30相机俯仰角(度)
rangenumber500相机距离(米)

controlClock

配置 Cesium 时钟。

参数类型必填默认值说明
actionstring"configure" | "setTime" | "setMultiplier"
startTimestringISO 8601 开始时间
stopTimestringISO 8601 结束时间
currentTimestringISO 8601 当前时间
timestring跳转时间(用于 setTime)
multipliernumber时钟倍速
shouldAnimateboolean是否播放
clockRangestring"UNBOUNDED" | "CLAMPED" | "LOOP_STOP"

setGlobeLighting

启用/禁用地球光照和大气效果。

参数类型必填默认值说明
enableLightingboolean启用地球光照
dynamicAtmosphereLightingboolean动态大气光照
dynamicAtmosphereLightingFromSunboolean使用太阳位置计算大气光照

3D 数据

load3dTiles

从 URL 或 Cesium Ion 资产 ID 加载 3D Tileset(建筑白膜、城市模型等)。

参数类型必填默认值说明
urlstringtileset.json URL
ionAssetIdnumberCesium Ion 资产 ID
idstring自动图层 ID
namestring显示名称
maximumScreenSpaceErrornumber16最大屏幕空间误差(值越小越精细)
heightOffsetnumber高度偏移(米)

urlionAssetId 至少提供其一。

loadTerrain

设置地形提供者。

参数类型必填默认值说明
providerstring"flat" | "arcgis" | "cesiumion"
urlstring自定义地形服务 URL
cesiumIonAssetIdnumberCesium Ion 资产 ID

loadImageryService

从 URL 或 Cesium Ion 资产 ID 添加影像图层。

参数类型必填默认值说明
urlstring影像服务 URL
serviceTypestring"wms" | "wmts" | "xyz" | "arcgis_mapserver" | "ion"
ionAssetIdnumberCesium Ion 资产 ID
idstring自动图层 ID
namestring显示名称
layerNamestringWMS/WMTS 图层名
opacitynumber1.0透明度(0–1)

url + serviceTypeionAssetId 至少提供其一。

loadCzml

加载 CZML 时间动态数据源(内联数据数组或远程 URL)。

参数类型必填默认值说明
dataunknown[]CZML 数据包数组(内联)
urlstringCZML 文件 URL
idstring自动图层 ID
namestring显示名称
sourceUristring相对引用的基础 URI
clampToGroundbooleanfalse是否贴地

dataurl 至少提供其一。

loadKml

加载 KML/KMZ 数据源(内联字符串或远程 URL)。

参数类型必填默认值说明
datastringKML 文档字符串(内联)
urlstringKML/KMZ 文件 URL
idstring自动图层 ID
namestring显示名称
clampToGroundbooleanfalse是否贴地

dataurl 至少提供其一。

交互

screenshot

截取当前地球视图。无参数。

返回: Base64 PNG 图片(MCP image 内容类型)。

highlight

高亮指定图层的要素。

参数类型必填默认值说明
layerIdstring图层 ID
featureIndexnumber要素索引(省略则高亮全部)
colorstring"#FFFF00"高亮颜色

measure

测量地球表面上两点间的距离或多点围成的面积。

参数类型必填默认值说明
typestring"distance" | "area"
coordinatesnumber[][]坐标点 [[lon, lat], ...](距离需 2 个点,面积需 3+ 个点)

返回值: { type, value, unit, coordinates }

场景

setSceneOptions

配置场景环境(雾效、大气、阴影、太阳、月亮、背景色、深度测试)。

参数类型必填默认值说明
fogEnabledboolean启用/禁用雾效
fogDensitynumber0.0002雾密度(0.0–1.0)
fogMinimumBrightnessnumber最小雾亮度(0.0–1.0)
skyAtmosphereShowboolean显示天空大气
skyAtmosphereHueShiftnumber天空色调偏移(-1.0–1.0)
skyAtmosphereSaturationShiftnumber天空饱和度偏移(-1.0–1.0)
skyAtmosphereBrightnessShiftnumber天空亮度偏移(-1.0–1.0)
groundAtmosphereShowboolean显示地面大气
shadowsEnabledboolean启用阴影
shadowsSoftShadowsboolean使用柔和阴影
shadowsDarknessnumber阴影深度(0.0–1.0)
sunShowboolean显示太阳
sunGlowFactornumber1.0太阳光晕系数
moonShowboolean显示月亮
depthTestAgainstTerrainboolean地形深度测试
backgroundColorstring背景颜色(CSS 格式)

setPostProcess

配置后处理效果(泛光、环境光遮蔽 SSAO、抗锯齿 FXAA)。

参数类型必填默认值说明
bloomboolean启用泛光效果
bloomContrastnumber128泛光对比度
bloomBrightnessnumber-0.3泛光亮度
bloomDeltanumber1.0泛光 delta
bloomSigmanumber3.78泛光 sigma
bloomStepSizenumber5.0泛光步长
bloomGlowOnlyboolean仅显示光晕
ambientOcclusionboolean启用环境光遮蔽(SSAO)
aoIntensitynumber3.0AO 强度
aoBiasnumber0.1AO 偏差
aoLengthCapnumber0.26AO 长度上限
aoStepSizenumber1.95AO 步长
fxaaboolean启用 FXAA 抗锯齿

其他

playTrajectory trajectory

沿路径播放动画。

参数类型必填默认值说明
coordinatesnumber[][]路径坐标 [[lon, lat, alt?], ...]
idstring自动轨迹图层 ID
namestring名称
durationSecondsnumber10动画时长(秒)
trailSecondsnumber2尾迹长度(秒)
labelstring移动体标签

addHeatmap heatmap

从点数据创建热力图。

参数类型必填默认值说明
dataobjectGeoJSON Point FeatureCollection
radiusnumber30影响半径(像素)

geocode geolocation

将地址、地标或地名转换为地理坐标(经纬度)。使用 OpenStreetMap Nominatim 免费服务,无需 API Key。支持 HTTPS_PROXY / HTTP_PROXY / ALL_PROXY 环境变量配置代理。

参数类型必填默认值说明
addressstring地址、地标或地名,如 "故宫"、"Eiffel Tower"、"东京塔"
countryCodestring两位 ISO 国家代码限制搜索范围(如 CNUSJP

返回: { success, longitude, latitude, displayName, boundingBox }

MCP 资源(2 个)

URI描述
cesium://scene/camera当前相机状态(位置、方向)
cesium://scene/layers所有已加载图层及其元数据列表

资源为只读,AI 智能体可轮询获取以进行上下文感知决策。

环境变量

变量默认值描述
CESIUM_WS_PORT9100Bridge 连接的 WebSocket 服务器端口
DEFAULT_SESSION_IDdefaultMCP 调用路由到哪个浏览器会话
CESIUM_TOOLSETS(未设置)工具集激活:省略使用默认集,all 启用全部,或逗号分隔列表
OSM_USER_AGENTcesium-mcp-runtime/1.0Nominatim geocode 请求的 User-Agent 头
CESIUM_LOCALEen工具描述语言:en(英文,默认)或 zh-CN(中文)

会话路由

多个浏览器标签页可同时连接。每个 Bridge 实例使用 sessionId 注册:

标签页 1:sessionId = "project-a"
标签页 2:sessionId = "project-b"

通过 MCP URL 路由

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

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

推荐用于第三方集成(如 Dify),无需在提示词或工具参数中注入 sessionId。

路由优先级

  1. 工具参数中的 sessionId(单次调用级覆盖)
  2. MCP HTTP URL 中的 ?session=xxx(连接级)
  3. DEFAULT_SESSION_ID 环境变量
  4. 第一个已连接的浏览器(兜底)

HTTP Push API

对于非 MCP 集成(如 FastAPI 后端),Runtime 暴露 HTTP 端点:

bash
curl -X POST http://localhost:9100/push \
  -H "Content-Type: application/json" \
  -d '{"action": "flyTo", "params": {"longitude": 2.29, "latitude": 48.86, "height": 1000}}'

公共类型

ColorInput

typescript
type ColorInput =
  | string                        // CSS 颜色:"#FF0000"、"red"、"rgba(255,0,0,0.5)"
  | { red: number; green: number; blue: number; alpha?: number }  // RGBA 0–1

MaterialInput

typescript
type MaterialInput =
  | ColorInput
  | {
      type: "color" | "image" | "checkerboard" | "stripe" | "grid"
      color?: ColorInput
      image?: string
      evenColor?: ColorInput
      oddColor?: ColorInput
      orientation?: "horizontal" | "vertical"
      cellAlpha?: number
    }

PositionDegrees

typescript
type PositionDegrees = {
  longitude: number   // 度
  latitude: number    // 度
  height?: number     // 米
}

Released under the MIT License.