Skip to content

gaopengbin/cesium-mcp

[email protected] scope: cesium-mcp-runtime Breaking

This release includes breaking changes for platform teams planning a safe upgrade.

Published 21d MCP Developer Tools
✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

3d-globe 3d-visualization ai ai-agent cesium cesiumjs
+13 more
claude geojson geospatial gis llm mcp model-context-protocol natural-language spatial-analysis typescript webgis webgl websocket

Summary

AI summary

Fixes layer ID collisions in batchAddEntities by deriving IDs from Cesium entity identifiers.

Full changelog

Patch Changes

  • 4879ed8 Thanks @gaopengbin! - fix(entity): derive layerId from Cesium entity.id to avoid collisions in batchAddEntities

    The layer registration path for addMarker / addPolyline / addPolygon /
    addModel and the shared _registerEntityLayer (billboard / box / cylinder /
    ellipse / rectangle / wall / corridor) previously built layerId from
    Date.now(). When batchAddEntities loops these helpers synchronously within
    the same millisecond, multiple entities collide on the same layerId. The
    consequences: LayerManager._cesiumRefs (a Map) silently overwrites the
    earlier Cesium entity reference, layers (an Array) accumulates duplicate
    records with the same id, and any subsequent removeLayer(id) targets the
    overwritten (last) refs — so users see the wrong entity removed, or an
    "impossible to delete" entry that keeps its Cesium visual around.

    Now each layerId is ${type}_${entity.id} where entity.id is Cesium's own
    UUID (unique per entity, generated at new Entity({...}) time). The fix is
    targeted at the five in-memory synchronous paths; the async loaders in
    LayerManager (geojson / imagery / 3dtiles / czml / kml / heatmap) keep their
    id ?? \type_${Date.now()}`` pattern because they are naturally spaced by
    awaited fetch/load and already accept an explicit id override.

    Also wraps the batchAddEntities loop with Cesium's official batch-insert
    optimization: viewer.entities.suspendEvents() / resumeEvents(), so
    collectionChanged fires once for the whole batch instead of per entity.

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track gaopengbin/cesium-mcp

Get notified when new releases ship.

Sign up free

About gaopengbin/cesium-mcp

AI-powered 3D globe control via MCP. Connect any MCP-compatible AI agent to CesiumJS — camera flight, GeoJSON/3D Tiles layers, markers, spatial analysis, heatmaps, and more through 19 natural language tools.

All releases →

Beta — feedback welcome: [email protected]