Rozklad Mcp

io.github.ContentWritercoPublished by GitHub account ContentWritercov0.4.1Updated Oct 30, 2026

Polish train, bus & city transit timetables: journeys, departures, live delays, fares

VerifiedStreamable HTTPWeb executableLocation & LifestyleData & Analytics

Overview

AI-generated overview

Polish public transport timetables: plan train, bus and city transit journeys, check departures, live delays, disruptions and weather warnings.

What you can do
  • Plan journeys between places in Poland, including train-to-bus changes, with times, platforms, operators and live delays
  • Show departure or arrival boards for a station or stop, optionally filtered by direction
  • Show the full stop-by-stop route of a train or bus with delays and cancellations
  • Find stops by fuzzy name or within a radius of coordinates
  • Report PKP PLK rail disruptions and IMGW weather and flood warnings
  • List loaded data sources with validity dates, licences and attribution
When to use it
Useful when an assistant has to answer practical Polish travel questions: how to get from one town to another, what leaves a stop now, whether a specific train is delayed, or whether disruptions and weather warnings affect a trip.
Requirements
Either the public remote endpoint (no login) or a local install with Node.js 20 or newer via npx; the first local run downloads roughly 40 MB of timetables and caches them. Optional environment variables such as ROZKLAD_FEEDS tune which feeds load; rail disruptions locally need a free PKP PLK key in ROZKLAD_PLK_API_KEY. Network access is needed for live data.
Before you install
The public server is rate-limited and keeps aggregated daily usage statistics, though it says it does not store IP addresses, coordinates or routes. Locally, enabling city transit feeds raises memory use considerably. Fares shown are maximum full-fare list prices, not the actual ticket price, and there are no prices for city transit, buses, SKM or Koleje Wielkopolskie. Data can be incomplete, so verify important trips with the carrier.

Installation

In SourceWeft

  1. Open Rozklad Mcp in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.ContentWriterco%2Frozklad-mcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "rozklad": {
      "type": "http",
      "url": "https://rozklad.compabase.com/mcp"
    }
  }
}

README

rozkł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.

[npm] [MCP Registry] [CI] [Licencja MIT] [Bez klucza API]

[Animacja: użytkownik pyta asystenta AI, jak dojechać ze Zbąszynia do Kórnika; asystent korzysta z rozklad-mcp i podaje pociąg IC, przejście na dworzec autobusowy i autobus PKS z godzinami i ceną]

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ędzieDo czego
plan_journeyPołą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.
departuresTablica odjazdów/przyjazdów z peronami i opóźnieniami; filtr „tylko w kierunku Poznania”.
trip_detailsCał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_stopsWyszukiwanie stacji (literówki i brak polskich znaków OK) oraz przystanków w pobliżu punktu.
rail_disruptionsUtrudnienia 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_warningsOstrzeż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_sourcesJakie 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:

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

Claude Code

bash
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:

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

OpenAI Codex CLI

~/.codex/config.toml:

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

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

bash
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:

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

Z kodu źródłowego

bash
git clone https://github.com/ContentWriterco/rozklad-mcp && cd rozklad-mcpnpm install && npm run buildnode 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ń" }):

ZmiennaDomyślnieOpis
ROZKLAD_FEEDStrains,regionalGrupy (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_TRANSFER4Minimalny czas przesiadki (min).
ROZKLAD_MAX_WALK_M500Maks. dojście pieszo między przystankami przy przesiadce.
ROZKLAD_REFRESH_HOURS12Jak często sprawdzać nowe rozkłady.
ROZKLAD_LIVE10 wyłącza opóźnienia na żywo.
ROZKLAD_CACHE_DIRcache systemuGdzie trzymać pobrane rozkłady.
ROZKLAD_PLK_API_KEY–Klucz Otwartych Danych Kolejowych PKP PLK – włącza utrudnienia i komunikację zastępczą.
ROZKLAD_CONN_CACHE_MB400Budż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)

bash
rozklad-mcp plan "Warszawa" "Gdańsk" --date piątek --time 16:00rozklad-mcp plan "Zbąszyń" "Gdańsk Główny" --time 9:00 --arrive-byrozklad-mcp departures "Poznań Główny" --direction Wrocław --duration 180rozklad-mcp trip "IC 3510" --date jutrorozklad-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

bash
npm installnpm 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

[Animation: a user asks an AI assistant how to get from Zbąszyń to Kórnik; the assistant uses rozklad-mcp and answers with an IC train, a short walk and a PKS bus, with times and price]

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.

Source: README.md at commit 592532c

Tools

8

plan_journey

Plan a journey (train / bus)

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).

Parameterstorequireddatefromrequiredlivetimemodesresultsarrive_bymax_transfersmin_transfer_minutes

departures

Station departures / arrivals board

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.

Parametersdatelivetimelimitmodesstationrequiredarrivalsdirectionduration_minutes

trip_details

Train / trip details with live delay

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.

Parametersrefdatelivetrain

find_stops

Find stations and stops

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

Parameterslimitmodesqueryrequired

nearby_stops

Stops near a location

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

Parameterslatrequiredlonrequiredmodesradius_m

data_sources

Data sources, coverage and licences

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

Takes no parameters.

rail_disruptions

Railway disruptions (PKP PLK)

Current and upcoming disruptions on Polish railway lines from PKP PLK: track closures, replacement buses (ZKA), cancellations, diversions. Optional `query` filters by station name or text (e.g. "Kraków", "ZKA"). plan_journey, departures and trip_details already flag affected trains.

Parameterslimitquery

weather_warnings

Weather & flood warnings (IMGW)

Official IMGW-PIB meteorological warnings (storm, wind, frost, heat, snow, ice...) and flood warnings in Poland. With `place` (town, station or "lat,lon"): warnings for its county (powiat); without: national overview. plan_journey already adds warnings for the start and destination.

Parametersplace

Version history

2
  1. v0.4.1LatestOct 23, 2026
  2. v0.4.0Oct 21, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts