PluginBench
MCP Server
Active
MIT

io.github.gaopengbin/cesium-mcp-runtime MCP Server

io.github.gaopengbin/cesium-mcp-runtime

Control CesiumJS 3D globes with AI commands via MCP—camera, layers, entities, animation, and interaction.

What is the io.github.gaopengbin/cesium-mcp-runtime MCP server?

The Cesium MCP Runtime is an MCP server that exposes 62 AI-controllable commands for CesiumJS 3D globes. It enables Claude, Cursor, and other MCP clients to programmatically manage camera views, add/update entities, control layers, animate scenes, and interact with geospatial data through a unified command interface.

This server bridges CesiumJS 3D mapping to AI agents, letting you fly to locations, add markers and models, manage layers, create animations, and capture screenshots—all via natural language commands in Claude Desktop, Cursor, or Dify. It supports multiple integration paths: browser-only agents, WebMCP (Chrome 149+), function calling in web apps, or MCP runtime for desktop clients.

How to install io.github.gaopengbin/cesium-mcp-runtime

Copy-paste configuration for popular MCP clients.

transport: stdio
Config generated by PluginBench — verify against the source before use.
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "cesium-mcp-runtime": {
      "command": "npx",
      "args": [
        "-y",
        "cesium-mcp-runtime"
      ]
    }
  }
}

Tools & capabilities

Tools this server exposes to the agent.

  • flyTo — Navigate the camera to a specified location or entity
  • setView — Set the camera view to a specific position and orientation
  • getView — Retrieve the current camera view state
  • zoomToExtent — Zoom the camera to fit a geographic extent
  • saveViewpoint — Save the current camera viewpoint for later recall
  • loadViewpoint — Load and restore a previously saved viewpoint
  • listViewpoints — List all saved viewpoints
  • exportScene — Export the current scene as an image or data
  • addMarker — Add a point marker to the map
  • addLabel — Add a text label to the map
  • addModel — Add a 3D model to the scene
  • addPolygon — Add a polygon shape to the map
  • addPolyline — Add a line or polyline to the map
  • updateEntity — Modify properties of an existing entity
  • removeEntity — Delete an entity from the scene
  • batchAddEntities — Add multiple entities at once
  • queryEntities — Search for entities by properties or location
  • getEntityProperties — Retrieve detailed properties of an entity
  • addGeoJsonLayer — Load and display GeoJSON data as a layer
  • addGeoJsonPrimitive — Add GeoJSON data as primitives

Use cases

  • Fly to and visualize geographic locations with natural language commands like 'Show me the Eiffel Tower'
  • Add and manage 3D markers, models, and labels on a Cesium globe for data visualization
  • Create animated camera tours and entity trajectories for presentations or storytelling
  • Load and display geospatial data formats (GeoJSON, KML, CZML, 3D Tiles) via AI commands
  • Measure distances and areas, capture screenshots, and export scenes programmatically

io.github.gaopengbin/cesium-mcp-runtime MCP server FAQ

What is the Cesium MCP Runtime?

It's an MCP server that exposes 62 commands for controlling CesiumJS 3D globes. You can use it with Claude Desktop, Cursor, or Dify to programmatically manage camera views, add entities, control layers, animate scenes, and interact with geospatial data.

Is it free?

Yes. The server itself is MIT-licensed and free. CesiumJS is open-source. Some features (like Cesium Ion imagery services) may require a free or paid Cesium Ion account, but the core MCP runtime has no cost.

How do I install it in Claude Desktop or Cursor?

Install via npm: `npx cesium-mcp-runtime`. Then add it to your MCP client config (Claude Desktop or Cursor) with the command `npx cesium-mcp-runtime`. See the README for exact config syntax.

Do I need a Cesium Ion token?

No, not required for basic use. The server works with open-source CesiumJS. If you want to use Cesium Ion imagery services, you can set a token via the `setIonToken` tool or environment variable.

What are the different integration paths?

Browser Agent (simplest, no backend), WebMCP (Chrome 149+, page-local tools), function calling (embed in your web app), or MCP runtime (Claude Desktop/Cursor/Dify). Pick based on your deployment scenario.

Can I use this with my own web app?

Yes. Install `cesium-mcp-bridge` and call its tools directly via function calling, or use the MCP runtime as a separate server that your app communicates with.

README (reference)

Source of truth, from the repository.

<img width="2172" height="724" alt="ChatGPT Image 2026年7月5日 22_13_19" src="https://github.com/user-attachments/assets/098dcbef-e0bc-4214-8adf-b80a29e50e65" /> <div align="center"> <p><strong>The minimum-overhead way to add AI commands to CesiumJS</strong></p> <p><a href="packages/cesium-mcp-bridge/">cesium-mcp-bridge</a> is the protocol-agnostic Cesium command executor. Separate adapters expose it to <strong>browser-only agents</strong>, <strong>WebMCP browser agents</strong>, <strong>function calling</strong>, or <strong>MCP</strong> — your choice.</p> <p>Four integration paths: <a href="examples/browser-agent/">Browser Agent</a> (simplest, zero backend) · WebMCP (page-local browser tools) · function calling (embed in your web app) · <a href="packages/cesium-mcp-runtime/">MCP runtime</a> (Claude Desktop / Cursor / Dify)</p> <p><a href="https://cesium-browser-agent.pages.dev/"><strong>Try it now</strong></a> — open the live browser demo, no install, no signup.</p> <p> <a href="https://gaopengbin.github.io/cesium-mcp/">Website</a> &middot; <a href="README.zh-CN.md">中文</a> &middot; <a href="https://gaopengbin.github.io/cesium-mcp/guide/getting-started.html">Getting Started</a> &middot; <a href="https://gaopengbin.github.io/cesium-mcp/api/bridge.html">API Reference</a> </p> <p> <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-155EEF?style=flat-square" alt="License: MIT"></a> <a href="https://github.com/gaopengbin/cesium-mcp/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/gaopengbin/cesium-mcp/ci.yml?branch=main&label=CI&style=flat-square" alt="CI"></a> <a href="https://github.com/gaopengbin/cesium-mcp/stargazers"><img src="https://img.shields.io/github/stars/gaopengbin/cesium-mcp?style=flat-square" alt="GitHub stars"></a> <a href="https://www.npmjs.com/package/cesium-mcp-runtime"><img src="https://img.shields.io/npm/dm/cesium-mcp-runtime?label=runtime%20downloads&style=flat-square" alt="Runtime downloads"></a> </p> <p> <a href="https://www.npmjs.com/package/cesium-mcp-bridge"><img src="https://img.shields.io/badge/bridge-npm-528bff?style=for-the-badge&logo=npm&logoColor=white" alt="bridge npm"></a> <a href="https://www.npmjs.com/package/cesium-mcp-runtime"><img src="https://img.shields.io/badge/runtime-npm-155EEF?style=for-the-badge&logo=npm&logoColor=white" alt="runtime npm"></a> <a href="https://www.npmjs.com/package/cesium-mcp-dev"><img src="https://img.shields.io/badge/dev-npm-364fc7?style=for-the-badge&logo=npm&logoColor=white" alt="dev npm"></a> </p> </div>

Demo

https://github.com/user-attachments/assets/8a40565a-fcdd-47bf-ae67-bc870611c908

Packages & Entry Points

ModuleRoleStatusLinks
cesium-mcp-contractsTransport-neutral names, descriptions, and JSON Schemas for browser toolsNew shared layersource
cesium-mcp-bridgeProtocol- and transport-free Cesium command executor (60+ commands)Mainline, actively iteratednpm · source
cesium-mcp-webmcpNative document.modelContext adapter for Cesium tool contractsNew browser adaptersource
examples/webmcp-integrationFocused npm + Vite integration without a chat UI or MCP serverDeveloper exampleexample
examples/browser-agentBrowser-only AI agent with automatic WebMCP exposureRecommendedexample · live demo
cesium-mcp-runtimeMCP server (stdio + HTTP)Stable MCP SDK v2npm · source
cesium-mcp-devCesiumJS API knowledge base for coding assistantsMaintainednpm · source

Which one? Personal project or quick try → browser-agent. Let a compatible browser agent discover page-local Cesium tools → WebMCP. Existing web app embedding an AI assistant → bridge + your own function calling. Calling from Claude Desktop / Cursor / Dify → MCP runtime.

Architecture

flowchart LR
  subgraph clients ["AI Drivers (pick one)"]
    BA["Browser Agent\n(in the same page)"]
    WM["WebMCP Agent\n(browser-provided)"]
    FC["Your web app\nfunction calling"]
    MCP["Claude / Cursor / Dify\nvia MCP runtime"]
  end

  CONTRACTS["cesium-mcp-contracts\ntool definitions"]
  WEBMCP["cesium-mcp-webmcp\nnative adapter"]

  subgraph core ["cesium-mcp-bridge (browser)"]
    B["60+ tools\nprotocol-agnostic dispatcher"]
    C["CesiumJS Viewer"]
  end

  CONTRACTS -.-> BA
  CONTRACTS -.-> WEBMCP
  BA -- "in-page call" --> B
  WM -- "document.modelContext" --> WEBMCP
  WEBMCP --> B
  FC -- "in-page call" --> B
  MCP -- "WebSocket / JSON-RPC" --> B
  B --> C

  style clients fill:#1e293b,stroke:#528bff,color:#e2e8f0
  style core fill:#1e293b,stroke:#12B76A,color:#e2e8f0

The bridge remains the execution core, while contracts and protocol adapters stay separate. Pick whichever driver matches your scenario — they all reach the same Cesium command layer. On WebMCP-capable browsers, cesium-mcp-webmcp can expose 61 browser-safe commands in 12 selectable toolsets through document.modelContext without adding an MCP transport or backend server.

Quick Start

Path 0 — Try in 30 seconds (browser agent, recommended)

Open the live demo and ask—the hosted model is ready without a browser API key:

"Fly to the Eiffel Tower and drop a red marker"

Fork the examples/browser-agent folder to deploy your own.

Path 1 — Expose Cesium tools through WebMCP (Chrome 149+ experimental)

The browser-agent example automatically registers all 61 browser-safe page tools when document.modelContext is available. Its built-in chat uses automatic toolset routing to keep each normal request at 20 tools or fewer, while still offering explicit core, single-toolset, and all-61 modes:

npm run build -w packages/cesium-mcp-bridge
npm run build -w packages/cesium-mcp-webmcp
npx serve . -l 4173

Open http://localhost:4173/examples/browser-agent/, click Start, then inspect or execute the tools in DevTools → Application → WebMCP. Enable #enable-webmcp-testing and #devtools-webmcp-support in chrome://flags for local testing.

Application developers install the adapter separately. End users only open the integrated website; they do not install npm packages or run an MCP server.

npm install cesium cesium-mcp-bridge cesium-mcp-webmcp
import { CesiumBridge } from 'cesium-mcp-bridge'
import { registerCesiumWebMcp } from 'cesium-mcp-webmcp'

const bridge = new CesiumBridge(viewer)
const registration = await registerCesiumWebMcp(bridge, {
  toolsets: 'all',
  excludeTools: ['geocode'], // add your own browser geocoder to expose this tool
})

// Later, if the page is unmounted:
registration.unregister()

See the WebMCP adapter API for custom integrations. For a complete npm + Vite application, start from the WebMCP integration example.

Path 2 — Embed in your own web app (function calling)

npm install cesium-mcp-bridge
import { CesiumBridge } from 'cesium-mcp-bridge';

const bridge = new CesiumBridge(viewer);
// Then: send the bridge's tool schema to any LLM that supports function/tool calling,
// route the model's tool calls to bridge.execute(name, params).

See examples/browser-agent/index.html for a complete loop with OpenAI-compatible APIs.

Path 3 — Use from Claude Desktop / Cursor / Dify (MCP)

Install bridge as in Path 2, then start the MCP runtime:

# Stable channel — npm latest, MCP SDK v2
npx cesium-mcp-runtime

# HTTP mode
npx cesium-mcp-runtime --transport http --port 3000

The stable release serves existing MCP 2025-11-25 clients and the new 2026-07-28 protocol from the same stdio/HTTP entry. It uses the stable TypeScript SDK v2 and passes the official server-stateless conformance scenario (28/28).

MCP client config:

{
  "mcpServers": {
    "cesium": {
      "command": "npx",
      "args": ["-y", "cesium-mcp-runtime"]
    }
  }
}

62 Available Command Tools

Tools are organized into 12 toolsets. Default mode enables 4 core toolsets (30 tools). Set CESIUM_TOOLSETS=all for everything, or let the AI discover and activate toolsets dynamically at runtime.

Canonical contracts: Tool descriptions default to English; set CESIUM_LOCALE=zh-CN for Chinese. Titles, behavior annotations, localized descriptions, defaults, input validation, MCP output schemas, and structured results all come from the shared JSON Schemas in cesium-mcp-contracts. Text content remains available for older clients.

ToolsetTools
view (default)flyTo, setView, getView, zoomToExtent, saveViewpoint, loadViewpoint, listViewpoints, exportScene
entity (default)addMarker, addLabel, addModel, addPolygon, addPolyline, updateEntity, removeEntity, batchAddEntities, queryEntities, getEntityProperties
layer (default)addGeoJsonLayer, addGeoJsonPrimitive, listLayers, removeLayer, clearAll, setLayerVisibility, updateLayerStyle, getLayerSchema, setBasemap
interaction (default)screenshot, highlight, measure
cameralookAtTransform, startOrbit, stopOrbit, setCameraOptions
entity-extaddBillboard, addBox, addCorridor, addCylinder, addEllipse, addRectangle, addWall
animationcreateAnimation, controlAnimation, removeAnimation, listAnimations, updateAnimationPath, trackEntity, controlClock, setGlobeLighting
tilesload3dTiles, load3dGaussianSplat, loadTerrain, loadImageryService, loadCzml, loadKml, setEdgeDisplayMode
trajectoryplayTrajectory
heatmapaddHeatmap
scenesetSceneOptions, setPostProcess, setIonToken (Runtime only)
geolocationgeocode

Relationship with CesiumGS official MCP servers: The camera, entity-ext, and animation toolsets natively fuse capabilities from CesiumGS/cesium-mcp-server (Camera Server, Entity Server, Animation Server) into this project's unified bridge architecture. This means you get all official functionality plus additional tools — in a single MCP server, without running multiple processes.

Examples

See examples/minimal/ for a complete working demo.

Development

git clone https://github.com/gaopengbin/cesium-mcp.git
cd cesium-mcp
npm install
npm run build
npm test
npm run test:contracts
npm run test:routing
npm run test:e2e:packed

test:contracts is the focused parity gate for MCP Runtime metadata, WebMCP registration, Function Calling definitions, and the 60-tool Bridge Executor Registry. test:routing evaluates bilingual and multi-intent Browser Agent requests across all 12 toolsets, checking required-tool recall and the 20-tool automatic-routing budget. test:e2e:packed builds npm tarballs, installs them in a clean temporary project, opens the real Cesium Viewer, and verifies a Runtime-WebSocket-Bridge command round trip.

Version Policy

Version format: {CesiumMajor}.{CesiumMinor}.{MCPPatch}

SegmentMeaningExample
1.143Tracks CesiumJS version — built & tested against Cesium ~1.143.01.143.0 → Cesium 1.143
.xMCP patch — independent iterations for new tools, bug fixes, docs1.143.0 → 1.143.1

Official CesiumJS releases are reviewed before the compatibility baseline is bumped; the project does not automatically claim support for a newer release without Bridge verification.

Related Projects

Star History

Star History Chart

License

MIT

Related MCP servers

AI-powered CesiumJS development tools with 60+ commands for Claude, Cursor, and browser agents.

126
JavaScript
MIT
View repository →

useVyre component context for AI agents — valid props, variants, anti-patterns, and design tokens.

7
TypeScript
MIT
View repository →
AGAguara MCP logo

Aguara MCP

Maintained

Security scanner for AI agent skills and MCP servers

4
Go
MIT
View repository →
AGAguara MCP logo

Aguara MCP

Maintained

Scan skills, MCP configs, and agent content for injection and supply-chain risks. Offline, no LLM.

4
Go
MIT
View repository →
AIAI Skill Store logo

AI Skill Store

Maintained

Agent-first skill marketplace with USK open standard for Claude, Cursor, Gemini, Codex CLI.

3
Python
MIT
View repository →

CNCF release intelligence: typed changes from release notes; check_stack compares versions locally.

2
Go
Apache-2.0
View repository →