fhir-patient-consent-mcp-server
Click on "Install 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., "@fhir-patient-consent-mcp-serverWhat devices does patient 123 have, and which partners have consent to see their data?"
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.
fhir-patient-consent-mcp-server
An MCP server that lets a model ask questions about a patient, their insulin pump, and who's consented to see that data - all sourced live from a FHIR (R4) store. No data lives in this server; every answer is a real-time FHIR REST query.
It's a companion to
fhir-consent-service (a Spring Boot API for
writing Patient/Device/Consent to FHIR), but has no code dependency on
it - this server only depends on the FHIR wire format, so it works against
any FHIR R4 endpoint.
Tools
Tool | Purpose |
| Look up a patient by MRN and/or family name |
| Fetch one patient's demographics by FHIR id |
| List a patient's devices (flags insulin pumps via SNOMED CT |
| List a patient's data-sharing consents (partner, purpose, data categories, period) |
| Authorization check: does partner X currently have active consent for patient Y? |
Related MCP server: FHIR MCP Server
Resource
fhir-chart://{patientId} - a consolidated JSON "chart" (demographics +
devices + active consents) for a patient, meant to be attached directly
into context by a host application rather than assembled by the model
across several tool calls. See docs/architecture.md
for why this is a resource rather than a sixth tool.
Setup
npm install
npm run buildPoint it at a FHIR server
export FHIR_BASE_URL=http://localhost:8081/fhir # default shown
export FHIR_AUTH_TOKEN=... # optional bearer tokenThe easiest way to get data to query: run
fhir-consent-service's docker compose up -d
(starts a local HAPI FHIR JPA server on :8081) and create a patient,
device, and consent through its REST API, then query the same store here.
Run it directly (for testing with stdio)
npm run devRegister it with an MCP client
For Claude Desktop / Claude Code, add to your MCP config:
{
"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"
}
}
}
}Run npm run build first so dist/index.js exists.
Example questions once connected
"Look up the patient with MRN MRN-778001."
"What insulin pump does patient 123 have, and what's its serial number?"
"Has GlucoVue Remote Monitoring been given consent to see patient 123's device data?"
"Show me patient 123's full chart." (exercises the
fhir-chart://resource)
Testing
npm testUnit tests cover the mapper layer (src/mappers/*.ts), including the
consent-authorization logic in isConsentActiveForPartner - specifically
its handling of revoked consents, not-yet-started/expired periods, and
open-ended (end absent) periods, since those are the cases most likely to
be gotten subtly wrong.
There's no integration test against a live FHIR server in this repo (unlike
fhir-consent-service, which uses Testcontainers) because this server has
no write path to seed data with - it would need to depend on that repo (or
duplicate its resource-creation logic) purely to set up test fixtures. If
this repository grows a seeding script, add one then.
Note: written in a sandboxed environment without npm registry access, so
npm install/npm run build/npm testhave not actually been executed here. The code targets@modelcontextprotocol/sdk@^1.12; if the SDK'sserver.tool(...)/server.resource(...)signatures have moved toregisterTool/registerResourceby the version you install, the fix is mechanical - check the SDK's own README/CHANGELOG.
Project layout
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 helpersSecurity note
This server performs no PHI redaction and passes through whatever the FHIR
server returns. If deploying against real patient data, put access control
in front of the FHIR server itself (this server forwards FHIR_AUTH_TOKEN
as a bearer token, but does not manage token acquisition/refresh) and
consider what should and shouldn't be exposed to an MCP client at all.
License
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables LLM-based agents to interact with FHIR healthcare data through natural language prompts, providing full CRUD operations on FHIR resources, document processing, and semantic search capabilities.1397MIT
- -licenseNot gradedqualityNot gradedmaintenanceEnables seamless integration with FHIR APIs for healthcare applications, allowing users to search, retrieve, create, update, and analyze clinical information through natural language interactions. Supports SMART-on-FHIR authentication and works with various healthcare systems like EPIC and HAPI FHIR servers.
- AlicenseNot gradedqualityCmaintenanceEnables natural-language querying of a mock legacy healthcare database and returns validated FHIR resources (Patient, Observation, Condition).MIT
Related MCP Connectors
Securely access and manage FHIR healthcare data stored in Medplum.
Hosted MCP server exposing US hospital procedure cost data to AI assistants
An AI concierge that turns static forms into adaptive AI conversations. From any MCP client.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/scollard001/fhir-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server