Skip to content

cesium-mcp-runtime ​

MCP Server (stdio) — 62 command tools (12 toolsets) + 2 resources, with dynamic discovery.

npm

Release channels

  • Stable: npx -y cesium-mcp-runtime → npm latest

The stable release supports MCP 2025-11-25 and 2026-07-28, uses the stable TypeScript SDK v2, and passes the official server-stateless conformance scenario (28/28).

Installation & Run ​

bash
npx -y cesium-mcp-runtime

Open http://localhost:9100/ for the included Viewer. The default path does not require a separate Bridge package.

Or install globally:

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

MCP Client Configuration ​

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 Tools (62 command tools + 2 discovery meta-tools) ​

Tools are organized into 12 toolsets. By default, 4 core toolsets are enabled (30 tools). Set CESIUM_TOOLSETS=all for everything, or let the AI discover and activate toolsets dynamically. Shared titles, behavior annotations, localized descriptions, defaults, input validation, advertised output schemas, and structured results come from the canonical JSON Schemas in cesium-mcp-contracts. Tool calls retain text content for older clients.

The Runtime npm artifact includes the browser Bridge bundle served by /bridge.js. The built-in Viewer does not depend on an unpkg fallback, while CesiumJS assets continue to load from the official Cesium CDN.

The default MCP path therefore needs only cesium-mcp-runtime. A separate cesium-mcp-bridge installation is for custom CesiumJS pages, not built-in Viewer users.

Toolsets ​

ToolsetToolsDefaultDescription
view8YesCamera view controls + viewpoint bookmarks + scene export
entity10YesCore entity operations + batch, query & property inspection
layer9YesLayer management (GeoJSON, schema, style, basemap)
interaction3YesScreenshot, highlight & measurement
camera4—Advanced camera controls (orbit, lookAt)
entity-ext7—Extended entity types (box, cylinder, wall, etc.)
animation8—Animation system (waypoints, clock, tracking, lighting)
tiles7—3D Tiles, Gaussian Splats, terrain, imagery services, CZML & KML
trajectory1—Trajectory playback
heatmap1—Heatmap visualization
scene3—Scene options, post-processing & Runtime-only Ion credentials
geolocation1—Geocoding — convert address/place name to coordinates (Nominatim/OSM)

Dynamic Discovery ​

When not in all mode, two meta-tools are always available:

ToolDescription
list_toolsetsList all toolset groups with enabled status
enable_toolsetDynamically enable a toolset at runtime

View ​

flyTo ​

Animate camera to a position with smooth transition.

ParameterTypeRequiredDefaultDescription
longitudenumber✅—Longitude (-180 to 180)
latitudenumber✅—Latitude (-90 to 90)
heightnumber—50000Camera height in meters
headingnumber—0Heading in degrees, 0 = North
pitchnumber—-45Pitch in degrees, -90 = straight down
durationnumber—2Flight animation duration in seconds

setView ​

Instantly set camera position and orientation (no animation).

ParameterTypeRequiredDefaultDescription
longitudenumber✅—Longitude (-180 to 180)
latitudenumber✅—Latitude (-90 to 90)
heightnumber—50000Height in meters
headingnumber—0Heading in degrees
pitchnumber—-90Pitch in degrees
rollnumber—0Roll in degrees

getView ​

Return current camera position and orientation. No parameters.

Returns: { longitude, latitude, height, heading, pitch, roll }

zoomToExtent ​

Fit view to a geographic bounding box.

ParameterTypeRequiredDefaultDescription
westnumber✅—West boundary longitude
southnumber✅—South boundary latitude
eastnumber✅—East boundary longitude
northnumber✅—North boundary latitude
durationnumber—2Animation duration in seconds

saveViewpoint ​

Save the current camera state as a named viewpoint bookmark.

ParameterTypeRequiredDefaultDescription
namestring✅—Viewpoint bookmark name

Returns: The saved ViewState object.

loadViewpoint ​

Restore a previously saved viewpoint bookmark.

ParameterTypeRequiredDefaultDescription
namestring✅—Viewpoint bookmark name
durationnumber—0Flight duration in seconds (0 = instant)

Returns: The restored ViewState, or error if not found.

listViewpoints ​

List all saved viewpoint bookmarks. No parameters.

Returns: [{ name, state: ViewState }]

exportScene ​

Export all entities and layers in the current scene as a structured JSON snapshot.

No parameters.

Returns: { entities: [...], layers: [...], camera: ViewState }

Entity ​

addMarker ​

Add a point marker with optional label. Returns entityId.

ParameterTypeRequiredDefaultDescription
longitudenumber✅—Longitude (-180 to 180)
latitudenumber✅—Latitude (-90 to 90)
labelstring——Label text
colorstring—"#3B82F6"CSS color
sizenumber—12Point size in pixels
idstring—autoCustom layer ID

addLabel ​

Add text labels to GeoJSON features (display attribute values).

ParameterTypeRequiredDefaultDescription
dataobject✅—GeoJSON FeatureCollection
fieldstring✅—Property field name for label text
styleobject——Label style (font, fillColor, outlineColor, scale)

addModel ​

Place a 3D model (glTF/GLB) at a position. Returns entityId.

ParameterTypeRequiredDefaultDescription
longitudenumber✅—Longitude (-180 to 180)
latitudenumber✅—Latitude (-90 to 90)
heightnumber—0Height in meters
urlstring✅—glTF/GLB model URL
scalenumber—1Scale factor
headingnumber—0Heading in degrees
pitchnumber—0Pitch in degrees
rollnumber—0Roll in degrees
labelstring——Model label text

addPolygon ​

Add a polygon area with fill and outline. Returns entityId.

ParameterTypeRequiredDefaultDescription
coordinatesnumber[][]✅—Ring coordinates [[lon, lat, height?], ...]
colorstring—"#3B82F6"Fill color (CSS)
outlineColorstring—"#FFFFFF"Outline color
opacitynumber—0.6Fill opacity (0–1)
extrudedHeightnumber——Extrusion height in meters
clampToGroundboolean—trueClamp to terrain
labelstring——Polygon label text

addPolyline ​

Add a polyline (path/route). Returns entityId.

ParameterTypeRequiredDefaultDescription
coordinatesnumber[][]✅—Coordinates [[lon, lat, height?], ...]
colorstring—"#3B82F6"Line color (CSS)
widthnumber—3Line width in pixels
clampToGroundboolean—trueClamp to terrain
labelstring——Polyline label text

updateEntity ​

Update properties of an existing entity.

ParameterTypeRequiredDefaultDescription
entityIdstring✅—Entity ID to update
positionobject——New position { longitude, latitude, height? }
labelstring——New label text
colorstring——New color (CSS)
scalenumber——New scale factor
showboolean——Visibility

removeEntity ​

Remove a single entity by ID.

ParameterTypeRequiredDefaultDescription
entityIdstring✅—Entity ID to remove

batchAddEntities ​

Add multiple entities of different types in a single call.

ParameterTypeRequiredDefaultDescription
entitiesobject[]✅—Array of entity definitions

Each entity object must include a type field ("marker", "polyline", "polygon", "model", "label", "billboard", "box", "cylinder", "ellipse", "rectangle", "wall", "corridor") plus the corresponding parameters for that entity type.

Returns: { entityIds: string[], errors: string[] }

queryEntities ​

Search and filter entities in the scene.

ParameterTypeRequiredDefaultDescription
namestring——Filter by name (fuzzy match, case-insensitive)
typestring——Filter by type ("point", "billboard", "label", "model", "polyline", "polygon")
bboxnumber[]——Bounding box filter [west, south, east, north]

Returns: [{ entityId, name?, type, position? }]

getEntityProperties ​

Get all properties of a specific entity by ID.

ParameterTypeRequiredDefaultDescription
entityIdstring✅—Entity ID

Returns: { entityId, name, type, position?, properties }

Layer ​

addGeoJsonLayer ​

Load GeoJSON data as a layer with optional styling. Supports both inline data and URL loading.

ParameterTypeRequiredDefaultDescription
dataobject——GeoJSON FeatureCollection (inline data)
urlstring——URL to fetch GeoJSON from (browser-side fetch)
idstring—autoLayer ID
namestring——Display name
styleobject——Style config (color, opacity, pointSize, strokeWidth, randomColor, gradient, choropleth, category)

Either data or url must be provided.

listLayers ​

List all currently loaded layers. No parameters.

Returns: [{ id, name, type, visible, color }]

removeLayer ​

Remove a layer by ID.

ParameterTypeRequiredDefaultDescription
idstring✅—Layer ID (from listLayers)

clearAll ​

Remove all layers, entities, and data sources. No parameters.

setLayerVisibility ​

Toggle layer visibility.

ParameterTypeRequiredDefaultDescription
idstring✅—Layer ID
visibleboolean✅—Whether layer is visible

updateLayerStyle ​

Modify layer styling properties.

ParameterTypeRequiredDefaultDescription
layerIdstring✅—Layer ID
labelStyleobject——Label style (font, fillColor, outlineColor, outlineWidth, scale)
layerStyleobject——Entity layer style (color, opacity, strokeWidth, pointSize; GeoJSON thematic styles: choropleth/category/randomColor/gradient, mutually exclusive)
imageryStyleobject——Imagery visual style (alpha, brightness, contrast, hue, saturation, gamma); use setLayerVisibility for visibility
primitiveStyleobject——GeoJSON Primitive material style (color, opacity, outlineColor, outlineWidth, pointSize, lineWidth)
tileStyleobject——3D Tiles style (Cesium3DTileStyle expressions: color, show, pointSize, meta)

getLayerSchema ​

Get the property field structure of a layer (GeoJSON DataSource or 3D Tiles batch table).

ParameterTypeRequiredDefaultDescription
layerIdstring✅—Layer ID

Returns: { layerId, layerName, entityCount, fields: [{ name, type, sample? }] }

setBasemap ​

Switch the base imagery layer.

ParameterTypeRequiredDefaultDescription
basemapstring✅—"dark" | "satellite" | "standard"

Camera ​

lookAtTransform ​

Orbit-style camera aim at a target position.

ParameterTypeRequiredDefaultDescription
longitudenumber✅—Target longitude
latitudenumber✅—Target latitude
heightnumber—0Target height in meters
headingnumber—0Camera heading in degrees
pitchnumber—-45Camera pitch in degrees
rangenumber—1000Distance from target in meters

startOrbit ​

Start orbiting the camera around the current view center.

ParameterTypeRequiredDefaultDescription
speednumber—0.005Rotation speed (radians/tick)
clockwiseboolean—trueOrbit direction

stopOrbit ​

Stop the camera orbit animation. No parameters.

setCameraOptions ​

Configure camera controller options.

ParameterTypeRequiredDefaultDescription
enableRotateboolean——Enable rotation
enableTranslateboolean——Enable translation
enableZoomboolean——Enable zoom
enableTiltboolean——Enable tilt
enableLookboolean——Enable look
minimumZoomDistancenumber——Min zoom distance (meters)
maximumZoomDistancenumber——Max zoom distance (meters)
enableInputsboolean——Enable/disable all inputs

Extended Entity Types ​

addBillboard ​

Add an image icon at a position.

ParameterTypeRequiredDefaultDescription
longitudenumber✅—Longitude
latitudenumber✅—Latitude
heightnumber—0Height in meters
imagestring✅—Image URL
namestring——Billboard name
scalenumber—1.0Scale factor
colorColorInput——Tint color
pixelOffset{x, y}——Pixel offset
heightReferencestring——"NONE" | "CLAMP_TO_GROUND" | "RELATIVE_TO_GROUND"

addBox ​

Add a 3D box entity.

ParameterTypeRequiredDefaultDescription
longitudenumber✅—Longitude
latitudenumber✅—Latitude
heightnumber—0Height in meters
dimensionsobject✅—{ width, length, height } in meters
namestring——Box name
materialMaterialInput——Material (color, image, etc.)
outlineboolean—trueShow outline
outlineColorColorInput——Outline color
fillboolean—trueShow fill
orientationobject——{ heading, pitch, roll } in degrees

addCorridor ​

Add a corridor (path with width).

ParameterTypeRequiredDefaultDescription
positionsPositionDegrees[]✅—Array of { longitude, latitude, height? }
widthnumber✅—Width in meters
namestring——Corridor name
materialMaterialInput——Material
cornerTypestring——"ROUNDED" | "MITERED" | "BEVELED"
heightnumber——Height above ground
extrudedHeightnumber——Extruded height
outlineboolean——Show outline

addCylinder ​

Add a cylinder or cone.

ParameterTypeRequiredDefaultDescription
longitudenumber✅—Longitude
latitudenumber✅—Latitude
heightnumber—0Height in meters
lengthnumber✅—Cylinder height in meters
topRadiusnumber✅—Top radius in meters
bottomRadiusnumber✅—Bottom radius in meters
namestring——Name
materialMaterialInput——Material
outlineboolean—trueShow outline
slicesnumber—128Number of slices

addEllipse ​

Add an ellipse (oval).

ParameterTypeRequiredDefaultDescription
longitudenumber✅—Center longitude
latitudenumber✅—Center latitude
heightnumber—0Height in meters
semiMajorAxisnumber✅—Semi-major axis in meters
semiMinorAxisnumber✅—Semi-minor axis in meters
namestring——Name
materialMaterialInput——Material
extrudedHeightnumber——Extruded height
rotationnumber——Rotation in radians
outlineboolean——Show outline

addRectangle ​

Add a rectangle by geographic bounds.

ParameterTypeRequiredDefaultDescription
westnumber✅—West longitude
southnumber✅—South latitude
eastnumber✅—East longitude
northnumber✅—North latitude
namestring——Name
materialMaterialInput——Material
heightnumber——Height
extrudedHeightnumber——Extruded height
outlineboolean——Show outline

addWall ​

Add a wall along positions.

ParameterTypeRequiredDefaultDescription
positionsPositionDegrees[]✅—Array of { longitude, latitude, height? }
namestring——Name
minimumHeightsnumber[]——Min heights at each position
maximumHeightsnumber[]——Max heights at each position
materialMaterialInput——Material
outlineboolean——Show outline

Animation ​

createAnimation ​

Create a time-based animation with waypoints (moving entity along a path).

ParameterTypeRequiredDefaultDescription
waypointsobject[]✅—[{ longitude, latitude, height?, time }] — time is ISO 8601
namestring——Animation name
modelUristring——glTF URL or preset: cesium_man, cesium_air, ground_vehicle, cesium_drone
showPathboolean—trueShow trail path
pathWidthnumber—2Path width in pixels
pathColorstring—"#00FF00"Path color (CSS)
pathLeadTimenumber—0Path lead time in seconds
pathTrailTimenumber—1e10Path trail time in seconds
multipliernumber—1Clock speed multiplier
shouldAnimateboolean—trueAuto-start animation

controlAnimation ​

Play or pause the current animation.

ParameterTypeRequiredDefaultDescription
actionstring✅—"play" | "pause"

removeAnimation ​

Remove an animation entity.

ParameterTypeRequiredDefaultDescription
entityIdstring✅—Entity ID of animation to remove

listAnimations ​

List all active animations. No parameters.

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

updateAnimationPath ​

Update visual properties of an animation path.

ParameterTypeRequiredDefaultDescription
entityIdstring✅—Animation entity ID
widthnumber——Path width in pixels
colorstring——Path color (CSS)
leadTimenumber——Lead time in seconds
trailTimenumber——Trail time in seconds
showboolean——Show/hide path

trackEntity ​

Follow an entity with the camera, or stop tracking.

ParameterTypeRequiredDefaultDescription
entityIdstring——Entity ID to track (omit to stop)
headingnumber——Camera heading in degrees
pitchnumber—-30Camera pitch in degrees
rangenumber—500Camera distance in meters

controlClock ​

Configure the Cesium clock.

ParameterTypeRequiredDefaultDescription
actionstring✅—"configure" | "setTime" | "setMultiplier"
startTimestring——ISO 8601 start time
stopTimestring——ISO 8601 stop time
currentTimestring——ISO 8601 current time
timestring——ISO 8601 time to jump to (for setTime)
multipliernumber——Clock speed multiplier
shouldAnimateboolean——Whether clock should animate
clockRangestring——"UNBOUNDED" | "CLAMPED" | "LOOP_STOP"

setGlobeLighting ​

Enable/disable globe lighting and atmospheric effects.

ParameterTypeRequiredDefaultDescription
enableLightingboolean——Enable globe lighting
dynamicAtmosphereLightingboolean——Dynamic atmosphere lighting
dynamicAtmosphereLightingFromSunboolean——Use sun position for atmosphere

3D Data ​

load3dTiles ​

Load a 3D Tileset (buildings, terrain mesh, etc.) from URL or Cesium Ion asset ID.

ParameterTypeRequiredDefaultDescription
urlstring——URL to tileset.json
ionAssetIdnumber——Cesium Ion asset ID
idstring—autoLayer ID
namestring——Display name
maximumScreenSpaceErrornumber—16Max screen space error (lower = more detail)
heightOffsetnumber——Height offset in meters

Either url or ionAssetId must be provided.

loadTerrain ​

Set the terrain provider.

ParameterTypeRequiredDefaultDescription
providerstring✅—"flat" | "arcgis" | "cesiumion"
urlstring——Custom terrain service URL
cesiumIonAssetIdnumber——Cesium Ion asset ID (for cesiumion)

loadImageryService ​

Add an imagery layer from URL or Cesium Ion asset ID.

ParameterTypeRequiredDefaultDescription
urlstring——Imagery service URL
serviceTypestring——"wms" | "wmts" | "xyz" | "arcgis_mapserver" | "ion"
ionAssetIdnumber——Cesium Ion asset ID
idstring—autoLayer ID
namestring——Display name
layerNamestring——WMS/WMTS layer name
opacitynumber—1.0Opacity (0–1)

Either url + serviceType or ionAssetId must be provided.

loadCzml ​

Load CZML time-dynamic data source (inline data array or remote URL).

ParameterTypeRequiredDefaultDescription
dataunknown[]——CZML packet array (inline)
urlstring——URL to CZML file
idstring—autoLayer ID
namestring——Display name
sourceUristring——Base URI for relative references
clampToGroundboolean—falseClamp entities to ground

Either data or url must be provided.

loadKml ​

Load KML/KMZ data source (inline string or remote URL).

ParameterTypeRequiredDefaultDescription
datastring——KML document as string (inline)
urlstring——URL to KML/KMZ file
idstring—autoLayer ID
namestring——Display name
clampToGroundboolean—falseClamp entities to ground

Either data or url must be provided.

Interaction ​

screenshot ​

Capture the current globe view as an image. No parameters.

Returns: Base64 PNG image (MCP image content type).

highlight ​

Highlight specific features in a layer.

ParameterTypeRequiredDefaultDescription
layerIdstring✅—Layer ID
featureIndexnumber——Feature index (omit to highlight all)
colorstring—"#FFFF00"Highlight color (CSS)

measure ​

Measure distance or area between points on the globe.

ParameterTypeRequiredDefaultDescription
typestring✅—"distance" | "area"
coordinatesnumber[][]✅—Points [[lon, lat], ...] (2 for distance, 3+ for area)

Returns: { type, value, unit, coordinates }

Scene ​

setSceneOptions ​

Configure scene environment (fog, atmosphere, shadows, sun, moon, background color, depth testing).

ParameterTypeRequiredDefaultDescription
fogEnabledboolean——Enable/disable fog
fogDensitynumber—0.0002Fog density (0.0–1.0)
fogMinimumBrightnessnumber——Minimum fog brightness (0.0–1.0)
skyAtmosphereShowboolean——Show sky atmosphere
skyAtmosphereHueShiftnumber——Sky hue shift (-1.0–1.0)
skyAtmosphereSaturationShiftnumber——Sky saturation shift (-1.0–1.0)
skyAtmosphereBrightnessShiftnumber——Sky brightness shift (-1.0–1.0)
groundAtmosphereShowboolean——Show ground atmosphere
shadowsEnabledboolean——Enable shadows
shadowsSoftShadowsboolean——Use soft shadows
shadowsDarknessnumber——Shadow darkness (0.0–1.0)
sunShowboolean——Show the sun
sunGlowFactornumber—1.0Sun glow factor
moonShowboolean——Show the moon
depthTestAgainstTerrainboolean——Depth test against terrain
backgroundColorstring——Background color (CSS format)

setPostProcess ​

Configure post-processing effects (bloom, SSAO, FXAA).

ParameterTypeRequiredDefaultDescription
bloomboolean——Enable bloom glow effect
bloomContrastnumber—128Bloom contrast
bloomBrightnessnumber—-0.3Bloom brightness
bloomDeltanumber—1.0Bloom delta
bloomSigmanumber—3.78Bloom sigma
bloomStepSizenumber—5.0Bloom step size
bloomGlowOnlyboolean——Show only the glow
ambientOcclusionboolean——Enable ambient occlusion (SSAO)
aoIntensitynumber—3.0AO intensity
aoBiasnumber—0.1AO bias
aoLengthCapnumber—0.26AO length cap
aoStepSizenumber—1.95AO step size
fxaaboolean——Enable FXAA anti-aliasing

Other ​

playTrajectory trajectory ​

Animate an entity along a path over time.

ParameterTypeRequiredDefaultDescription
coordinatesnumber[][]✅—Path coordinates [[lon, lat, alt?], ...]
idstring—autoTrajectory layer ID
namestring——Trajectory name
durationSecondsnumber—10Animation duration in seconds
trailSecondsnumber—2Trail length in seconds
labelstring——Moving entity label

addHeatmap heatmap ​

Create a heatmap overlay from point data.

ParameterTypeRequiredDefaultDescription
dataobject✅—GeoJSON Point FeatureCollection
radiusnumber—30Heat influence radius in pixels

geocode geolocation ​

Convert an address, landmark, or place name to geographic coordinates (longitude/latitude). Uses OpenStreetMap Nominatim — no API key required. Supports HTTPS_PROXY / HTTP_PROXY / ALL_PROXY environment variables for proxy.

ParameterTypeRequiredDefaultDescription
addressstring✅—Address, landmark, or place name, e.g. "Eiffel Tower", "故宫"
countryCodestring——2-letter ISO country code to limit search scope (e.g. CN, US, JP)

Returns: { success, longitude, latitude, displayName, boundingBox }

Resource Handle Tools (3) ​

These adapter-local tools store large inputs once. They are always available and do not belong to a Cesium browser toolset.

ToolParametersReturns
storeResourcekind (geojson | czml | json), data, optional resourceId, ttlSecondsResource metadata including resourceId
listResourcesoptional sessionId{ resources: ResourceMetadata[] } without payloads
deleteResourceresourceId, optional sessionId{ removed: boolean }

The same browser sessionId used for command routing also scopes resources. See Resource Handles for supported consuming tools and lifecycle limits.

MCP Resources (2) ​

URIDescription
cesium://scene/cameraCurrent camera state (position, orientation)
cesium://scene/layersList of all loaded layers with metadata

Resources are read-only and can be polled by the AI agent for context-aware decisions.

Environment Variables ​

VariableDefaultDescription
CESIUM_WS_PORT9100WebSocket server port for bridge connections
DEFAULT_SESSION_IDdefaultWhich browser session to route MCP calls to
CESIUM_TOOLSETS(not set)Toolset activation: omit for defaults, all for everything, or comma-separated list
OSM_USER_AGENTcesium-mcp-runtime/1.0User-Agent header for Nominatim geocode requests
CESIUM_LOCALEenTool description language: en (English, default) or zh-CN (Chinese)

Session Routing ​

Multiple browser tabs can connect simultaneously. Each bridge instance registers with a sessionId:

Tab 1: sessionId = "project-a"
Tab 2: sessionId = "project-b"

Routing via MCP URL ​

Add ?session=xxx to the MCP HTTP endpoint URL to route all tool calls to a specific browser:

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

This is the recommended approach for third-party integrations (e.g., Dify) — no prompt injection or tool parameter needed.

Routing priority ​

  1. sessionId in tool parameters (explicit per-call override)
  2. ?session=xxx in MCP HTTP URL (connection-level)
  3. DEFAULT_SESSION_ID environment variable
  4. First connected browser (fallback)

Explicit tool/URL selections are fail-closed. If that browser session is not open, the call fails instead of falling back to another Viewer. Fallback applies only when no session was selected explicitly. Responses are accepted only from the WebSocket that owns the pending request.

HTTP Push API ​

For non-MCP integrations (e.g., FastAPI backends), the runtime exposes an HTTP endpoint:

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}}'

Common Types ​

ColorInput ​

typescript
type ColorInput =
  | string                        // CSS color: "#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   // degrees
  latitude: number    // degrees
  height?: number     // meters
}

Released under the MIT License.