cesium-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CESIUM_TOOLSETS | No | Comma-separated list of toolset groups to enable (e.g. camera,bindbindentity,bindlayer). Use 'all' for all 43 tools. | all |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| flyToA | Animate the camera to a geographic location. Use for visible navigation requested by the user. Returns { success: boolean, message?: string, error?: string }. |
| setViewA | Set the camera position immediately without animation. Use for deterministic setup or instant view changes. Returns { success: boolean, message?: string, error?: string }. |
| getViewA | Get the current camera position and orientation. Returns { success, data: { longitude, latitude, height, heading, pitch, roll }, message? }. |
| zoomToExtentA | Animate the camera to a west/south/east/north bounding box. Returns { success: boolean, data?: unknown, message?: string, error?: string }. |
| saveViewpointA | Save the current camera state under a page-local name. Returns { success: boolean, data?: unknown, message?: string, error?: string }. |
| loadViewpointA | Restore a previously saved page-local camera state. Returns { success: boolean, data?: unknown, message?: string, error?: string }. |
| listViewpointsA | List camera viewpoints saved in the current page. Returns { success: boolean, data?: unknown, message?: string, error?: string }. |
| exportSceneA | Export the current view, layer, and entity state as JSON. Returns { success: boolean, data?: unknown, message?: string, error?: string }. |
| addMarkerA | Add a point marker at geographic coordinates. Returns { success, data: { entityId }, message? }; keep entityId for removeEntity. |
| addLabelC | Add property-based text labels for GeoJSON features. Returns { success, data: { labelCount: integer }, message? }. |
| addModelA | Add a glTF or GLB model at geographic coordinates. Returns { success: boolean, data?: unknown, message?: string, error?: string }. |
| addPolygonA | Draw a polygon area from geographic coordinate tuples. Returns { success, data: { entityId }, message? }; keep entityId for removeEntity. |
| addPolylineA | Draw a path or route from geographic coordinate tuples. Returns { success, data: { entityId }, message? }; keep entityId for removeEntity. |
| updateEntityA | Update the position, appearance, label, or visibility of an entity. Returns { success: boolean, data?: unknown, message?: string, error?: string }. |
| removeEntityA | Remove one entity created by an entity tool. Returns { success, message? } or { success: false, error } when entityId is not found. |
| batchAddEntitiesC | Add multiple supported entities in one page operation. Returns { success: boolean, data?: unknown, message?: string, error?: string }. |
| queryEntitiesA | Query page entities by name, type, or geographic extent. Returns { success: boolean, data?: unknown, message?: string, error?: string }. |
| getEntityPropertiesA | Read the properties and graphics metadata for one entity. Returns { success: boolean, data?: unknown, message?: string, error?: string }. |
| addGeoJsonLayerB | Add a styled GeoJSON Point, LineString, or Polygon layer. Returns { success, data: { id, name, type, visible, color, dataRefId? }, message? }; use id with highlight. |
| addGeoJsonPrimitiveA | Render GeoJSON as Cesium primitives for large browser datasets. Returns { success: boolean, data?: unknown, message?: string, error?: string }. |
| listLayersA | List all layers currently managed by the page. Returns { success: boolean, data?: unknown, message?: string, error?: string }. |
| getLayerSchemaA | Inspect fields, entity counts, and metadata for a layer. Returns { success: boolean, data?: unknown, message?: string, error?: string }. |
| removeLayerA | Remove a managed layer from the page. Returns { success: boolean, data?: unknown, message?: string, error?: string }. |
| clearAllA | Clear all layers, entities, animations, and trajectories from the scene. Returns { success, data: { removedLayers, removedEntities }, message? }. |
| setLayerVisibilityA | Show or hide a managed layer. Returns { success: boolean, data?: unknown, message?: string, error?: string }. |
| updateLayerStyleB | Update vector, imagery, primitive, or 3D Tiles styling for a layer. Returns { success: boolean, data?: unknown, message?: string, error?: string }. |
| setBasemapA | Switch the visible basemap style. Returns { success, data: { basemap }, message? }. |
| screenshotA | Capture the current Cesium map view as a PNG image. Returns { success, data: { dataUrl, width, height }, message? }; dataUrl is a base64 PNG. |
| highlightA | Highlight one feature or every feature in a GeoJSON layer. Returns { success: boolean, message?: string, error?: string }. |
| measureA | Measure distance or area between geographic coordinate tuples. Returns { success, data: { mode, value, unit, segments?, id? }, message? }. |
| storeResourceA | Store GeoJSON, CZML, or JSON once and return a compact resourceId for later tool calls. |
| listResourcesA | List resource metadata for the current browser or MCP session without returning payloads. |
| deleteResourceB | Delete one session-scoped resource by resourceId. |
| list_toolsetsA | List all available tool groups and their enabled status. Call this to discover additional capabilities before asking the user to configure anything. |
| enable_toolsetA | Enable a tool group to make its tools available. Call list_toolsets first to see available groups. |
| listSessionsA | List all connected browser sessions (ID and connection state) for multi-browser routing |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| cesium-quickstart | Quick reference for using Cesium MCP tools |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| camera | 当前相机状态(经纬度、高度、角度) |
| layers | 当前已加载的图层列表(ID、名称、类型、可见性) |
TDQS
Scored across 36 tools
Most tools target clearly distinct resources and actions: the entity creators (addMarker, addModel, addPolygon, addPolyline, addLabel) each handle a different geometry, and camera tools (flyTo, setView, zoomToExtent, loadViewpoint) are differentiated by animation vs. instant vs. bbox vs. named restore. Minor overlap exists between addGeoJsonLayer and addGeoJsonPrimitive, and between queryEntities and getEntityProperties, but descriptions largely disambiguate them.
The server mixes camelCase (exportScene, listSessions, removeLayer, getLayerSchema) with snake_case (list_toolsets, enable_toolset, addGeoJsonLayer, storeResource) within the same tool list. There is no single predictable convention an agent can rely on, though individual names remain readable.
36 tools is well above the 25-tool threshold for a heavy surface. The toolset gating system (list_toolsets/enable_toolset) is a thoughtful mitigation, but the exposed set is still large and increases selection cost.
Coverage is broad across camera control, entity add/update/remove/query, layer management, resource storage, viewpoints, screenshots, highlighting, and measurement. Gaps remain: no tools to add imagery/terrain layers or to create animations/trajectories despite clearAll referencing them, though these may sit behind disabled toolsets.