MCP server for managing 3D Tiles tilesets in CesiumJS scene applications.
tiles_mcp_server.mp4
- Multiple Source Types: Load tilesets from Cesium Ion assets and direct URLs
- Tileset Management: Add, remove, list, and style 3D tilesets dynamically
- ID-based Tracking: Each tileset receives a unique ID for reliable removal
- Visibility Control: Set tileset visibility on load
- Batch Operations: Remove all loaded tilesets at once
- 3D Tiles Styling: Apply color and show conditions using the 3D Tiles Styling specification
pnpm install
pnpm run buildpnpm run dev # Development mode with auto-reload
pnpm start # Production modeThe server will start on port 3006 with WebSocket transport.
Add a 3D tileset to the Cesium scene
Supports two source types for flexible tileset loading.
Source Types:
type |
Required parameter | Description |
|---|---|---|
ion |
assetId |
Generic Cesium Ion 3D Tiles asset |
url |
url |
Direct URL to a tileset.json file |
Input:
type(required): Source type —"ion"or"url"assetId(required forion): Cesium Ion asset IDurl(required forurl): URL of thetileset.jsonname(optional): Display name used for listing and removal by nameshow(optional): Visibility on load (default:true)
Output:
tilesetId: Unique ID for use withtileset_remove- Name, source type, total tileset count, and response time
Remove a 3D tileset from the scene
Input:
tilesetId(optional): ID returned bytileset_add— preferred removal methodname(optional): Display name of the tileset to removeremoveAll(optional): Remove all loaded tilesets at once
Output:
- Removed tileset ID, name, and count
List all 3D tilesets currently in the scene
Input:
includeDetails(optional): Include full source metadata for each tileset
Output:
- Array of tilesets with
tilesetId,name,sourceType,show, and source parameters - Total count and response time
Apply or update 3D Tiles styling on a loaded tileset
Targets a tileset by tilesetId or name. Style expressions follow the 3D Tiles Styling specification.
Input:
tilesetId(optional): ID returned bytileset_add— preferred targeting methodname(optional): Display name of the tileset to stylecolor(optional): A single color expression string (e.g."color('red')")colorConditions(optional): Array of[condition, color]pairs for conditional coloringshow(optional): Boolean or expression string controlling feature visibilityshowConditions(optional): Array of[condition, show]pairs for conditional visibility
Either
tilesetIdornamemust be provided. At least one style property must be specified.
Output:
tilesetId,name, andappliedStyle(the style properties that were applied)
{
"mcpServers": {
"cesium-tiles-server": {
"command": "node",
"args": [
"{YOUR_WORKSPACE}/cesium-ai-integrations/mcp/cesium-js/servers/tiles-server/build/index.js"
],
"env": {
"PORT": "3006",
"COMMUNICATION_PROTOCOL": "websocket"
}
}
}
}Note: Replace
{YOUR_WORKSPACE}with the absolute path to your local clone.
"Add the Cesium OSM Buildings tileset"
"Load a 3D tileset from this URL: https://example.com/tileset/tileset.json"
"List all 3D tilesets in the scene"
"Remove the tileset named 'Cesium OSM Buildings'"
"Remove all loaded tilesets"
"Color the OSM Buildings tileset red"
"Style buildings taller than 100m blue, everything else white"
"Hide all features shorter than 10 meters in the Buildings tileset"
Environment variables:
PORTorTILES_SERVER_PORT: Server port (default: 3006)COMMUNICATION_PROTOCOL:websocketorsse(default:websocket)MAX_RETRIES: Maximum retry attempts for port binding (default: 10)STRICT_PORT: Iftrue, fail if exact port unavailable (default: false)MCP_TRANSPORT:stdioorstreamable-http(default:stdio)
Interested in contributing? Please read CONTRIBUTING.md. We also ask that you follow the Code of Conduct.
Apache 2.0. See LICENSE.