kolejki-nfz-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@kolejki-nfz-mcpGdzie najszybciej dostanę się do okulisty na NFZ w Poznaniu?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Podłącz w 30 sekund
Adres MCP: https://kolejki.compabase.com/mcp (Streamable HTTP, bez logowania).
Claude: Ustawienia → Connectors → Add custom connector → wklej adres.
ChatGPT: Settings → Connectors (tryb deweloperski) → dodaj serwer MCP.
Claude Code:
claude mcp add --transport http kolejki-nfz https://kolejki.compabase.com/mcpLokalnie (stdio):
npx -y kolejki-nfz-mcp, np. w Claude Desktop:
{ "mcpServers": { "kolejki-nfz": { "command": "npx", "args": ["-y", "kolejki-nfz-mcp"] } } }Related MCP server: atlas-przetargow-mcp-py
Co potrafi
Narzędzie | Do czego |
| Dla specjalności, badania albo zabiegu (zwykłymi słowami: „okulista”, „ortopeda”, „rezonans magnetyczny”, „zaćma”, „endoprotezoplastyka biodra”) i miejsca (miejscowość, adres, „lat,lon”): poradnie i szpitale z umową z NFZ w okolicy, posortowane według prognozowanego czasu oczekiwania NFZ (albo odległości), z liczbą oczekujących, średnim czasem czekania, adresem, telefonem, odległością, udogodnieniami (winda, podjazd, parking…) i informacją, czy przyjmują dzieci. Przypadek stabilny albo pilny; poradnia albo oddział szpitalny. |
| Oficjalne nazwy świadczeń NFZ pasujące do słowa – gdy trzeba wskazać dokładne świadczenie. |
| Źródła i zastrzeżenia. |
Przykładowe pytania: „Gdzie najszybciej do endokrynologa na NFZ koło Lublina?”, „Rezonans magnetyczny na NFZ w Gdańsku – gdzie najkrótsza kolejka?”, „Ortopeda dla dziecka w Krakowie, najbliżej Nowej Huty”, „Mam skierowanie pilne do neurologa, mieszkam w Pile – dokąd?”, „Gdzie operacja zaćmy najszybciej w woj. śląskim?”.
Skąd dane
Kolejki: Narodowy Fundusz Zdrowia – API „Terminy leczenia” 1.4 (
https://apinfz.nfz.gov.pl/app-itl-api-pcus/): listy oczekujących zgłaszane przez placówki z umową z NFZ, z prognozowanym czasem uzyskania świadczenia liczonym przez NFZ. Odpowiedzi trzymamy w pamięci podręcznej (6 h) i odpytujemy API powoli, żeby go nie obciążać.Lokalizacja: GUGiK (państwowy rejestr adresów i granic gmin). Odległość w linii prostej – w miastach do adresu placówki, w mniejszych miejscowościach do ich centrum.
Zastrzeżenia: prognoza to szacunek NFZ, nie rezerwacja – na wizytę zapisuje się telefonicznie lub osobiście w placówce. Nie wszystkie świadczenia mają listy oczekujących w tym API (np. zwykłe porady kardiologiczne). Szukamy w województwie wskazanego miejsca. Serwer nie jest usługą NFZ i nie udziela porad medycznych; w nagłym przypadku – 112.
Własny serwer
npx -y kolejki-nfz-mcp --http --port 3000 # MCP: http://localhost:3000/mcp
npx -y kolejki-nfz-mcp find okulista "Poznań"
npx -y kolejki-nfz-mcp find "rezonans magnetyczny" "Gdańsk, Długa 1" --sort distance
npx -y kolejki-nfz-mcp benefits zaćmZmienne: KOLEJKI_CACHE_HOURS, KOLEJKI_CACHE_DIR, KOLEJKI_RATE_LIMIT, KOLEJKI_STATS=1 (anonimowe liczniki pod /stats), KOLEJKI_CONTACT, KOLEJKI_PUBLIC_URL.
Licencja
Kod: MIT. Dane: Narodowy Fundusz Zdrowia (dane publiczne, API „Terminy leczenia”), GUGiK – dane przetworzone. Projekt niezależny, niezwiązany z NFZ, hostowany pro publico bono przez Compabase. Zobacz też leki-mcp, powietrze-mcp, szkoly-mcp, rozklad-mcp i ceny-nieruchomosci-mcp.
English
kolejki-nfz-mcp gives AI assistants NFZ waiting times in Poland: for a specialist visit, diagnostic test or procedure (in everyday Polish words) near a place, it lists clinics and hospitals with an NFZ contract sorted by NFZ's forecast waiting time, with the number of people waiting, address, phone, distance, accessibility and whether children are seen. Stable or urgent cases. Data: NFZ "Terminy leczenia" API (public data). Public endpoint: https://kolejki.compabase.com/mcp (no key), or run locally with npx -y kolejki-nfz-mcp. Not affiliated with NFZ; the forecast is not a booking.
Available Tools
3 toolsdata_sourcesData sourcesCRead-onlyInspect
Where the data comes from and caveats.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety profile. The description adds essentially no behavioral context beyond that — it doesn't say whether this returns provenance metadata, a list, external references, or how large/stable the result is.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short with no wasted words, but it is a sentence fragment that is not front-loaded with a verb and reads as a caption rather than a definition. Brevity here reflects under-specification more than discipline.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no parameters, the description is the only source of information about what this tool yields, and it does not explain the return content, structure, or the nature of the 'caveats'. For a metadata/provenance tool it leaves the agent guessing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline of 4 applies; there is no parameter semantics for the description to clarify.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is a noun-phrase fragment ('Where the data comes from and caveats') that essentially restates the name and title. There is no verb and no statement of what the tool actually returns or does, so an agent cannot confidently distinguish it from siblings like air_quality or air_stations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Nothing indicates when to call this rather than air_quality or air_stations, nor any prerequisite or exclusion. Usage is at best implied by the word 'caveats', which is too weak to count as guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_benefitsNFZ benefit namesARead-onlyInspect
Look up official NFZ benefit names (clinics, wards, tests, procedures) matching a word, e.g. 'rezonans' or 'okulist'. Use the exact name as find_care.benefit.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Word or fragment, e.g. 'kardiolog', 'tomograf', 'zaćm' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint and openWorldHint annotations already establish the safety profile. The description adds useful matching behavior and the downstream find_care.benefit usage, but it does not describe return format, matching exactness, or other behavioral details beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the tool's purpose and followed by a concrete usage instruction. There is no redundant or wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter lookup with full schema coverage and safety annotations, the description provides the essential context and the key sibling handoff. It stops short of describing the return shape, which matters slightly because no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the query parameter is already documented with examples. The description reinforces that it accepts a word or fragment and shows example terms, but adds no syntax or matching semantics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Look up') and resource ('official NFZ benefit names') with examples of the categories returned (clinics, wards, tests, procedures). It also distinguishes its output from the sibling find_care by telling the agent to use the exact name as find_care.benefit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states the usage context: find an official benefit name matching a word, then pass the exact name to find_care.benefit. This routes the agent well, but it does not explicitly cover when to avoid this tool or mention data_sources as an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_careShortest NFZ waiting times near a placeARead-onlyInspect
Where a specialist, diagnostic test or treatment paid by NFZ is available soonest near a place in Poland. Returns clinics and hospitals with NFZ's forecast waiting time, people in the queue, address, phone, distance, accessibility and whether children are seen. service: everyday words (okulista, kardiolog, rezonans, zaćma, rehabilitacja…) or an exact NFZ benefit name from find_benefits. place: town, address or 'lat,lon'.
| Name | Required | Description | Default |
|---|---|---|---|
| max | No | How many places to list (default 10) | |
| sort | No | 'wait' (default) = shortest waiting time first, 'distance' = nearest first | |
| place | Yes | Town, address or 'lat,lon' in Poland | |
| urgent | No | Urgent case (referral marked 'pilne'); default false = stable case | |
| benefit | No | Exact NFZ benefit name (from find_benefits / 'Inne pasujące świadczenia') – overrides service matching | |
| service | Yes | What is needed, e.g. 'okulista', 'ortopeda', 'rezonans magnetyczny', 'endoprotezoplastyka stawu biodrowego' | |
| children | No | Patient is a child – searches paediatric clinics | |
| hospital | No | Hospital ward instead of an outpatient clinic | |
| radius_km | No | Search radius in km (default 30, widened automatically if few results) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and openWorldHint, so the description carries the rest: it discloses the Poland-only scope, that results are NFZ forecast waits with queue counts, and that an exact benefit name overrides service matching. It does not mention result volume limits beyond 'max' or any latency/rate considerations, but the substantive behavioral context is present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the outcome (soonest available NFZ care near a place), followed by the returned fields and then the two required parameters. Dense but each clause carries information; the returned-field enumeration is slightly list-like but justified given there is no output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter, open-world search tool with no output schema, the description supplies the return shape and the required-parameter semantics, which is the main gap it needs to fill. Minor omissions remain (ordering interplay between sort and radius widening is left to the schema, no mention of empty-result behavior).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every one of the 9 parameters is already documented in the schema, setting the baseline at 3. The description adds only the semantic that 'service' accepts colloquial terms (okulista, zaćma, rezonans) or an exact NFZ benefit name sourced from find_benefits, and that 'place' accepts lat,lon — both already largely implied by the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: finds where NFZ-paid specialist care, diagnostics or treatment is available soonest near a place in Poland. It also names what comes back (clinics/hospitals with forecast wait, queue size, address, phone, distance, accessibility, paediatric availability), which lets an agent distinguish it from find_benefits and data_sources without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear context for use: geo-based search for the shortest NFZ wait, with service given either in everyday words or as an exact benefit name taken from find_benefits. That routes the agent to the sibling tool when a precise benefit name is needed, but there is no explicit 'do not use this for X' exclusion or statement of what find_benefits alone covers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v0.1.0- First observed
data_sources - First observed
find_benefits - First observed
find_care
TDQS
Scored across 3 tools
find_care and find_benefits both accept everyday service words like 'rezonans' or 'okulista', which could cause an agent to pick the wrong one on first pass. However, the descriptions make the intended two-step flow explicit (resolve name with find_benefits, then query with find_care.benefit), and data_sources is clearly separate.
find_care and find_benefits follow a clean verb_noun pattern, while data_sources is a noun phrase. The deviation is minor and the names remain readable and predictable.
Three tools is lean but well-matched to a narrow domain: one resolver, one search, one provenance/caveats tool. Nothing feels redundant, though data_sources borders on being documentation rather than an operational tool.
The core workflow — resolving an NFZ benefit name and finding the soonest available provider with wait times, distance and accessibility — is fully covered. Minor gaps exist, such as no tool for retrieving full details of a single clinic or browsing benefits by category/location without a search term.
Maintenance
Related MCP Connectors
Verified Polish open data for AI agents: debt, budget, 460 MPs, votings, judiciary search, RAG.
Pay-per-call US healthcare data: hospital financials, prices, quality, exclusions, wages.
Discover, inspect and run 63,000+ agent tools from one balance. Pay per call, no subscriptions.
Polish business register (REGON / BIR1.1) — resolve any Polish company by NIP, REGON or KRS number…
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables querying the Polish National Health Fund (NFZ) public API for medical waiting lists and service dictionary, allowing AI to compare wait times and find providers.3MIT
- FlicenseAqualityCmaintenanceEnables searching and analyzing Polish public procurement tenders from BZP and TED, including filtering, tender details and timelines, offers and contract values, buyer/contractor profiles, CPV code lookup, and regional statistics, with optional AI-summary endpoints.121-
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to query over 3 million Polish companies from the KRS and CEIDG registries, including financials, board members, shareholders, rankings, and sector statistics, plus public-register enrichments such as procurement awards, EU funding, insolvency records, and stock listings. Users can search, count, filter, and export company data or run read-only SQL through natural-language prompts.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to search and retrieve Poland's official public procurement notices from the e-Zamówienia/BZP bulletin without any API key, covering the latest published contract notices as well as filtering by keyword, CPV code, date range, or contracting authority.75 npmMIT