nfz-mcp
Query Poland's NFZ (National Health Fund) public API for medical waiting-list times and the official service dictionary — no API key needed.
Search waiting lists (
search_queues): given a benefit name (partial match) and a 2-digit province code, return per-provider wait statistics and the first-available date; optionally filter by city/locality, choose routine (1) or urgent (2) case, and cap results (default 20, max 25).Discover official service names (
search_benefits): look up the exact NFZ benefit wording (e.g. find "ZAKŁAD/OŚRODEK REHABILITACJI KARDIOLOGICZNEJ" from a partial term like "kardio") before searching queues.Map province codes (
list_provinces): get the 01–16 voivodeship code-to-name mapping.Compare providers at scale: e.g. find the shortest wait for a cardiology rehab facility in Mazowieckie, or ophthalmology openings in Kraków, and feed structured JSON results to an AI client.
Run fully locally over MCP stdio with no cloud middleman or telemetry, though note NFZ often returns
nullfirst-available dates and has renamed many services.
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., "@nfz-mcp Show waiting times for cardiologist in Mazowieckie province"
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.
honest-nfz-mcp
Local MCP server for the Polish National Health Fund (NFZ) public API — waiting lists ("kolejki") and the medical-service dictionary. No authentication required.
Part of the honest-mcp family of small, auditable, local-first MCP servers.
Why
Every Polish resident, at some point, wants to know "jak długo trzeba czekać na kardiologa?" — how long the queue for a cardiologist actually is. NFZ publishes this via a REST API but the friendly search on terminyleczenia.nfz.gov.pl doesn't help when you want to compare 20 providers at once or feed the data to an AI.
This server hands NFZ's data to your AI as structured JSON. Ask "cheapest wait time for a rehabilitation-cardiology facility in Mazowieckie?" and get an actual answer with provider names, wait statistics and — where NFZ provides them — first-available dates.
Related MCP server: Polish Business Intelligence MCP
Features
Three tools:
search_queues— waiting list search: partial-name benefit + province +case(routine vs urgent) + optionallocality(city/district), returns the first-available date (NFZ currently often leaves it empty) and the provider-reported wait statistics per provider.search_benefits— search the NFZ service dictionary to discover the exact benefit name to use.list_provinces— the 2-digit province code map (01–16).
Data source
Endpoint: api.nfz.gov.pl/app-itl-api/ — NFZ's public "Informator o Terminach Leczenia" API
No API key, no registration
Public info about NFZ-contracted providers only
Requirements
Python 3.10+
Setup
git clone https://github.com/bartosz-kuc/honest-nfz-mcp.git
cd honest-nfz-mcp
python3 -m venv venv
./venv/bin/pip install -r requirements.txtOn Windows use python instead of python3, and venv\Scripts\pip / venv\Scripts\python instead of the venv/bin/... paths (here and in the configs below).
Register with Claude Code:
claude mcp add nfz /absolute/path/to/venv/bin/python /absolute/path/to/server.pyClaude Desktop claude_desktop_config.json:
{
"mcpServers": {
"nfz": {
"command": "/absolute/path/to/venv/bin/python",
"args": ["/absolute/path/to/server.py"]
}
}
}Example usage
Note (September 2026): NFZ's API currently returns no
datesfor most queue entries, sofirst_available_dateis oftennull. NFZ has also renamed many services (e.g.ŚWIADCZENIA Z ZAKRESU OKULISTYKIinstead ofPORADNIA OKULISTYCZNA) — usesearch_benefitsto find the current wording.
"Which cardio-rehab facilities in Mazowieckie have the shortest wait?"
Two-step: search_benefits(name="kardio") → find exact benefit name → search_queues(benefit="ZAKŁAD/OŚRODEK REHABILITACJI KARDIOLOGICZNEJ", province="07", case=1, limit=25) → list of providers with their queue data.
"Any ophthalmology openings in Kraków?"
search_queues(benefit="ŚWIADCZENIA Z ZAKRESU OKULISTYKI", province="06", case=1, locality="KRAKÓW") — locality is a case-insensitive substring filter applied by the NFZ API, so it covers the whole province, not just the first result page. Matches are re-checked locally, scanning at most 10 result pages of 25.
Data flow
Your AI client
↕ MCP stdio
This server (Python, on your machine)
↕ HTTPS
api.nfz.gov.pl (National Health Fund)No cloud middle. No telemetry.
Author
Bartosz Kuć — Warsaw-based developer, JDG owner running skanfirmy.pl.
GitHub: https://github.com/bartosz-kuc
Email: firma@bartosza.pl
Consulting
Available for consulting on Polish tax and business integrations (KSeF, GUS/NFZ/GIOŚ APIs, mBank data), MCP server design, and AI-assisted tooling for JDGs and small teams. See skanfirmy.pl/uslugi for productized packages (audit 3k PLN, setup 8-15k PLN, retainer 2-4k PLN/mo), or reach out via email.
License
MIT — see LICENSE.
Related
Part of the honest-mcp family — see the family index.
Available Tools
3 toolslist_provincesA
Return the mapping of 2-digit province codes to voivodeship names used by NFZ.
Inputs: no named parameters.
search_benefitsA
Search the NFZ benefit dictionary — the official service names that search_queues accepts. Use this to discover the exact wording before searching queues.
Inputs: name (required), limit.
search_queuesA
Search NFZ waiting lists (kolejki) for a medical service in a province. Returns the first-available date and average wait time reported by each provider. benefit is a partial (case-insensitive) match on the official service name — use search_benefits first if unsure. case: 1 = stabilny (routine), 2 = pilny (urgent).
Inputs: benefit (required), province (required), case, limit, +1 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 3 tools
Each tool serves a distinct purpose: discovering official benefit names, mapping province codes, and querying waiting lists. No functional overlap exists between them, and their descriptions explicitly reference how they fit together, eliminating ambiguity.
All tools follow a clear verb_noun pattern with snake_case: search_benefits, list_provinces, search_queues. The naming is uniform and predictable, with verbs indicating the action and nouns indicating the resource.
The server is tightly scoped to NFZ waiting list queries. Three tools cover the essential steps (lookup benefit names, get province codes, search queues) without redundant or extraneous tools, making the count ideal for the domain.
The tools form a complete workflow: search_benefits ensures valid query terms, list_provinces provides required codes, and search_queues delivers the core function. There are no obvious gaps for the stated purpose, as all necessary prerequisites are handled.
Maintenance
Related MCP Connectors
NFZ waiting times in Poland: where a specialist, test or treatment is available soonest
Polish ICD-10, ICD-9 PL, ICD-11 PL codes and NFZ JGP hospital grouping from official sources.
WHO ICD-10/ICD-11 diagnosis codes. Lookup, search, chapters via official WHO API.
Polish companies and people: KRS, CEIDG, financials, boards, VAT, sanctions. Free, no API key.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables natural language querying of Korean public medical data (data.go.kr) through MCP clients like Claude, providing tools for searching hospitals, drugs, non-payment costs, disease statistics, and more.102MIT
- AlicenseAqualityDmaintenanceProvides AI agents with real-time access to Polish official data: VAT whitelist for company verification and NBP exchange rates, enabling checks on VAT status, company details, and currency conversion without API keys.5MIT
- 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.301 npmMIT
- AlicenseAqualityCmaintenanceEnables AI assistants to look up official Polish refunded-medicine prices, NFZ refund limits, patient co-payments and cheaper equivalents with the same substance, strength and pack size, plus prescription status, registered packs and leaflet links from the Medicinal Products Register. Searches work by brand and dose, substance name in Polish or Latin, pack size or EAN code, and indicate free-of-charge eligibility for patients 65+, under 18 and pregnant.374 npmMIT