Skip to main content
Glama

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) + optional locality (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.txt

On 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.py

Claude 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 dates for most queue entries, so first_available_date is often null. NFZ has also renamed many services (e.g. ŚWIADCZENIA Z ZAKRESU OKULISTYKI instead of PORADNIA OKULISTYCZNA) — use search_benefits to 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.

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.

Available Tools

3 tools
list_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

    A4.5/5.0

    Scored across 3 tools

    Disambiguation5/5

    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.

    Naming Consistency5/5

    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.

    Tool Count5/5

    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.

    Completeness5/5

    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

    ActivitySlowing
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables 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 npm
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      Enables 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.
      3
      74 npm
      MIT