Skip to main content
Glama
fhir-patient-consent-mcp-server

fhir-patient-consent-mcp-server

by scollard001

fhir-patient-consent-mcp-server

Ein MCP-Server, der es einem Modell erlaubt, Fragen zu einem Patienten, seiner Insulinpumpe und dazu, wer in die Einsicht dieser Daten eingewilligt hat, zu stellen – alle Informationen live aus einem FHIR-Store (R4) bezogen. Auf diesem Server werden keine Daten gespeichert; jede Antwort ist eine Echtzeit-FHIR-REST-Abfrage.

Er ist eine Ergänzung zu fhir-consent-service (einer Spring-Boot-API zum Schreiben von Patient/Device/Consent-Datensätzen nach FHIR), hat aber keine Code-Abhängigkeit davon – dieser Server hängt nur vom FHIR-Wire-Format ab und funktioniert daher mit jedem FHIR-R4-Endpunkt.

Werkzeuge

Werkzeug

Zweck

find_patient

Patient anhand der MRN und/oder des Nachnamens suchen

get_patient

Demografische Daten eines Patienten anhand einer FHIR-ID abrufen

get_patient_devices

Geräte eines Patienten auflisten (kennzeichnet Insulinpumpen über SNOMED CT 469756000)

get_patient_consents

Einwilligungen eines Patienten zur Datenweitergabe auflisten (Partner, Zweck, Datenbestand, Zeitraum)

check_partner_consent

Autorisierungsprüfung: Hat Partner X derzeit eine aktive Einwilligung für Patient Y?

Related MCP server: FHIR MCP Server

Ressource

fhir-chart://{patientId} – ein konsolidiertes JSON-„Chart" (Demografie + Geräte + aktuelle Einwilligungen) eines Patienten, das von einer Host-Anwendung direkt in den Kontext eingefügt werden soll, anstatt vom Modell über mehrere Tool-Aufrufe zusammengesetzt zu werden. Siehe docs/architecture.md für die Begründung, warum dies eine Ressource und kein sechstes Tool ist.

Einrichtung

npm install
npm run build

An einen FHIR-Server anbinden

export FHIR_BASE_URL=http://localhost:8081/fhir   # default shown
export FHIR_AUTH_TOKEN=...                         # optional bearer token

Der einfachste Weg, um Abfragedaten zu erhalten: Starten Sie im Verzeichnis des fhir-consent-service docker compose up -d (startet einen lokalen HAPI-FHIR-JPA-Server auf :8081) und legen Sie über dessen REST-API einen Patienten, ein Gerät und eine Einwilligung an – dann können Sie denselben Bestand hier abfragen.

Direktausführung (für Tests mit stdio)

npm run dev

In einem MCP-Client registrieren

Für Claude Desktop / Claude Code fügen Sie der MCP-Konfiguration Folgendes hinzu:

{
  "mcpServers": {
    "fhir-patient-consent": {
      "command": "node",
      "args": ["/absolute/path/to/fhir-patient-consent-mcp-server/dist/index.js"],
      "env": {
        "FHIR_BASE_URL": "http://localhost:8081/fhir"
      }
    }
  }
}

Führen Sie zuerst npm run build aus, damit dist/index.js vorhanden ist.

Beispielfragen nach der Verbindung

  • „Suchen Sie den Patienten mit der MRN MRN-778001.“

  • „Welche Insulinpumpe hat Patient 123 und wie lautet ihre Seriennummer?“

  • „Hat GlucoVue Remote Monitoring zuvor seine Zustimmung erhalten, die Gerätedaten von Patient 123 zu sehen?“

  • „Zeig mir den vollständigen Chart von Patient 123.“ (nutz die fhir-chart://-Ressource)

Tests

npm test

Unit-Tests decken die Mappers-Schicht (src/mappers/*.ts) ab, einschließlich der Consent-Autorisierungslogik in isConsentActiveForPartner – insbesondere der Umgang mit widerrufenen Einwilligungen, noch nicht begonnenen/abgelaufenen Zeiträumen und offenen (ohne end) Zeiträumen, da dies die Fälle sind, die am wahrscheinlichsten subtil falsch umgesetzt werden.

Es gibt keinen Integrationstest gegen einen live FHIR-Server in diesem Repo (anders als fhir-consent-service, das Testcontainers verwendet), da dieser Server keinen Schreibpfad zum Anlegen von Daten hat – er müsste nur für Test-Fixtures von diesem Repo abhängen (oder dessen Logik zum Anlegen von Ressourcen duplizieren). Sollte dieses Repository je ein Skript zum Aufsetzen von Daten bekommen, fügen Sie dann einen hinzu.

Hinweis: In einer Sandbox-Umgebung ohne npm-Registry-Zugriff geschrieben, daher wurden npm install / npm run build / npm test hier nicht tatsächlich ausgeführt. Der Code zielt auf @modelcontextprotocol/sdk@^1.12; falls die Signaturen server.tool(...) / server.resource(...) des SDK in der Version, die Sie installieren, auf registerTool/registerResource geändert wurden, ist die Korrektur mechanisch: Prüfen Sie README/CHANGELOG des SDK.

Projektstruktur

src/
├── index.ts              Server entry point, registers all tools/resources
├── fhirClient.ts          Thin fetch-based FHIR REST client
├── tools/                 One file per MCP tool
├── resources/             One file per MCP resource
├── mappers/                FHIR JSON -> summary objects + consent auth logic
└── util/results.ts        Shared tool-result formatting helpers

Sicherheitshinweis

Dieser Server führt keine PHI-Redaktion durch, sondern gibt das aus, was der FHIR-Server heil – ungefiltert weiter. Wenn Sie das Produkt gegen echte Patientendaten einsetzen, setzen Sie Zugriffskontrolle vor den FHIR-Server selbst (dieser Server reicht FHIR_AUTH_TOKEN als Bearer-Token weiter, verwaltet aber nicht den Erwerb/Refresh von Tokens) und überlegen Sie, was einem MCP-Client überhaupt zugänglich gemacht werden sollte und was nicht.

Lizenz

MIT

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables LLM-based agents and MCP-compatible clients to query and manipulate clinical data through natural-language prompts by providing full CRUD operations on FHIR resources, document ingestion, semantic search, and LOINC terminology lookup.
    -
  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables LLM-based agents and MCP-compatible clients to query and manipulate FHIR-compliant clinical data through natural-language prompts, with CRUD operations, document ingestion, semantic search, and terminology lookup.
    -
  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables LLM-based agents and MCP-compatible clients to query and manipulate clinical data on a FHIR-compliant backend using natural-language prompts, with full CRUD operations, document ingestion, semantic search, and LOINC terminology support.
    -