swiss-housing-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SWISS_HOUSING_CACHE | No | Dump cache directory | ~/.cache/swiss-housing-mcp |
| SWISS_HOUSING_TRANSPORT | No | Transport protocol: stdio, streamable-http, or sse | stdio |
| SWISS_HOUSING_DUMP_TTL_HOURS | No | Dump freshness window in hours | 24 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| lookup_building | Look up a single building by its EGID (federal building identifier). Uses the live geo.admin.ch API — always current, no dump download needed. The EGID is the join key used across Swiss administrative data. |
| address_to_egid | Geocode a Swiss address to EGID/EDID and LV95 coordinates. This is the bridge that makes other data sources EGID-capable: address in → federal building identifier out. |
| lookup_dwellingsA | List all dwellings (EWID) of a building from the daily cantonal dump. Includes rooms, floor area, floor and status per dwelling. |
| new_constructionB | New residential construction per year for a municipality (existing buildings). Returns buildings, dwellings and 4+ room dwellings per year — the 4+ room share is a proxy for family housing and thus for future pupil numbers. Municipality is identified by its BFS number (e.g. 261 = City of Zurich). |
| construction_pipelineB | Buildings and dwellings in the planning/construction pipeline of a municipality. Breaks down by status: projected (GSTAT 1001), approved (1002), under construction (1003). Dwellings under construction today are households in 1-3 years — the early indicator for school-space planning. |
| buildings_in_bbox | Aggregate buildings/dwellings inside an LV95 bounding box. Enables sub-municipal analysis, e.g. school districts: pass the bounding box of a Schulkreis to count new construction within it. LV95 (EPSG:2056): east ~2'480'000-2'840'000, north ~1'070'000-1'300'000. |
| municipality_housing_stats | Housing stock overview of a municipality: buildings, dwellings, room-size mix. |
| explain_codeA | Decode a GWR code value (e.g. GSTAT=1004, GKAT=1020) into human-readable labels. Uses the official code table shipped with the dump (DE/FR/IT). |
| dump_statusA | Cache status of the cantonal GWR dumps (graceful-degradation entry point). Always returns an evaluable status — never silently empty records. If a source is unreachable, this tool tells you when data was last refreshed. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 5 tools
Each tool targets a distinct aspect: listing dwellings, historical construction, pipeline, code explanation, and cache status. There is no overlap or ambiguity in their purposes.
Tool names mix patterns: verb_noun (lookup_dwellings, explain_code), adjective_noun (new_construction), and noun_noun (construction_pipeline, dump_status). While readable, the lack of a uniform pattern reduces consistency.
Five tools is well-scoped for a niche domain like Swiss housing data. Each tool serves a clear function without excess or deficiency.
The tools cover current dwelling data, historical construction, future pipeline, code decoding, and system status. A minor gap is the lack of a dedicated building-level query beyond dwellings, but the set supports the stated planning use case.