Skip to main content
Glama
malkreide

SBB Open Data MCP Server

by malkreide

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

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

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
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

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.7/5.0

Scored across 9 tools

Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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.

Maintenance

ActivityActive
ResponsivenessUnresponsive