Plateau Creative Mcp
io.github.pixelx-jpPublished by GitHub account pixelx-jpv0.1.1Updated Oct 24, 2026
PLATEAU 3D city data as scene-editing and glTF export tools for creative LLM agents.
Overview
Turns Project PLATEAU 3D city data into scene-editing and glTF export tools so an assistant can load, filter, edit and export city blocks.
- What you can do
- Download and load city data: fetch cached city bundles and open a city, bbox and LOD as a scene
- Query and edit buildings: filter by height, year, use, zoning or flood depth, mark buildings removed, scale heights
- Compose and export scenes: set time of day, weather and camera hints, then export a single GLB or a 3D Tiles scene manifest
- Link buildings to nearby OSM POIs and read dataset, license and attribution metadata
- Optionally proxy 13 official PLATEAU data-access tools into the same catalog
- Optionally hand the exported GLB to a BlenderMCP-compatible server
- When to use it
- Useful when you want an assistant to build counterfactual or stylized city scenes from Japanese PLATEAU data and hand a GLB to Blender, Unity or Unreal. It fits creative 3D workflows rather than plain data lookup, which the official PLATEAU server covers.
- Requirements
- Runs locally over stdio via npx, so Node.js is needed. No account or API key. Optional environment variables set the artifact directory, artifact index URL, output directory, auto-download, scene persistence, data mode (artifact or Python subprocess, which needs duckdb), OSM_OVERPASS_URL for POI linking, and PLATEAU_UPSTREAM_ENABLED for the proxied official tools. Network access is needed to download city bundles.
Installation
In SourceWeft
- Open Plateau Creative Mcp in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
@yodolabs/plateau-creative-mcp
An MCP server that turns Project PLATEAU's 3D city data into scene-editing and glTF export tools for creative LLM agents.
[npm] [License: MIT] [Data: CC BY 4.0] [Node]
English · 日本語
[A real Shibuya block loaded from Project PLATEAU and exported by plateau-creative-mcp as a single .glb — hundreds of buildings as editable 3D geometry on a scene grid, ready for Blender / Unity / Unreal.]
A real Shibuya block — loaded from PLATEAU, edited, and exported as one .glb by the export_glb tool, here rendered with three.js. Same geometry your LLM hands off to Blender / Unity / Unreal. Data © Project PLATEAU / MLIT (CC BY 4.0).
This server exposes tools. Orchestration is your LLM's job — point Claude / Cursor / any MCP client at this server alongside Blender MCP / Unity MCP / Unreal MCP and let it compose the workflow.
PLATEAU has an official MCP server for data access (catalog, specs, CityGML, attributes). This one fills the missing creation, scene-editing, and DCC export layer: load a Tokyo neighbourhood, delete every skyscraper, scale a block to 3× height, and emit a .glb ready for Blender / Unity / Unreal — all driven by tool calls.
Status
v0.1.0 — first public release. 10 MCP tools (incl. on-demand artifact download — no data clone needed), polygon footprint extrusion with mesh merging, single-GLB export ≤ 1 km² (≈40% gltf-transform compression) with a scene_manifest 3D Tiles fallback for larger areas, three data-access modes (TS+duckdb artifact / Python subprocess / upstream MCP via JSON-RPC), Overpass POI linking, and an optional cross-MCP bridge to BlenderMCP. Vendor-neutral over MCP — Claude, Cursor, any client works.
Tools
When PLATEAU_UPSTREAM_ENABLED=true, the server also exposes 13 tools proxied from the official Project PLATEAU MCP server: plateau_spec_outline, plateau_spec_read, plateau_get_metadata, plateau_search_areas, plateau_get_area, plateau_search_datasets, plateau_get_dataset, plateau_list_dataset_types, plateau_citygml_get_attributes, plateau_citygml_get_features, plateau_citygml_get_geoid_height, plateau_get_citygml_files, plateau_explain_spatial_id. The LLM client sees 23 tools in a single catalog, with no need to wire two separate MCP servers.
Every tool returns { result, attribution_metadata }. export_glb writes asset.extras.attribution into the GLB and a LICENSE.txt next to it. You must keep that attribution in any derived video, image, or asset.
Quickstart
There are two ways to get city data in place.
Option A — zero setup (recommended)
Don't clone the data pipeline at all. Out of the box the server reads the public plateau-bridge artifact index, so download_area works with no configuration — it fetches the prebuilt bundle for a city, verifies its sha256, and caches it locally:
Call download_area(city="shibuya") once (or set PLATEAU_AUTO_DOWNLOAD=true and just call load_area, which fetches a missing city first). Only buildings.parquet + manifest.json are extracted; bundles cache under PLATEAU_ARTIFACT_DIR (default ~/.cache/plateau-creative-mcp/artifacts), so each city downloads only once. Point PLATEAU_ARTIFACT_INDEX_URL at a different index to use your own mirror.
Downloaded bundles do not include 3D Tiles (they are gigabytes per city). Everything works from the parquet — load_area, all edits, and export_glb single_glb (real geometry, ≤ 1 km² / ≤ 5000 buildings). Only scene_manifest export loses its tile references for downloaded cities (it still emits the edit list, bbox, and attribution, with a tileset_note telling you to narrow to single_glb or run a local build). For full-geometry exports of larger areas, use Option B with a local build.
For Claude Desktop, add to claude_desktop_config.json:
Option B — bring your own artifacts
If you already have plateau-bridge's out_<city>/ outputs, point straight at them:
Smoke run without an MCP client:
Example workflows
1. Cyberpunk Shibuya flythrough (cross-MCP)
2. Tokyo without skyscrapers
3. Office-tower draft (requires zoning fields in the artifact)
Architecture
scene_idis the only shared state. All mutate / export tools must reference it. IDs are server-generated ULIDs.building_uidis the single canonical reference. Nogml_idor batch index alternates.export_glbhard limits: ≤ 1 km² bbox and ≤ 5000 buildings forsingle_glb. Larger scenes returnEXPORT_LIMIT_EXCEEDEDwith a suggestion to switch toscene_manifest.- Attribution is wrapped at the executor level — no handler can return a result without it.
Configuration
See .env.example for a copy-paste template.
Footprint geometry vs box fallback
Polygon extrusion via the DuckDB spatial extension is on by default; on first run the extension is auto-installed. If install/load fails (offline CI, restricted environment), the exporter cleanly falls back to centroid-anchored 12 m × 12 m boxes per building. available_attributes in load_area's response includes footprint_polygon when the high-fidelity path is active.
Mesh merging + sidecar index
single_glb exports merge every building into one BufferGeometry — one draw call, dramatically smaller GLB JSON overhead. To preserve per-building identity for downstream editing tools, each export writes a sidecar <basename>.buildings.json next to the GLB:
scene_manifest mode
When the export exceeds the single-GLB limits (1 km² / 5000 buildings) you can request mode: "scene_manifest". The manifest links the corresponding 3D Tiles tileset.json and enumerates the leaf tile content URIs whose bounding regions intersect the scene bbox — downstream consumers can lazy-load just the tiles they need:
3D Tiles are produced by a local build and are not part of the on-demand download bundles. For downloaded cities, scene_manifest returns a tile-less manifest (edits + bbox + attribution) with a tileset_note.
POI linking
link_buildings_to_pois requires OSM_OVERPASS_URL. With it set, the tool POSTs an Overpass QL query for amenity / shop / office / tourism / leisure nodes inside the scene bbox, then matches each named POI to the nearest building centroid within max_distance_m. ODbL attribution is automatically merged into the returned envelope.
Out of scope (intentionally)
export_3dgs— Gaussian-splat round-trip is future work.export_usd— a separate Isaac Sim project.simulate_earthquake/simulate_flood— a separate risk-analysis effort.- Generic OSM querying — OSM-MCP territory.
- Cross-MCP auto-orchestration — your LLM does that.
Attribution & license
- Software: MIT (this repo).
- Data: PLATEAU is CC BY 4.0 (© Project PLATEAU / MLIT). OSM POIs are ODbL 1.0.
- Every tool response carries
attribution_metadata.export_glbinjects it intoasset.extras.attributionand writes aLICENSE.txtnext to the GLB. Keep that file alongside the GLB and credit PLATEAU in any derived video / screenshot.
GLB compression
Set options.compress: true on export_glb to apply the gltf-transform pipeline (dedup → weld → prune → quantize). Real-world numbers from a 0.4 km² Shibuya patch (507 buildings, 138k triangles): 9.94 MB → 6.05 MB (~40% reduction), no perceptible loss. Output uses the standard KHR_mesh_quantization extension — Blender, Unity, Unreal, and three.js all decode it natively.
Talking to upstream MCP servers
JsonRpcMcpClient is a minimal MCP-over-HTTP client (tools/list + tools/call) exposed as a building block for upstream integrations.
OfficialPlateauMcpClient is a typed wrapper around the official PLATEAU MCP server (hosted at https://api.plateauview.mlit.go.jp/mcp). It covers all 13 upstream tools:
- Spec:
specOutline,specRead - Catalog:
getMetadata,searchAreas,getArea,searchDatasets,getDataset,listDatasetTypes - CityGML:
citygmlGetAttributes,citygmlGetFeatures,citygmlGetGeoidHeight,getCityGmlFiles - Helper:
explainSpatialId
Response shapes use [k: string]: unknown index signatures because the upstream spec is still evolving — validate at the call site if you need strict types.
Examples
Reproducible workflow recipes live in examples/ — Claude Desktop prompts (examples/claude-prompts.md), Cursor .cursorrules (examples/cursor-rules.md), a Blender Python snippet showing the merged-GLB + sidecar handoff (examples/blender-mcp-handoff.py), and the full cyberpunk-Shibuya walkthrough (examples/cyberpunk-shibuya.md).
Contributing
Issues and PRs are welcome — see CONTRIBUTING.md. Run npm run lint && npm run typecheck && npm test before opening a PR.
What's included
10 own MCP tools + 13 proxied tools from the official PLATEAU MCP (combined 23-tool catalog when PLATEAU_UPSTREAM_ENABLED=true), on-demand artifact download (download_area + optional load_area auto-fetch) so no data clone is needed, polygon footprint extrusion (DuckDB spatial) with box fallback, mesh merging + sidecar identity index, GLB compression (~40% shrink), scene_manifest mode with 3D Tiles tile enrichment, Overpass POI linking, three data-access modes (TS+duckdb artifact / Python subprocess / upstream MCP-over-HTTP), and an allowlist-gated cross-MCP bridge to BlenderMCP-compatible servers.
Built by Yodo Labs — PixelX Inc. / ピクセルエックス株式会社
Built on top of plateau-bridge · Data © Project PLATEAU / MLIT (CC BY 4.0)
Questions: [email protected]
Source: README.md at commit 04e1f6a
Tools
0Version history
1- v0.1.1LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts