Every tool returns a { success } object and hands back an entityId or layer id you carry into the next call, so a session builds up state you can query and clear rather than firing blind commands. The toolset split is the real economy here: 62 tools would swamp a model's context, so only four groups load by default and the rest come on by name when a request actually reaches for terrain, animation or 3D Tiles.
An MCP server that controls a CesiumJS Viewer: 62 command tools grouped into 12 toolsets, plus list_toolsets and enable_toolset for turning groups on as you need them. It ships its own browser Viewer and the bridge that runs the commands, so the default path is one package.
- Camera moved either way — flyTo animates to a point, setView jumps there instantly, getView reads back longitude, latitude, height, heading, pitch and roll, and zoomToExtent frames a west/south/east/north box
- Viewpoints saved by name in the page with saveViewpoint, loadViewpoint and listViewpoints, and the whole view, layer and entity state dumped to JSON via exportScene
- Entities placed and edited: addMarker, addLabel, addModel for glTF/GLB, addPolygon and addPolyline; each returns an entityId you keep for updateEntity or removeEntity, and batchAddEntities does a set in one call
- queryEntities finds them by name, type or geographic extent, and getEntityProperties reads one back in full
- GeoJSON added as a styled layer with addGeoJsonLayer, or as Cesium primitives with addGeoJsonPrimitive when the dataset is large enough that entities would bog the browser down
- Layers managed as a set — listLayers, getLayerSchema for fields and counts, setLayerVisibility, updateLayerStyle, removeLayer, and clearAll to wipe the scene
- setBasemap switches the base imagery, highlight picks out one feature or a whole layer, measure returns distance or area with its unit, and screenshot captures the view as a base64 PNG
- Toolsets you turn on only when the job needs them: camera (orbit, lookAt), entity-ext (box, cylinder, wall), animation (waypoints, clock, tracking), tiles (3D Tiles, Gaussian Splats, terrain, imagery, CZML, KML), trajectory, heatmap, scene, and geolocation for turning a place name into coordinates via Nominatim/OSM
- list_toolsets and enable_toolset let the model discover and switch on a group at runtime, so a normal request stays under a couple dozen tools instead of carrying all 62
Node with npx, and nothing to sign up for on the default path: npx -y cesium-mcp-runtime starts the server and serves the built-in Viewer at http://localhost:9100/, with CesiumJS assets loading from the official Cesium CDN. Four core toolsets (30 tools) are on out of the box; set CESIUM_TOOLSETS=all to load every group. A separate cesium-mcp-bridge install is only for driving your own CesiumJS page rather than the bundled Viewer, and a Cesium Ion credential is optional, used only by the scene toolset.
One command — npx -y cesium-mcp-runtime
