About rozklad-mcp
rozklad-mcp is an MCP server for travelers and AI clients looking up public transport in Poland, covering trains, buses, and transit in about 25 cities. It handles transfers, live delays, rail disruptions, weather warnings, and selected rail fares.
Key features
- 01Search train and bus connections with transfers
- 02Check station departures and arrivals
- 03View train delays and disruptions along a route
- 04Find nearby stations and stops
- 05Get weather warnings and selected fares
- 06Query journeys and data sources through the CLI
Use cases
- 01Plan intercity train and bus trips in Poland
- 02Check current departures and platform information
- 03Inspect route delays, cancellations, and diversions
- 04Estimate fares for supported rail services
MCP support
The MCP server exposes tools for journey planning, departures, trip details, stop lookup, rail disruptions, weather warnings, and data sources. Clients can connect through its public Streamable HTTP endpoint or a local installation.
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
https://rozklad.compabase.com/mcpclaude mcp add --transport http contentwriterco-rozklad https://rozklad.compabase.com/mcp{"mcpServers":{"contentwriterco-rozklad":{"type":"http","url":"https://rozklad.compabase.com/mcp"}}}Open in Cursor{"servers":{"contentwriterco-rozklad":{"type":"http","url":"https://rozklad.compabase.com/mcp"}}}Open in VS Code{"mcpServers":{"contentwriterco-rozklad":{"type":"http","url":"https://rozklad.compabase.com/mcp"}}}{"mcpServers":{"contentwriterco-rozklad":{"serverUrl":"https://rozklad.compabase.com/mcp"}}}Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.
Tools
Details
From the project READMErozkład-mcp 🚆🚌
Rozkład jazdy PKP, PKS i komunikacji miejskiej dla Twojego asystenta AI.
Serwer MCP: wyszukiwarka połączeń z przesiadkami, odjazdy, opóźnienia na żywo i ceny biletów – w Claude, ChatGPT, Cursorze, VS Code i każdym kliencie MCP.
Podłącz w 30 sekund · Przykładowe pytania · Instalacja lokalna · English
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.
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):
- Pociągi: Otwarte Dane Kolejowe PKP PLK w formacie GTFS przygotowywanym przez Mikołaja Kuranowskiego (PolishTrainsGTFS) – dzięki temu nie potrzebujesz własnego klucza API.
- Autobusy i miasta: pliki GTFS przewoźników i zarządów transportu (linki i licencje w
feeds/feeds.json).
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:
- dopisz wpis do
feeds/feeds.json(szablon w CONTRIBUTING.md), npm run check-feeds– sprawdzi, czy link działa,- 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 ticketsdepartures– live departure board with platforms and delaystrip_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.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.