Skip to main content
Glama

Wszystkie pociągi w Polsce (PKP Intercity, Polregio, Koleje Mazowieckie, SKM, Koleje Śląskie, Dolnośląskie, Wielkopolskie, Małopolskie, ŁKA, Arriva…), autobusy PKS, FlixBus i komunikacja miejska ~25 miast w jednej wyszukiwarce połączeń. Bez klucza API, bez rejestracji, za darmo – tylko otwarte dane przewoźników i zarządców.

Przykładowe pytania

  • „Jak dostanę się jutro na 9:00 z Wrocławia do Zakopanego?”

  • „Czym najszybciej z Gdyni Orłowo na Politechnikę Gdańską?”

  • „Ile kosztuje IC z Poznania do Warszawy w piątek po 16:00?”

  • „Co odjeżdża teraz z przystanku Kraków Rondo Mogilskie?”

  • „Którędy jedzie Podhalanin i ile ma opóźnienia?”

  • „Mam pociąg o 18:36 z Poznania Głównego – o której autobus z Niepruszewa, żeby zdążyć?”

Co potrafi

Narzędzie

Do czego

plan_journey

Połączenia A → B z przesiadkami pociąg ↔ autobus, „wyjazd po” albo „przyjazd do”, limit przesiadek, wybór środków transportu. Miejsce = stacja, całe miasto („Kraków”) albo współrzędne.

departures

Tablica odjazdów/przyjazdów z peronami i opóźnieniami; filtr „tylko w kierunku Poznania”.

trip_details

Cały przebieg pociągu (po numerze: 3510, IC 3510, nazwie: Podhalanin albo ref) z opóźnieniem na każdej stacji, odwołaniami i objazdami.

find_stops / nearby_stops

Wyszukiwanie stacji (literówki i brak polskich znaków OK) oraz przystanków w pobliżu punktu.

rail_disruptions

Utrudnienia na kolei z PKP PLK: zamknięcia torów, komunikacja zastępcza (ZKA), odwołania, awarie, ograniczenia prędkości – oficjalne komunikaty PKP PLK. Pociągi objęte utrudnieniem są oznaczone ⚠ także w plan_journey, departures i trip_details. Na publicznym serwerze włączone; lokalnie wymaga darmowego klucza PLK.

weather_warnings

Ostrzeżenia IMGW (burze, wiatr, oblodzenie, upał, śnieg) i powodziowe dla powiatu danego miejsca; plan_journey sam dodaje ostrzeżenia dla startu i celu podróży.

data_sources

Jakie dane są załadowane, do kiedy ważne, licencje i wymagane atrybucje.

Pokrycie (domyślnie): wszyscy przewoźnicy kolejowi koordynowani przez PKP PLK – PKP Intercity, Polregio, Koleje Mazowieckie, SKM Trójmiasto, SKM Warszawa, Koleje Śląskie, Dolnośląskie, Wielkopolskie, Małopolskie, ŁKA, Arriva, RegioJet, Leo Express – plus WKD, PKS Poznań, PKS Kalisz i przewoźnicy kaliscy, Sindbad, Kombus, FlixBus/FlixTrain (połączenia z i do Polski). Komunikacja miejska ~25 miast (Warszawa, Kraków, Łódź, Poznań, Trójmiasto, GZM, Szczecin, Lublin, Białystok, Bydgoszcz, Legnica…) – na publicznym serwerze włączona, lokalnie opcjonalna. Przystanki miejskie wyszukasz z nazwą miasta: „Kraków Rondo Mogilskie”, „Warszawa Politechnika”. Pełna lista: feeds/feeds.json.

Opóźnienia na żywo: wszystkie pociągi (dane PKP PLK) oraz komunikacja miejska Krakowa, Poznania, Gdańska i Szczecina (GTFS-Realtime). Utrudnienia na kolei (awarie, zamknięcia torów, komunikacja zastępcza, odwołania) prosto z Otwartych Danych Kolejowych PKP PLK – na publicznym serwerze działają od razu; lokalnie po ustawieniu darmowego klucza ROZKLAD_PLK_API_KEY.

Ceny: plan_journey podaje cenę z oficjalnego cennika przewoźnika dla PKP Intercity (TLK/IC według odległości po torze, EIC/EIP według par stacji) oraz Polregio, Kolei Mazowieckich, Śląskich, Dolnośląskich, Małopolskich, ŁKA i Arrivy (bilet normalny, 2. klasa, według odległości). Gdy odległość wypada blisko granicy przedziału cennika, podajemy widełki, np. 68–69 zł – przebieg toru w danych różni się od odległości taryfowej o kilka km. To cena maksymalna biletu normalnego (bez ulg i promocji); w sprzedaży często jest niższa – rabaty PKP IC, taryfy wojewódzkie (np. Taryfa Pomorska, Małopolska) i oferty przewoźników. Cenniki są informacją publiczną wykorzystywaną na podstawie art. 5 ustawy o otwartych danych. Aktualizacja: npm run build-fares -- <cennik.pdf> <url> <obowiązuje-od> (PKP IC) i python3 scripts/build-regional-fares.py (przewoźnicy regionalni). Dokładna cena i bilet: przy każdym połączeniu kolejowym plan_journey podaje link do wyszukiwarki Koleo (sprzedaje bilety wszystkich przewoźników kolejowych) z tą samą trasą i godziną – tam widać aktualną cenę z promocjami i można kupić bilet. Serwer nie pobiera cen ze sklepów przewoźników (nie ma do tego otwartego API, a automatyczne odpytywanie sklepów łamałoby ich regulaminy). Agent z przeglądarką (np. Claude in Chrome albo Playwright MCP) może jednak otworzyć ten link na Twoją prośbę i odczytać cenę – tak, jak zrobiłbyś to sam. Brak cen: komunikacja miejska, autobusy, SKM, Koleje Wielkopolskie (nie znaleźliśmy aktualnego cennika) – PR mile widziane.

Related MCP server: transport-gzm

Najszybciej: publiczny serwer (bez instalacji)

Adres MCP: https://rozklad.compabase.com/mcp (Streamable HTTP, bez logowania, limit 60 zapytań/min na IP).

  • Claude (web/desktop): Ustawienia → Connectors → Add custom connector → wklej adres.

  • ChatGPT: Settings → Connectors (tryb deweloperski) → dodaj serwer MCP z tym adresem.

  • Claude Code: claude mcp add --transport http rozklad https://rozklad.compabase.com/mcp

  • Cursor / VS Code: {"mcpServers": {"rozklad": {"url": "https://rozklad.compabase.com/mcp"}}}

Serwer hostuje Compabase pro publico bono, ze wszystkimi feedami (pociągi, PKS, FlixBus, komunikacja miejska). Przy intensywnym użyciu uruchom lokalnie (niżej).

Prywatność: publiczny serwer liczy wyłącznie zagregowane statystyki dzienne – ile razy użyto każdego narzędzia, z jakim skutkiem (np. „nie znaleziono miejsca”), nazwy klientów MCP i liczbę unikalnych użytkowników (sól zmieniana codziennie, trzymana tylko w pamięci). Nie zapisujemy adresów IP, współrzędnych ani tras. Podgląd: /stats.

Instalacja lokalna

Potrzebujesz Node.js ≥ 20. Zanim paczka trafi na npm, zamiast rozklad-mcp w poleceniach poniżej użyj github:ContentWriterco/rozklad-mcp (np. npx -y github:ContentWriterco/rozklad-mcp). Pierwsze uruchomienie pobiera ~40 MB rozkładów (potem cache i automatyczne odświeżanie co 12 h).

Claude Desktop

Settings → Developer → Edit Config i dopisz:

{
  "mcpServers": {
    "rozklad": {
      "command": "npx",
      "args": ["-y", "rozklad-mcp"]
    }
  }
}

Claude Code

claude mcp add rozklad --scope user -- npx -y rozklad-mcp

Cursor / Windsurf

~/.cursor/mcp.json (Windsurf: ~/.codeium/windsurf/mcp_config.json) – ten sam JSON co dla Claude Desktop.

VS Code (Copilot)

.vscode/mcp.json:

{ "servers": { "rozklad": { "type": "stdio", "command": "npx", "args": ["-y", "rozklad-mcp"] } } }

OpenAI Codex CLI

~/.codex/config.toml:

[mcp_servers.rozklad]
command = "npx"
args = ["-y", "rozklad-mcp"]
tool_timeout_sec = 120

Zdalnie (HTTP) – ChatGPT, agenci w chmurze, n8n

npx -y rozklad-mcp --http --port 3000 --host 0.0.0.0
# endpoint: http://twoj-serwer:3000/mcp   (Streamable HTTP, bezstanowy)   health: /health

albo Docker:

docker build -t rozklad-mcp .
docker run -p 3000:3000 -v rozklad-cache:/data rozklad-mcp

Z kodu źródłowego

git clone https://github.com/ContentWriterco/rozklad-mcp && cd rozklad-mcp
npm install && npm run build
node dist/index.js plan "Zbąszyń" "Kraków" --date jutro --time 7:00

Konfiguracja

Zmienne środowiskowe (w JSON-ie klienta: "env": { "ROZKLAD_FEEDS": "trains,regional,city:Poznań" }):

Zmienna

Domyślnie

Opis

ROZKLAD_FEEDS

trains,regional

Grupy (trains, regional/pks, city), pojedyncze feedy (warszawa), miasta (city:Kraków), regiony (region:wielkopolskie), all, wykluczenia (-sindbad).

ROZKLAD_EXTRA_FEEDS

–

Własne pliki GTFS: moj-pks=https://…/gtfs.zip;inny=https://…

ROZKLAD_FEEDS_FILE

–

Własny rejestr feedów (np. w forku dla jednego regionu).

ROZKLAD_MIN_TRANSFER

4

Minimalny czas przesiadki (min).

ROZKLAD_MAX_WALK_M

500

Maks. dojście pieszo między przystankami przy przesiadce.

ROZKLAD_REFRESH_HOURS

12

Jak często sprawdzać nowe rozkłady.

ROZKLAD_LIVE

1

0 wyłącza opóźnienia na żywo.

ROZKLAD_CACHE_DIR

cache systemu

Gdzie trzymać pobrane rozkłady.

ROZKLAD_PLK_API_KEY

–

Klucz Otwartych Danych Kolejowych PKP PLK – włącza utrudnienia i komunikację zastępczą.

ROZKLAD_CONN_CACHE_MB

400

Budżet pamięci na tablice połączeń dla kolejnych dni.

ROZKLAD_STATS

–

Tryb HTTP: 1 = anonimowe dzienne liczniki użycia pod /stats.

Pamięć: domyślny zestaw (pociągi + PKS) ≈ 300–500 MB RAM i ~10 s startu. Komunikacja miejska dużych miast jest cięższa (Warszawa ≈ +250 MB, wszystkie miasta razem ≈ 1,2 GB i ~70 s startu), dlatego lokalnie włączasz ją świadomie, np. trains,regional,city:Warszawa.

CLI (bez agenta)

rozklad-mcp plan "Warszawa" "Gdańsk" --date piątek --time 16:00
rozklad-mcp plan "Zbąszyń" "Gdańsk Główny" --time 9:00 --arrive-by
rozklad-mcp departures "Poznań Główny" --direction Wrocław --duration 180
rozklad-mcp trip "IC 3510" --date jutro
rozklad-mcp stops "szklarska"
rozklad-mcp sources

Skąd dane? (i dlaczego bez klucza)

Wszystko pochodzi z otwartych danych publikowanych przez przewoźników i zarządców (ponowne wykorzystywanie informacji sektora publicznego, Krajowy Punkt Dostępowy MMTIS):

Serwer nie scrapuje stron przewoźników. Odpowiedzi zawierają wymagane atrybucje źródeł. Dane bywają niekompletne (np. zmiany w ostatniej chwili, autobusowa komunikacja zastępcza) – przed ważną podróżą sprawdź u przewoźnika.

Brakuje Twojego PKS-u albo miasta? 🙋

To najprostszy i najcenniejszy sposób, żeby pomóc. Większość PKS-ów nie publikuje jeszcze danych – ale coraz więcej musi (rozporządzenie UE 2017/1926). Jeśli znasz link do pliku GTFS:

  1. dopisz wpis do feeds/feeds.json (szablon w CONTRIBUTING.md),

  2. npm run check-feeds – sprawdzi, czy link działa,

  3. otwórz Pull Request.

Nie programujesz? Otwórz zgłoszenie „Dodaj przewoźnika” z linkiem albo nazwą firmy – albo napisz do przewoźnika, żeby opublikował GTFS w KPD.

Szukamy pomocy: Wrocław (blokuje pobieranie automatyczne), Zielona Góra i Leszno (linki z KPD nie działają), Olsztyn, Częstochowa, PKS-y w całej Polsce, GTFS-Realtime kolejnych miast, aktualny cennik Kolei Wielkopolskich.

Jak to działa

  • GTFS (pociągi + autobusy + miasta) łączony w jedną sieć w pamięci; przystanki tej samej stacji grupowane, przystanki w promieniu 500 m łączone przejściem pieszym – stąd przesiadki pociąg ↔ PKS na dworcach.

  • Wyszukiwanie: Connection Scan Algorithm w wariancie wielokryterialnym (czas przyjazdu × liczba przesiadek) – kilkadziesiąt ms na zapytanie dla całej Polski.

  • Opóźnienia: JSON z danymi PKP PLK (pociągi) i GTFS-Realtime miast (własny dekoder protobuf, bez zależności), cache 60–90 s.

  • Zero natywnych zależności (działa na macOS/Windows/Linux/ARM), ~3 tys. linii TypeScriptu – łatwo zrozumieć i rozbudować.

Rozwój

npm install
npm test            # build + testy (bez internetu, na syntetycznej sieci)
npm run check-feeds # czy wszystkie linki w rejestrze działają
ROZKLAD_LOG=debug node dist/index.js plan "A" "B"

Pomysły na rozwój: taryfy wojewódzkie (Pomorska, Małopolska, Kujawsko-Pomorska) i ceny biletów miejskich, opóźnienia na żywo w wyszukiwaniu połączeń, mapy tras (shapes), utrwalony indeks dla szybszego startu.

Licencja

Kod: MIT. Dane: na licencjach źródeł – patrz data_sources i feeds/feeds.json. Projekt niezależny, niezwiązany z Grupą PKP ani przewoźnikami.


English

rozklad-mcp is an MCP server that gives AI assistants and agents Polish public transport timetables: every train in Poland (all carriers dispatched by PKP PLK – PKP Intercity, Polregio, Koleje Mazowieckie, SKM, regional railways), PKS/regional buses that publish open data, FlixBus/FlixTrain services to and from Poland, and urban transit in ~25 cities (Warsaw, Kraków, Łódź, Poznań, Gdańsk/Gdynia, Silesia GZM, Szczecin, Lublin, Białystok…).

  • plan_journey – multi-criteria connection scan with train ↔ bus ↔ tram transfers, depart-after / arrive-by, coordinates as endpoints, published price-list fares of PKP Intercity and regional rail carriers, plus a Koleo link with the exact current price and tickets

  • departures – live departure board with platforms and delays

  • trip_details – full route of a train or bus with live delays and cancellations (trains; city transit in Kraków, Poznań, Gdańsk, Szczecin)

  • rail_disruptions – official PKP PLK disruptions: failures, track closures, replacement buses, cancellations (affected trains are flagged ⚠ in all answers)

  • weather_warnings – official IMGW-PIB weather and flood warnings for the county of a place (also added to journeys automatically)

  • find_stops, nearby_stops, data_sources

Try it in 30 seconds: add https://rozklad.compabase.com/mcp as a custom connector in Claude or ChatGPT, or run claude mcp add --transport http rozklad https://rozklad.compabase.com/mcp. Locally: npx -y rozklad-mcp (stdio) in any MCP client, or --http for a Streamable HTTP endpoint. No API key – open GTFS data (PKP PLK via mkuran.pl, carriers' and cities' own feeds). Station names work with or without Polish diacritics; a bare town name means all of its stops.

Example prompts: "How do I get from Wrocław to Zakopane by 9 am tomorrow?", "What leaves Kraków Rondo Mogilskie now?", "How much is the IC from Poznań to Warsaw on Friday evening?"

Contributions of new feeds are very welcome – see CONTRIBUTING.md.

Available Tools

6 tools
data_sourcesData sources, coverage and licencesB
Read-only
Inspect

Which carriers/feeds are loaded, their validity dates, licences and required attribution; which feeds can be enabled.

Inputs: no named parameters.

departuresStation departures / arrivals boardA
Read-only
Inspect

Departure (or arrival) board for a station or stop: time, live delay, train/bus line, platform, destination and main stops. Optionally only services going towards a given place.

Inputs: station (required), date, live, time, +5 more.

find_stopsFind stations and stopsA
Read-only
Inspect

Search stations/stops by name (fuzzy, diacritics optional). Shows modes, coordinates and source feeds.

Inputs: query (required), limit, modes.

nearby_stopsStops near a locationB
Read-only
Inspect

Stations and stops within a radius of coordinates (e.g. after geocoding an address).

Inputs: lat (required), lon (required), modes, radius_m.

plan_journeyPlan a journey (train / bus)A
Read-only
Inspect

Find connections between two places in Poland, including changes between trains and buses (PKS). from/to accept a station name ("Poznań Główny"), a town ("Zakopane" = all its stops) or coordinates "52.40,16.91". Returns several options with times, platforms, operators, changes and live delays (today).

Inputs: to (required), from (required), date, live, +6 more.

trip_detailsTrain / trip details with live delayA
Read-only
Inspect

All stops of one train or bus run with times, platforms and live delays/cancellations. Identify it by ref (from plan_journey/departures) or by train number/name (e.g. '3510', 'IC 3510', 'Podhalanin') plus date.

Inputs: ref, date, live, train.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.8/5.0

    Scored across 6 tools

    Disambiguation5/5

    Each tool targets a clearly distinct purpose: journey planning, departure boards, trip details, stop search by name, stop search by coordinates, and data source metadata. The boundaries are well defined, and descriptions clarify how tools relate (e.g., ref from plan_journey/departures). No tool overlaps significantly with another.

    Naming Consistency4/5

    All names use snake_case consistently, which aids readability. However, the set mixes verb-led names (plan_journey, find_stops) with noun-led names (data_sources, departures, trip_details, nearby_stops), a minor deviation from a single pattern.

    Tool Count5/5

    Six tools are well-scoped for a journey-planning server covering routing, stop lookup, real-time boards, trip details, and metadata. Each tool has a clear, non-redundant role without obvious padding or missing essentials.

    Completeness4/5

    The surface covers core operations: find stops, plan journeys, get departures/arrivals, inspect trip details, and discover data sources. Minor gaps exist, such as no dedicated tool for service alerts/disruptions or line-level schedule queries, but agents can work around these using available tools.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      C
      maintenance
      Enables AI agents to search for stops and stations across all Norwegian public transport and to fetch real-time departure data — planned versus expected times, delays, platform, operator, and disruption messages — with no API key required. Covers bus, tram, metro, train, and ferry nationwide through Entur's open APIs, with filtering by line, destination, and future departure time.
      2
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      Connects AI assistants to live public transport data across Great Britain, enabling searches for stops and stations, real-time bus and rail departures, live vehicle positions, service disruptions, and door-to-door journey planning. All tools are read-only and require an API key.
      10
      29 PyPI
      MIT