SBB Open Data MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
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 |
|---|---|
| sbb_get_passenger_frequencyA | Ruft Passagierfrequenzdaten (Ein-/Aussteigende) für SBB-Bahnhöfe ab. Datensatz wird jährlich aktualisiert. Enthält Tagesschnitt (DTV), Werktagesschnitt (DWV) und Nicht-Werktages-Schnitt (DNWV) pro Bahnhof und Jahr. Args: params (PassengerFrequencyInput): Filterparameter: - station_name (Optional[str]): Bahnhofsname (Teilsuche) - canton (Optional[str]): Kantonskürzel, z.B. 'ZH' - year (Optional[str]): Jahr, z.B. '2024' - limit (int): Max. Resultate (1–100), Standard 20 - offset (int): Offset für Paginierung - response_format (str): 'markdown' oder 'json' Returns: str: Passagierfrequenzdaten mit DTV/DWV-Werten und Paginierungsinfo. Schema: {station, year, daily_avg, workday_avg, non_workday_avg, canton, operator} |
| sbb_get_rail_disruptionsA | Ruft aktuelle Bahnverkehrsstörungen und -meldungen ab (alle 5 Minuten aktualisiert). Enthält Titel, Beschreibung, Ursache, Start-/Endzeitpunkt und betroffene Linien. Ideal für Echtzeit-Monitoring und Kommunikation bei Ereignissen. Args: params (RailDisruptionsInput): Parameter: - limit (int): Max. Meldungen (1–100), Standard 20 - offset (int): Offset für Paginierung - response_format (str): 'markdown' oder 'json' Returns: str: Liste aktueller Störungsmeldungen mit Zeitfenstern und Beschreibungen. Schema: {title, description, published, start, end, type, author} |
| sbb_get_real_estate_projectsA | Ruft laufende SBB-Immobilien-Bauprojekte (Wohn- und Geschäftsbauten) ab. Täglich aktualisiert. Enthält Projektname, Stadt, Bauphase, Nutzfläche, Baudaten und Beschreibungen (DE/FR/IT/EN). Args: params (RealEstateProjectsInput): Parameter: - city (Optional[str]): Stadt, z.B. 'Zürich', 'Bern', 'Luzern' - phase (Optional[str]): Projektphase, z.B. 'CONSTRUCTION', 'PLANNING' - limit (int): Max. Resultate - offset (int): Paginierung - response_format (str): 'markdown' oder 'json' Returns: str: Immobilien-Bauprojekte mit Baustart, Einzug und Nutzfläche. Schema: {title, city, phase, start_of_construction, move_in, area_m2, description} |
| sbb_get_trains_per_segmentB | Ruft Anzahl Züge pro Streckenabschnitt und Verkehrstyp ab. Deckt SBB, BLS, SOB, DB und weitere Infrastrukturbetreiberinnen ab. Enthält Personenverkehr und Güterverkehr, Trassenkilometer und Stromverbrauch. Args: params (TrainsPerSegmentInput): Parameter: - line_name (Optional[str]): Streckenbezeichnung (Teilsuche) - operator (Optional[str]): Infrastrukturbetreiberin, z.B. 'SBB', 'BLS' - year (Optional[str]): Jahr, z.B. '2025' - traffic_type (Optional[str]): 'Personenverkehr' oder 'Gueterverkehr' - limit (int): Max. Resultate - offset (int): Paginierung - response_format (str): 'markdown' oder 'json' Returns: str: Zugzahlen pro Streckenabschnitt mit Operator und Traffiktyp. Schema: {segment, line, operator, year, train_count, traffic_type, track_km} |
| sbb_get_platform_dataB | Ruft Perrondaten (Länge, Fläche, Typ) für SBB-Bahnhöfe ab. Enthält Perronlänge (m), Netto-/Bruttofläche (m²), Perrontyp und Angaben zur schienenfreien Zugänglichkeit. Args: params (PlatformDataInput): Parameter: - station_name (Optional[str]): Bahnhofsname, z.B. 'Zürich HB' - platform_type (Optional[str]): Perrontyp, z.B. 'Mittelperron' - limit (int): Max. Resultate - offset (int): Paginierung - response_format (str): 'markdown' oder 'json' Returns: str: Perrondaten mit Länge, Fläche und Typ. Schema: {station, platform_nr, type, length_m, gross_area_m2, net_area_m2, accessible} |
| sbb_get_rolling_stockA | Ruft technische Daten zum SBB-Rollmaterial (Züge, Triebzüge, Wagen) ab. Enthält Fahrzeugtyp, Sitzplatzkapazität (1./2. Kl.), Baujahr, Länge und Gewicht. Args: params (RollingStockInput): Parameter: - vehicle_type (Optional[str]): Fahrzeugtyp, z.B. 'IC 2000', 'TGV', 'FV-Dosto' - limit (int): Max. Resultate - offset (int): Paginierung - response_format (str): 'markdown' oder 'json' Returns: str: Rollmaterial-Daten mit Kapazität, Baujahr und technischen Kennzahlen. Schema: {vehicle_type, built_year, seats_1st, seats_2nd, total_seats, length_mm, weight_t} |
| sbb_compare_stationsA | Vergleicht mehrere SBB-Bahnhöfe anhand Passagierfrequenz und Perrondaten. Kombiniert drei Datensätze (Passagierfrequenz, Bahnhofnutzer, Perrons) zu einem kompakten Vergleich. Nützlich für Planungsentscheide, Präsentationen und Standortanalysen. Args: params (CompareStationsInput): Parameter: - stations (list[str]): Liste von Bahnhofsnamen (2–10), z.B. ['Zürich HB', 'Bern'] - year (Optional[str]): Vergleichsjahr, z.B. '2024' Returns: str: Tabellarischer Vergleich der Bahnhöfe mit Passagierfrequenz und Perron-Kennzahlen. |
| sbb_search_stationsA | Sucht Bahnhöfe und Haltestellen der Schweiz (DiDok-Liste des BAV). Deckt alle öV-Haltestellen ab (nicht nur SBB). Enthält UIC-Nummern, Koordinaten, Kantone und Betreiberinformationen. Args: params (StationSearchInput): Parameter: - query (str): Suchbegriff (mind. 2 Zeichen), z.B. 'Wädenswil', 'Zürich' - canton (Optional[str]): Kantonskürzel, z.B. 'ZH' - limit (int): Max. Resultate - response_format (str): 'markdown' oder 'json' Returns: str: Haltestellenliste mit UIC, Kanton und Koordinaten. Schema: {name, uic, canton, operator, coordinates} |
| sbb_list_datasetsA | Listet alle verfügbaren SBB Open Data Datensätze (data.sbb.ch) auf. Gibt Dataset-ID, Titel, Anzahl Datensätze und Aktualisierungsfrequenz zurück. Nützlich zur Übersicht und Entdeckung neuer Datensätze. Returns: str: Vollständige Liste aller SBB Open Data Datensätze. Schema: {dataset_id, title, records_count, update_frequency, themes} |
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 9 tools
Each tool targets a distinct dataset or action (passenger frequency, disruptions, real estate, rolling stock, etc.), so most are easy to tell apart. There is mild overlap around station data: search_stations, get_platform_data, get_passenger_frequency, and compare_stations all touch station-level information, though their specific outputs differ.
All tools use the same 'sbb_' prefix followed by a consistent verb_noun pattern (get_, list_, compare_, search_). The convention is uniform throughout with no mixing of styles.
Nine tools is well-scoped for an open-data portal, with each tool mapping to a distinct SBB dataset or a useful aggregation. Nothing feels redundant or padded.
The surface covers the major SBB datasets plus helpful aggregations (compare_stations) and discovery (list_datasets, search_stations). It is read-only by nature, which fits an open-data server, but there is no generic 'get_dataset_by_id' tool to reach datasets beyond the curated set.