swiss-road-mobility-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_PORT | No | Port for SSE transport (default: 8001). | |
| MCP_LOG_LEVEL | No | Log level: DEBUG, INFO, WARNING, ERROR (default: INFO). | |
| MCP_TRANSPORT | No | Transport mode: 'stdio' or 'sse'. Default is stdio. | |
| MCP_AUTH_TOKEN | No | Bearer token for SSE authentication. If set, all SSE requests must include Authorization header. | |
| MCP_LOG_FORMAT | No | Log format: 'text' or 'json' (default: text). | |
| MCP_RATE_LIMIT | No | Max requests per client IP per rate window (default: 60). | |
| ALLOWED_ORIGINS | No | Comma-separated CORS origins (default: '*'). | |
| MCP_RATE_WINDOW | No | Rate window in seconds (default: 60). | |
| MCP_TRACING_ENABLED | No | Enable OpenTelemetry tracing ('true'/'false'). | |
| OPENTRANSPORTDATA_API_KEY | No | API key for opentransportdata.swiss to access traffic tools. Required for traffic tools; without them they return descriptive error messages. | |
| OTEL_EXPORTER_OTLP_ENDPOINT | No | OTLP collector URL for tracing. |
Capabilities
Features and capabilities supported by this server
| 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 |
|---|---|
| road_find_sharingA | Find shared mobility vehicles and stations near a location in Switzerland. Searches for bikes, e-bikes, e-scooters, cars, and other shared vehicles within a radius around GPS coordinates. Returns real-time availability data from sharedmobility.ch. Like checking a mobility app: "What sharing options are near me?" Data source: sharedmobility.ch (Swiss Federal Office of Energy). No API key required – completely open data! Returns: JSON with nearby vehicles/stations, grouped by type, with availability status and booking app links. |
| road_search_sharingA | Search for shared mobility stations by name or address. Full-text search across all Swiss shared mobility stations. Useful when you know the station name but not the coordinates. Example: "Find all PubliBike stations near 'Bahnhof'" Returns: JSON with matching stations, their locations, and availability. |
| road_sharing_providersA | List all shared mobility providers operating in Switzerland. Shows which companies offer shared bikes, e-scooters, cars etc., what vehicle types they have, and links to their booking apps. Like checking the "About" page of a mobility platform. Returns: JSON with all providers, their vehicle types, and app links. |
| road_find_chargerA | Find EV charging stations near a location in Switzerland. Searches ich-tanke-strom.ch data for nearby charging stations with real-time availability, plug types, and charging power. Like the "nearest charger" feature in an electric car's navigation. Data source: ich-tanke-strom.ch (Swiss Federal Office of Energy). No API key required – completely open data! Returns: JSON with nearby charging stations sorted by distance, including real-time status (free/occupied), plug types, charging power (kW), and operator information. |
| road_charger_statusA | Check real-time availability of EV charging stations. Can check specific stations by ID, or get overall statistics for ALL charging points in Switzerland. Use road_find_charger first to get station IDs, then use this tool to check their current status. Returns: JSON with real-time status per station, or overall statistics (how many free/occupied/out of service). |
| road_check_statusA | Check the health of all road mobility data sources. Tests connectivity to sharedmobility.ch and ich-tanke-strom.ch. Useful for diagnosing connection issues. Returns: JSON with status of each API endpoint. |
| road_traffic_situationsA | Get current Swiss traffic events: accidents, roadworks, congestion. Fetches real-time traffic messages from ASTRA's DATEX II platform. Data is updated live by Swiss Traffic Management Center (VMZ-CH), cantonal police, and road operation units. Complements Phase 1: While road_find_sharing shows WHERE vehicles are available, this tool shows WHY a road is currently blocked. REQUIRES: OPENTRANSPORTDATA_API_KEY environment variable. Free registration: https://api-manager.opentransportdata.swiss Data source: ASTRA VMZ-CH via opentransportdata.swiss (DATEX II v2.3). Cache TTL: 2 minutes (real-time updates). Returns: JSON with list of traffic situations, each containing: - id: Situation identifier - records: List of situation records with: - category: Event type (accident/roadwork/congestion/etc.) - validity_status: active/revoked - start_time / end_time: Validity period - severity: highest/high/medium/low/lowest - description: Human-readable text (German preferred) - creation_time: When situation was created |
| road_traffic_countersA | Get real-time vehicle counts and speeds at Swiss traffic measurement stations. Finds nearby counting stations and returns live traffic flow data: vehicles per hour (separated by light/heavy vehicles) and average speeds. Data is updated every minute by ASTRA and cantonal road authorities. This is the «digital tally counter» of Swiss roads – precise, live, distinguishing passenger cars from trucks. Use case: «How busy is the A1 near Zurich right now?» or «How much truck traffic passes through Lucerne hourly?» REQUIRES: OPENTRANSPORTDATA_API_KEY environment variable. Free registration: https://api-manager.opentransportdata.swiss Data source: ASTRA & cantonal authorities via opentransportdata.swiss (DATEX II). Cache TTL: Site table 24h (static) + measurements 1 minute (real-time). Returns: JSON with nearby counting stations and their current measurements: - site_id: Unique station identifier - name: Station name - distance_km: Distance from search center - latitude / longitude: Station coordinates - supplier: Data provider (ASTRA, Kanton ZH, etc.) - measurement_time: Timestamp of latest measurement - flow_light_vehicles_per_hour: Cars, motorcycles, buses - flow_heavy_vehicles_per_hour: Trucks, articulated lorries - flow_total_per_hour: Combined flow - avg_speed_light_kmh: Average speed of light vehicles - avg_speed_heavy_kmh: Average speed of heavy vehicles |
| road_counter_sitesA | List Swiss traffic counting stations near a location (without real-time data). Returns the measurement site metadata (name, coordinates, supplier) without fetching the live measurement data. Use this to discover available stations before querying road_traffic_counters. Site table is cached for 24 hours (rarely changes). REQUIRES: OPENTRANSPORTDATA_API_KEY environment variable. Free registration: https://api-manager.opentransportdata.swiss Returns: JSON with list of nearby counting stations: - id: DATEX II station identifier (use in road_traffic_counters) - name: Human-readable station name (German) - latitude / longitude: GPS coordinates - distance_km: Distance from your search location - supplier: Data provider (ASTRA, Kanton ZH, Kanton BE, etc.) |
| road_park_railA | Find Park & Rail parking facilities near Swiss train stations. Returns SBB-operated Park & Rail lots with capacity and location. Phase 3 tool – the link between road and rail: «Park here, then take the train.» No API key required – completely open data! Data source: Open-Data-Plattform Mobilität Schweiz (opentransportdata.swiss, Park+Rail GeoJSON). Cache TTL: 5 minutes. Returns: JSON with nearby Park & Rail facilities sorted by distance, including total spaces and capacity by category. |
| road_mobility_snapshotA | Get a complete mobility picture for any Swiss location in one call. Aggregates in parallel:
This is the «mobility cockpit» – the control tower view. Instead of calling 5 different tools, get everything at once. Phase 3 cross-server tool: No extra API key needed beyond what Phase 2 already requires (and Phase 2 data is optional). Perfect for demos: «Show me everything mobility-related at [location].» Data sources:
Returns: JSON with nearest_station, shared_mobility, ev_charging, park_rail, and optional traffic_situations – all for one location. |
| road_multimodal_planA | Plan a multimodal trip: Drive → Park & Rail → Train → Destination. The «Holy Grail» of Phase 3: combines all data sources into a complete door-to-door multimodal route plan. Workflow (all in parallel where possible):
Use case: «I'm in Dietikon with a car. I need to get to Bern. Where can I park? Which train should I take?» No API key required – uses:
Data sources:
Returns: JSON with: - nearest_station: Closest train station from start - recommended_park_rail: Best P+R option - plan_steps: Step-by-step multimodal route - all_ov_connections: All available PT connections - last_mile_sharing: Sharing options at start location |
| road_geocode_addressA | Convert a Swiss address to GPS coordinates using the official federal address registry. Uses swisstopo's amtliches Gebäudeadressverzeichnis (GWR-based) – the authoritative Swiss federal building address register containing every officially registered address in Switzerland. Unlike general geocoders, this returns only verified, legally registered addresses. Every result has an EGAID (Eidgenössischer Adressidentifikator) and EGID (Gebäudeidentifikator) from the federal GWR register. Think of it as the «official digital postman»: if the address exists in Switzerland, it's here. If it's not here, it may not be officially registered. Phase 4 tool – no API key required! Data source: geo.admin.ch / swisstopo amtliches Gebäudeadressverzeichnis. Returns: JSON with matching addresses, each containing: - address: Full address string (e.g. «Bahnhofstrasse 1 8001 Zürich») - latitude / longitude: WGS84 coordinates - feature_id: ID in the federal address register - source: Layer ID (ch.swisstopo.amtliches-gebaeudeadressverzeichnis) |
| road_reverse_geocodeA | Find the nearest official Swiss addresses for given GPS coordinates. Uses the federal building address register (amtliches Gebäudeadressverzeichnis) to identify the nearest registered building addresses to any point in Switzerland. Returns official GWR (Gebäude- und Wohnungsregister) data including:
Especially useful for enriching mobility data: finding the exact legal address of a charging station, Park & Rail facility, or sharing station. Phase 4 tool – no API key required! Data source: geo.admin.ch / swisstopo amtliches Gebäudeadressverzeichnis (GWR). Returns: JSON with nearest official addresses including EGID/EGAID identifiers, municipality data, and building category. |
| road_classify_roadA | Classify roads at a location using the official Swiss topographic road network (swissTLM3D). The swissTLM3D is the authoritative federal road network dataset from swisstopo. It classifies every road in Switzerland by: Road type (Objektart): 🛣️ Autobahn · 🚗 Hauptstrasse · 🏘️ Nebenstrasse · 🚶 Weg/Pfad … Functional class (Verkehrsbedeutung): Hauptverbindungsstrasse · Verbindungsstrasse · Sammelstrasse · Zufahrtstrasse Surface (Belagsart): Hartbelag (Asphalt/Beton) · Weich-/Naturbelag Ownership (Eigentümer): Bund · Kanton · Gemeinde · Privat Access restriction (Verkehrsbeschränkung): Keine Beschränkung · Einsatzkräfte · Landwirtschaft · Fussgänger und Radfahrer · Kein öffentlicher Verkehr … Use cases:
Phase 4 tool – no API key required! Data source: geo.admin.ch / swisstopo swissTLM3D Strassen. Returns: JSON with road segments at the location, each containing: - road_name: Official road name (if assigned) - road_type: {code, label_de, label_en, emoji, network_importance} - surface, functional_class, ownership, access_restriction Plus a type_summary overview. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| plan_trip | Reusable template for a car -> Park & Rail -> train -> destination plan. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| data_sources_catalog | Catalogue of the upstream open-data sources this server aggregates. Read-only, stable, non-parameterised reference data — exactly what an MCP Resource is for (as opposed to the live queries handled by Tools). |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/malkreide/swiss-road-mobility-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server