Repository navigation
Releases: tum-gis/3dcitydb-mcp-server
Release list
v1.0.1
Patch release fixing the HTTP/SSE deployment for modern MCP clients.
Fix: 405 Method Not Allowed for modern MCP clients (VS Code, ...)
Modern MCP clients speak the Streamable HTTP transport: they POST to the
configured URL and only fall back to SSE if the endpoint answers 404. The
1.0.0 SSE server only accepted GET on /sse, so such clients got
405 Method Not Allowed and never connected.
-
New endpoint
http://your-server:8080/mcp(Streamable HTTP transport),
served by the same MCP server as the existing/sseendpoint. Both run in
the same process;/sseand/healthare unchanged. -
Point VS Code (or any other modern client) at:
{ "mcpServers": { "3dcitydb": { "type": "http", "url": "http://localhost:8080/mcp/" } } }
No breaking changes; stdio and Gradio-UI deployments are unaffected.
v1.0.0
3D viewer for the Chat Assistant (new deployment option 3b)
The headline feature of this release: the Chat Assistant can now show your
city model in 3D and link the conversation to the viewer.
- New deployment option 3b — Fullstack + 3D viewer. Layering
docker-compose.fullstack.viz.ymlon top of the fullstack stack embeds the
3DCityDB Web Map Client (Cesium) into the Chat tab. The model is streamed as
3D Tiles generated on demand by acitydb-3dtilercontainer; tick
"Generate 3D tiles after import" or press Refresh 3D tiles at any time. - Answer highlighting. When an answer lists features, they are highlighted
in the 3D view and the camera flies to them. - Viewer to chat selection. Toggle the selection mode in the viewer, click
features (with a panel to pick the right level — a wall, its building, its
siblings), and the chatbot receives the selection as a[VIEWER SELECTION]
context block, so questions can say "these buildings" / "die ausgewählten
Objekte". - New MCP tools for the viewer:
resolve_highlight_targets— expands feature ids to viewer-highlightable geometry plus a camera targetget_feature_tree— containment neighbourhood of a picked feature (ancestors, children, siblings)describe_selection— summarizes a finished multi-feature selection- Only offered when the viewer is enabled (
ENABLE_VIZ=true, option 3b); in non-viz deployments they stay out of the tool list entirely.
- Viewer configuration via
VIEWER_TERRAIN_*andVIEWER_WMS_*environment variables (defaults: basemap.de DGM5 terrain + WMS base map).
WebUI improvements
- Live progress for system prompt re-assembly: per-step progress is streamed into an auto-growing status box; the button is disabled while running and the page no longer jumps (scroll position is preserved).
- Re-assemble after import: the prompt rebuild after an import is deferred and offered via a popup when you switch to the System Prompt tab; the status line reports the full prompt size.
- MCP Inspector now shows live server data: the server's self-description and the current tool list are read from the running MCP server, not hard-coded.
- Stays on the Import tab after a successful import; fixed rebuild step counting; removed the Progress accordion on the System Prompt tab.
MCP server
assemble_promptandrun_queryare listed first inlist_tools(), so MCP clients (e.g. the MCP Inspector) present the two primary tools up top.
Fixes
- Firefox 3D viewer crash fixed. Starting the Cesium viewer while its iframe is hidden (e.g. right after an import, while you are still on the Import tab) broke the render loop in Firefox ("An error occurred while rendering"). The viewer now starts — and tile reloads — only once the viewer tab is actually visible.
- Stale highlights/camera no longer survive a tile reload; the start-view zoom now uses
zoomToStartPosition.
Documentation
- README: option 3b (3D viewer) in the deployment options, 3D Tiles streaming and
citydb-3dtilerexplained, viewer selection documented, corrected tab/settings descriptions, addedLITELLM_TIMEOUT/LITELLM_TIMEOUT_LOCALto the configuration reference. .env.exampledocuments the fullstack/BYOD variants and LLM provider options.
Version bump
MCP server, Python package, and Chat Assistant are now at v1.0.0.
Notes
- The pre-built Docker image for option 3b is published as
khaoulakanna1/citydb-mcp-agent:latest(single image; the viewer is included and activated viaENABLE_VIZ=true).
v0.3.4
MCP Server
- Split the PostGIS function list in the prompt into dimension-independent functions (
ST_GeometryType,ST_MakePoint, …) and 2D-only functions (ST_Intersects,ST_Area, …). The 2D list is now prepended with a warning that these functions likely give wrong results when applied to 3D geometries. - Removed the redundant
supported_spatial_opsfield from the DB context snapshot; the prompt's spatial function list is now the single source of truth.
Chatbot (Web UI)
- The per-turn distilled "how the answer was found" story is now injected as a separate system message directly after the assistant answer it belongs to, clearly framed as an auto-generated, system-only block. This prevents the model from reading it as its own past output and imitating the "How I solved it" section in new answers.
- Added a sanitizer that strips self-generated story sections from the chat history before they re-enter the context, and reworded output rule 7 to reference the new block format.
v0.3.3
Features
- IFC import support (
.ifc→ CityGML 3.0 → 3DCityDB) - File upload support (CityGML, IFC, etc.) via the web browser. Uploaded files can then be imported into an empty 3DCityDB
Improvements
- List closed qualifier value sets for flat measure properties in prompt assembly (
resolve_properties+assemble_prompt) - Forbid internal working notes (story/reasoning) in final chat answers (RULE 7)
- Tune Postgres for large datasets and expose MCP SSE endpoint (port 8080) in the fullstack compose file
Fixes
- Fix null percentage calculation to include all value columns
- Fix entrypoint CRLF on Windows builds
- Fix a JSON DISTINCT bug in prompt assembly
v0.3.0
A significant release bringing separated versioning, a new version tool, and a large LLM-backend upgrade.
Separate MCP server & ChatBot versions
- The MCP server version (
pyproject.toml) and the ChatBot version (production/webui/__init__.py) are now tracked independently. - New
get_server_versionMCP tool lets any connected client query the running server's version. - The WebUI now shows both versions in the subtitle line and in the PDF export header.
LLM backend upgrades
- Upgraded
langchain-ollamato 0.3.x with exposed thinking levels. - Per-model LLM configuration, OpenAI reasoning effort, and Ollama endpoint discovery.
- Added "max" thinking level for OpenAI-compatible endpoints.
- Hardened the local ReAct agent for
granite4.2and other Ollama models. - Aligned
OLLAMA_NUM_CTXfallback default with the README (32768 → 65536).
Documentation & prompting
- Expanded the 3DCityDB v5 schema documentation in the system prompt.
- README updates for thinking levels, local model support, and the new UI features, plus a paper citation and corrected configuration defaults.
- WebUI headline reworded to "3DCityDB v5 MCP Server and Chatbot".
Install
pip install "git+https://github.com/tum-gis/3dcitydb-mcp-server.git@v0.3.0"Note: not yet published to PyPI — the latest PyPI release remains 0.2.2.
v0.2.3
Release of the current main trunk. This tag pins the state of the code as of e3b0878.
What's new since v0.2.2
- Country-aware codelists
- CityJSON import support
- WebUI improvements
Note: the latest release on PyPI is still 0.2.2. This v0.2.3 tag is not published to PyPI.
pyproject.tomlat this tag still reads0.2.0(the tag is a trunk pin, not a source bump).
Install
pip install "git+https://github.com/tum-gis/3dcitydb-mcp-server.git@v0.2.3"