Prototyp · Vorschau: alle Server aus der offiziellen Registry, alle 30 Minuten synchronisiert. Bewertungen und Benutzerkonten folgen in einem späteren Schritt.
PopNx MCPMCP-Server für alle, die KI nutzen · in einfachen Worten erklärt

MCP FHIR

von pcmedsingeVersion 1.1.1i★ 0iLäuft auf deinem Computer
Name in der Registryio.github.pcmedsinge/mcp-fhir

Installieren

Überblick

Beschreibung vom Entwickler (englisches Original)

FHIR R4 read/search/validate MCP server — US Core/IPS profiles, SMART-on-FHIR auth (Epic/Cerner).

Die drei Säulen von PopNx MCP

Diese drei werden nie zu einer Punktzahl zusammengefasst: Meinungen, Messungen und Beliebtheit sind verschiedene Dinge.

Was du damit machen kannst

Für diesen Server haben wir noch keine Zusammenfassung in einfacher Sprache geschrieben. Unten stehen die Fakten, die wir aus der Registry gelesen haben.

  • Verbindung: Läuft auf deinem Computer
  • Transport: stdio
  • Kategorie: Praxen & Gesundheit

Installation

Wähle die KI-App, die du nutzt, und kopiere die Einstellungen.

Bevor du installierst

  • Basischecks: 2 von 2 bestanden
  • Läuft auf deinem Computer mit den Rechten deines Benutzerkontos (Dateien, Netzwerk, Apps).
  • Das trägst du selbst ein: FHIR_BASE_URL, SMART_ENABLED

Du brauchst

  • PyPIuv für Python installiert (für den Befehl uvx)

Welche App nutzt du?

Wähle oben deine App. Wir merken sie uns, damit der Button beim nächsten Mal „In … installieren“ anzeigt.

Öffne Claude Desktop → Settings → Developer → Edit Config und füge dies in claude_desktop_config.json ein

{
  "mcpServers": {
    "fhir": {
      "command": "uvx",
      "args": [
        "mcp-fhir"
      ],
      "env": {
        "FHIR_BASE_URL": "your-value",
        "SMART_ENABLED": "your-value"
      }
    }
  }
}

Führe das in deinem Terminal aus

claude mcp add fhir --env FHIR_BASE_URL=your-value --env SMART_ENABLED=your-value -- uvx mcp-fhir

Trag die leeren Werte ein, bevor du ihn startest.

In Cursor öffnen

Oder kopier die Einstellungen selbst

In .cursor/mcp.json in deinem Projekt oder in ~/.cursor/mcp.json einfügen

{
  "mcpServers": {
    "fhir": {
      "command": "uvx",
      "args": [
        "mcp-fhir"
      ],
      "env": {
        "FHIR_BASE_URL": "your-value",
        "SMART_ENABLED": "your-value"
      }
    }
  }
}

Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.

In VS Code öffnen

Oder kopier die Einstellungen selbst

In .vscode/mcp.json in deinem Projekt einfügen

{
  "servers": {
    "fhir": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "mcp-fhir"
      ],
      "env": {
        "FHIR_BASE_URL": "your-value",
        "SMART_ENABLED": "your-value"
      }
    }
  }
}

Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.

Dieser Server läuft auf deinem Computer, und ChatGPT kann sich nur mit Servern im Internet verbinden. Wähle eine andere App.

Deine Auswahl bleibt in einem Cookie auf diesem Gerät; kein Konto nötig.

Werte, die du selbst einträgst

  • FHIR_BASE_URL env
    Base URL of the FHIR R4 server (default: https://hapi.fhir.org/baseR4)
  • SMART_ENABLED env
    Set to 'true' to enable SMART-on-FHIR OAuth 2.0 (Epic/Cerner)

Diese Einstellungen werden aus dem Registry-Eintrag des Entwicklers erzeugt. Wenn in der README etwas anderes steht, folge der README.

Welche Apps ihn nutzen können

Basierend darauf, wie sich dieser Server verbindet, und auf der eigenen Doku jeder App, geprüft am 10. Nov. 2026.

Laufen auf deinem Computer in

ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast

Alle Apps, mit Vor- und Nachteilen →

Was er kann

Läuft auf deinem Computer; die Tool-Liste erscheint nach der Installation in deiner KI-App.

Basischecksi

Wir prüfen Informationen, die jeder sehen kann; den Code haben wir nicht gelesen. Checks, die nicht zutreffen, werden nicht mitgezählt. · Geprüft am 11. Nov. 2026

  • ✓ Bestanden

    Entwickler passt zum Repo

    Der Registry-Name wurde mit dem GitHub-Konto pcmedsinge bestätigt, dem das Repo gehört

  • ✓ Bestanden

    Wird noch gepflegt

    Code zuletzt geändert: vor 5 Monaten

  • … Noch nicht geprüft

    Hat eine Lizenz

    Dieses Repo haben wir noch nicht von GitHub gelesen

  • – Nicht zutreffend

    Endpunkt antwortet

    Dieser Server läuft auf deinem Computer; es gibt keinen Endpunkt im Internet

  • – Nicht zutreffend

    Anmeldung mit OAuth

    Läuft auf deinem Computer und nutzt stattdessen lokale Einstellungen

  • … Noch nicht geprüft

    Keine versteckten Anweisungen in Tool-Beschreibungen

    Läuft auf deinem Computer; Tool-Listen können wir nur von Endpunkten im Internet lesen

Nutzerbewertungen

Noch keine Bewertungen

Im Vergleich mit anderen in Praxen & Gesundheiti

  • Mehr Sterne als 0 % der anderen 1068 Server in dieser Kategorie
  • Neuer in der Registry veröffentlicht als 16 % der anderen 1068 Server in dieser Kategorie
  • Basischecks gleich gut wie oder besser als bei 100 % der anderen 1068 Server in dieser Kategorie

Verglichen mit allen aktiven Servern dieser Kategorie in der Registry. Sterne zählen nur, wenn dem Herausgeber das Repo gehört.

Häufige Fragen

Ist MCP FHIR sicher?

Er hat 2 von 2 zutreffenden Basischecks bestanden. Den Code haben wir nicht gelesen. Bevor du einen Schlüssel oder Token hinzufügst, sieh nach, welche Zugriffe der Server verlangt, und nutze einen Schlüssel, der nur die Berechtigungen hat, die du brauchst.

Welche Schlüssel oder Codes braucht er?

Die Registry nennt keinen erforderlichen Schlüssel, manche Server bitten dich aber bei der ersten Nutzung, dich anzumelden.

Läuft er auf meinem Computer oder in der Cloud?

Er läuft auf deinem Computer. Deine KI-App startet ihn bei Bedarf, und die Daten laufen nicht über die Server des Entwicklers (außer der Server ruft selbst einen Onlinedienst auf).

Wird er noch gepflegt?

Das GitHub-Repo wurde zuletzt vor 5 Monaten geändert, und die neueste Version (1.1.1) kam vor 5 Monaten in die Registry.

Welche Apps können ihn nutzen?

Apps, die MCP unterstützen, etwa Claude Desktop, Claude Code, Cursor und VS Code. Außerdem brauchst du Python (uv) auf deinem Computer.

Was kann ich stattdessen nutzen?

In derselben Kategorie: Medplum MCP, Mirobody, Apple Health

Alternativen

Server derselben Kategorie von anderen Entwicklern, sortiert nach Sternen.

So liest du eine Karte:↓ Downloads pro Wochei★ GitHub-SterneiDrei Säulen: Bewertungen · Checks · NutzungiAktualisiert = neueste Version in der Registry veröffentlichti

Medplum MCP

Securely access and manage FHIR healthcare data stored in Medplum.

von medplumWeit verbreitet★ 2786Aktualisiert vor 4 Monaten

Läuft in der Cloud✓ medplum.com

Mirobody

Lab results to LOINC codes and UCUM units, symptoms and diagnoses to ICPC-3. Offline, no API key.

von thetahealthWachsend↓ 290/Wo.★ 1442Aktualisiert gestern

Läuft auf deinem Computer✓ thetahealth.ai

Apple Health

Local-first Apple Health MCP server for questions about your sleep, workouts and heart data.

von neiltronWachsend↓ 106/Wo.★ 575Aktualisiert vor 2 Monaten

Läuft auf deinem Computer

README vom Entwickler

README öffnen

Unverändert aus dem Repo des Entwicklers übernommen. PopNx MCP hat den Inhalt weder geprüft noch empfiehlt es ihn. HTML, Bilder und Skripte wurden entfernt. Links führen von dieser Website weg.

mcp-fhir

FHIR R4 MCP server — read, search, paginate, validate resources against US Core/IPS profiles,

and authenticate against Epic/Cerner EHR sandboxes via SMART-on-FHIR OAuth 2.0.

Part of the fhir-mcp-suite monorepo.

What it does

mcp-fhir exposes five MCP tools that let any MCP-compatible AI (Claude, GPT-4o, etc.) interact with any FHIR R4 server — and validate resources against US Core and IPS profiles — in a single server process. No other public FHIR MCP server combines search + validation today.

ToolDescription
fhir_capabilitiesCapabilityStatement summary — what the server supports
fhir_readRead a single resource by type + logical ID
fhir_searchSearch a resource type with FHIR query params; returns Bundle with _next_url when paginated
fhir_search_nextFollow a _next_url pagination link (SSRF-guarded)
validate_against_profileValidate a resource via the HAPI validator; supports US Core & IPS aliases

Architecture

Claude Desktop / AI client

│ MCP (stdio or SSE) ▼ ┌───────────────────────────────┐ │ mcp-fhir v1.1 │ │ ┌───────────────────────────┐│ │ │ tools/ ││ │ │ ├─ fhir_capabilities.py ││ │ │ ├─ fhir_read.py ││ │ │ ├─ fhir_search.py ││ ──► FHIR R4 server │ │ └─ validate_profile.py ││ ──► HAPI validator sidecar │ └───────────────────────────┘│ │ fhir-mcp-shared │ │ ├─ LangFuse traces (session) │ │ ├─ Pydantic structured output │ │ └─ structlog JSON logging │ └───────────────────────────────┘

Quick start

# requires Python 3.12+ and uv

uvx mcp-fhir # stdio transport (Claude Desktop, default)

SSE transport (HTTP, for API access)

MCP_TRANSPORT=sse uvx mcp-fhir

Claude Desktop config (claude_desktop_config.json)
{

"mcpServers": { "mcp-fhir": { "command": "uvx", "args": ["mcp-fhir"], "env": { "FHIR_BASE_URL": "https://hapi.fhir.org/baseR4", "HAPI_VALIDATOR_URL": "http://localhost:8082" } } } }

See full installation guide for HAPI validator setup, troubleshooting, and self-hosted FHIR server configuration.

Eval results

Golden query suite — run against the public HAPI demo server (hapi.fhir.org/baseR4):

CategoryCasesPass rate
fhir_capabilities2100 %
fhir_read4100 %
fhir_search6100 %
fhir_search_next2100 %
validate_against_profile6100 %
Total20100 %

CI gate: uv run python evals/mcp-fhir/run_eval.py --ci --threshold 0.9

Validator cases require the HAPI sidecar (docker compose up hapi-validator).

Configuration

All settings via environment variables (see .env.example):

VariableDefaultDescription
FHIR_BASE_URLhttps://hapi.fhir.org/baseR4FHIR server base URL
HAPI_VALIDATOR_URLhttp://localhost:8082HAPI validator sidecar (runs on port 3500 internally; map 8082:3500)
FHIR_TIMEOUT_S30HTTP timeout in seconds
FHIR_MAX_RESULTS20Default _count for searches
MCP_TRANSPORTstdiostdio or sse
MCP_PORT8000Port for SSE transport
LOG_FORMATjsonjson (prod) or console (dev)
LANGFUSE_PUBLIC_KEY_(unset)_LangFuse observability (optional)
LANGFUSE_SECRET_KEY_(unset)_LangFuse observability (optional)

SMART-on-FHIR authentication

mcp-fhir v1.1.0 adds SMART-on-FHIR backend services (client_credentials grant, RFC 6749) so the server can authenticate against real Epic / Cerner sandboxes — no browser redirect needed.

When SMART_ENABLED=true, every FHIR request gets an Authorization: Bearer header. Tokens are cached in-process and refreshed automatically 30 s before expiry.

SMART environment variables
VariableDefaultDescription
SMART_ENABLEDfalseSet true to activate SMART auth
SMART_CLIENT_ID""App client ID from EHR registration portal
SMART_CLIENT_SECRET""Client secret (stored as SecretStr, never logged)
SMART_TOKEN_URL""Token endpoint URL; auto-discovered if blank
SMART_SCOPESsystem/*.readSpace-separated OAuth 2.0 scopes
SMART_GRANT_TYPEclient_credentialsOAuth grant type (only client_credentials supported)
SMART_TOKEN_TIMEOUT_S15.0HTTP timeout for token requests

When SMART_TOKEN_URL is blank the server performs SMART auto-discovery: GET {FHIR_BASE_URL}/.well-known/smart-configuration → token_endpoint. Falls back to {FHIR_BASE_URL}/oauth2/token if discovery returns a non-200.

Epic sandbox quick-start
  1. Register at https://fhir.epic.com/ → My Apps → create a backend-services app.
  2. Note your Client ID and Client Secret.
  3. Create .env in the monorepo root (already in .gitignore):
FHIR_BASE_URL=https://fhir.epic.com/interconnect-fhir-oauth/api/FHIR/R4

SMART_ENABLED=true SMART_CLIENT_ID=your-epic-client-id SMART_CLIENT_SECRET=your-epic-client-secret

SMART_TOKEN_URL is optional — auto-discovered from FHIR_BASE_URL

Cerner sandbox quick-start
  1. Register at https://code.cerner.com/ → create a backend-services app.
  2. Note your Client ID and the token endpoint URL.
  3. Update .env:
FHIR_BASE_URL=https://fhir-ehr-code.cerner.com/r4/your-tenant-id

SMART_ENABLED=true SMART_CLIENT_ID=your-cerner-client-id SMART_CLIENT_SECRET=your-cerner-client-secret SMART_TOKEN_URL=https://authorization.cerner.com/tenants/your-tenant-id/protocols/oauth2/profiles/smart-v1/token

Claude Desktop config with SMART auth
{

"mcpServers": { "mcp-fhir": { "command": "uvx", "args": ["mcp-fhir"], "env": { "FHIR_BASE_URL": "https://fhir.epic.com/interconnect-fhir-oauth/api/FHIR/R4", "SMART_ENABLED": "true", "SMART_CLIENT_ID": "your-epic-client-id", "SMART_CLIENT_SECRET": "your-epic-client-secret" } } } }

Programmatic client (LangGraph / any Python agent)

Use StdioServerParameters to point any Python MCP client at a FHIR server. The same pattern works in LangGraph tool nodes, LangChain agents, or plain asyncio scripts.

from mcp import ClientSession, StdioServerParameters

from mcp.client.stdio import stdio_client import asyncio, os

server = StdioServerParameters( command="uv", args=["run", "--package", "mcp-fhir", "mcp-fhir"], env={ **os.environ,

── Public HAPI (no auth) ──────────────────────────────────

"FHIR_BASE_URL": "https://hapi.fhir.org/baseR4", "SMART_ENABLED": "false",

── Epic sandbox (uncomment + fill in) ────────────────────

"FHIR_BASE_URL": "https://fhir.epic.com/interconnect-fhir-oauth/api/FHIR/R4",

"SMART_ENABLED": "true",

"SMART_CLIENT_ID": os.environ["EPIC_CLIENT_ID"],

"SMART_CLIENT_SECRET": os.environ["EPIC_CLIENT_SECRET"],

── Cerner sandbox (uncomment + fill in) ──────────────────

"FHIR_BASE_URL": "https://fhir-myrecord.cerner.com/r4/ ",

"SMART_ENABLED": "true",

"SMART_CLIENT_ID": os.environ["CERNER_CLIENT_ID"],

"SMART_CLIENT_SECRET": os.environ["CERNER_CLIENT_SECRET"],

"SMART_TOKEN_URL": "https://authorization.cerner.com/tenants/ /...",

}, )

async def main(): async with stdio_client(server) as (read, write): async with ClientSession(read, write) as session: await session.initialize() result = await session.call_tool( "fhir_search", arguments={"resource_type": "Patient", "params": {"_count": "3"}}, ) print(result.content[0].text)

asyncio.run(main())

See demo/fhir_server_configs.py for ready-to-run configs for all supported servers (public HAPI, SMART Health IT, Epic, Cerner, local Docker).

Running SMART integration tests
# Requires real sandbox credentials in .env

uv run pytest packages/mcp-fhir/tests -m smart_integration -v

Profile validation

The validate_against_profile tool supports shorthand aliases:

AliasProfile URL
us-core-patienthttp://hl7.org/fhir/us/core/StructureDefinition/us-core-patient
us-core-observationhttp://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-clinical-result
us-core-conditionhttp://hl7.org/fhir/us/core/StructureDefinition/us-core-condition-problems-health-concerns
us-core-medication-requesthttp://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest
us-core-encounterhttp://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter
ips-patienthttp://hl7.org/fhir/uv/ips/StructureDefinition/Patient-uv-ips

Profile validation requires the HAPI validator sidecar (included in docker-compose.yml at repo root).

Development

# From monorepo root

uv sync uv run pytest packages/mcp-fhir/tests -v

Integration tests (requires HAPI public server access)

uv run pytest packages/mcp-fhir/tests -m integration

Architecture

Client (Claude / GPT-4o)

│ MCP protocol (stdio or SSE) ▼ mcp-fhir server (Python, anyio) ├── fhir_read ──────────► FHIR R4 server (configurable) ├── fhir_search ─────────► FHIR R4 server └── validate_against_profile │ ▼ HAPI validator sidecar (markiantorno/validator-wrapper) │ ▼ LangFuse (optional observability)

License

Apache-2.0