Labsco
MCP SERVER

CesiumJS 3D Globe Control

by gaopengbin

Drive a CesiumJS 3D globe by asking — fly the camera, drop markers, draw routes, load GeoJSON and 3D Tiles, take a screenshot — without touching the Viewer's API.

Geospatial & Mapping DataVerified
Summary
The globe stays in the browser; the assistant just steers it.

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.

What it is

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.

What you get
  • 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
Requirements

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.

Setup effort

One command — npx -y cesium-mcp-runtime