gaopengbin/cesium-mcp

Community
gaopengbin
GitHub
116 starsUpdated 22h ago84/100cesium-mcp-webmcp@0.2.2· 22h ago

Adds AI commands to CesiumJS for browser-only agents, WebMCP, function calling,

This project provides a protocol-agnostic Cesium command executor, `cesium-mcp-bridge`, to add AI commands to CesiumJS. It supports various integration paths including browser-only agents, WebMCP browser agents, function calling, and MCP runtimes.

What it does

  • This project provides a protocol-agnostic Cesium command executor, `cesium-mcp-bridge`, to add AI commands to CesiumJS.
  • It supports various integration paths including browser-only agents, WebMCP browser agents, function calling, and MCP runtimes.

Best for

Personal projects or quick tries with browser agentsExposing Cesium tools through WebMCPEmbedding AI assistants in web appsUsing with Claude Desktop, Cursor, or Dify
About gaopengbin/cesium-mcp

gaopengbin/cesium-mcp is a MCP server categorised under ai / ml, geospatial, cesiumjs, web mapping. This project provides a protocol-agnostic Cesium command executor, `cesium-mcp-bridge`, to add AI commands to CesiumJS. It supports various integration paths including browser-only agents, WebMCP browser agents, function calling, and MCP runtimes.

How to install

Pick your MCP client from the Install panel on this page to get a one-click install link (Cursor, VS Code) or a ready-to-paste configuration for Claude Desktop, Claude Code, Gemini, Codex, Windsurf, and other MCP-compatible clients. No local setup required for remote servers.

License

gaopengbin/cesium-mcp is released under the MIT license. This is a permissive open-source license, so you can freely use, modify, and distribute it — subject to its terms.

Comments

No comments yet

Be the first to leave a comment after using this server in production.

README

Refreshed 16h ago
ChatGPT Image 2026年7月5日 22_13_19

The minimum-overhead way to add AI commands to CesiumJS

cesium-mcp-bridge is the protocol-agnostic Cesium command executor. Separate adapters expose it to browser-only agents, WebMCP browser agents, function calling, or MCP — your choice.

Four integration paths: Browser Agent (simplest, zero backend) · WebMCP (page-local browser tools) · function calling (embed in your web app) · MCP runtime (Claude Desktop / Cursor / Dify)

Try it now — open the live browser demo, no install, no signup.

Website · 中文 · Getting Started · API Reference

License: MIT CI GitHub stars Runtime downloads

bridge npm runtime npm dev npm


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, slow updatesnpm · 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:

# stdio mode (Claude Desktop, VS Code, Cursor)
npx cesium-mcp-runtime

# HTTP mode (Dify, remote/cloud MCP clients)
npx cesium-mcp-runtime --transport http --port 3000

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, and Runtime input validation all come from the shared JSON Schemas in cesium-mcp-contracts.

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

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.01.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

Alternatives

MarkItDown converts various file formats to Markdown for use with LLMs.

100/100python

The TypeScript SDK implements the Model Context Protocol for LLM context provisi

100/100typescript
24k

Python SDK for building servers and clients that implement the Model Context Pro

100/100python