示例
最小示例
仓库中包含完整的单文件示例 examples/minimal/。
git clone https://github.com/gaopengbin/cesium-mcp.git
cd cesium-mcp/examples/minimal
# 在浏览器中打开 index.html常见 AI 智能体交互
当 CesiumJS 应用连接好 Bridge、Runtime 也在运行后,你可以这样和 AI 智能体对话:
相机控制
"飞到长城,高度 5000 米"
智能体调用 flyTo,参数为 { longitude: 116.57, latitude: 40.43, height: 5000 }。
"俯瞰上海浦东"
智能体调用 flyTo,参数为 { longitude: 121.5, latitude: 31.24, height: 10000, pitch: -90 }。
图层管理
"加载 USGS 地震数据"
{
"tool": "addGeoJsonLayer",
"params": {
"url": "https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_day.geojson",
"name": "USGS Earthquakes"
}
}"加载 GeoJSON 并按人口渐变着色"
{
"tool": "addGeoJsonLayer",
"params": {
"url": "https://example.com/provinces.geojson",
"name": "省份人口",
"style": {
"gradient": {
"field": "population",
"stops": [
{ "value": 0, "color": "#ffffcc" },
{ "value": 50000000, "color": "#fd8d3c" },
{ "value": 100000000, "color": "#bd0026" }
]
},
"strokeWidth": 2
}
}
}"获取已加载 GeoJSON 图层的字段结构"
{
"tool": "getLayerSchema",
"params": { "layerId": "geojson_123456" }
}返回: { layerId: "geojson_123456", layerName: "省份", entityCount: 34, fields: [{ name: "name", type: "string", sample: "北京" }, ...] }
> "添加一个人口密度热力图"
```json
{
"tool": "addHeatmap",
"params": {
"points": [
{ "longitude": 116.4, "latitude": 39.9, "value": 21540000 },
{ "longitude": 121.47, "latitude": 31.23, "value": 24280000 }
],
"name": "人口密度",
"radius": 50
}
}3D 数据
"加载纽约市 3D 建筑"
{
"tool": "load3dTiles",
"params": {
"url": "https://assets.cesium.com/96188/tileset.json",
"name": "NYC Buildings"
}
}"把 3D 建筑染成黄色"
{
"tool": "updateLayerStyle",
"params": {
"layerId": "3dtiles_xxx",
"tileStyle": {
"color": "color('yellow')"
}
}
}"加载 CZML 动画"
{
"tool": "loadCzml",
"params": {
"url": "https://example.com/satellite-orbit.czml",
"name": "卫星轨道"
}
}"加载 KML 文件"
{
"tool": "loadKml",
"params": {
"url": "https://example.com/landmarks.kml",
"name": "地标"
}
}实体创建
"在东方明珠塔位置添加一个红色标记"
{
"tool": "addMarker",
"params": {
"longitude": 121.4956,
"latitude": 31.2416,
"name": "东方明珠塔",
"color": "#FF0000"
}
}"画一条从北京到上海的折线"
{
"tool": "addPolyline",
"params": {
"positions": [
{ "longitude": 116.4, "latitude": 39.9 },
{ "longitude": 121.47, "latitude": 31.23 }
],
"name": "京沪线",
"color": "#00BFFF",
"width": 3
}
}轨迹动画
"创建一个从北京飞到上海的飞行轨迹"
{
"tool": "playTrajectory",
"params": {
"positions": [
{ "longitude": 116.4, "latitude": 39.9, "height": 10000 },
{ "longitude": 118.8, "latitude": 36.0, "height": 10000 },
{ "longitude": 121.47, "latitude": 31.23, "height": 10000 }
],
"duration": 10,
"modelUrl": "https://assets.cesium.com/831744/CesiumAir.glb",
"name": "京沪航线"
}
}分析
"截一张当前视图的图"
智能体调用 screenshot,返回 base64 编码的图片。
"当前加载了哪些图层?"
智能体读取 cesium://scene/layers 资源。
测量
"测量北京到上海的距离"
{
"tool": "measure",
"params": {
"type": "distance",
"coordinates": [[116.4, 39.9], [121.47, 31.23]]
}
}场景效果
"开启泛光效果"
{
"tool": "setPostProcess",
"params": {
"bloom": true,
"bloomBrightness": -0.1
}
}"开启阴影并隐藏月亮"
{
"tool": "setSceneOptions",
"params": {
"shadowsEnabled": true,
"moonShow": false
}
}GeoAgent 集成
如果你正在构建完整的 GIS AI 应用,可以将 cesium-mcp-runtime 嵌入你的智能体工作流。Runtime 提供的 HTTP Push API 允许后端系统直接向浏览器推送命令:
curl -X POST http://localhost:9100/api/command \
-H "Content-Type: application/json" \
-d '{"action": "flyTo", "params": {"longitude": 116.4, "latitude": 39.9}}'