A Model Context Protocol implementation for FHIR
Overview
This is an experimental demo not intended for production use. This is a TypeScript-based MCP server that connects to a FHIR server. It provides core MCP functionality for interacting with FHIR resources by: - Accessing FHIR resources via URIs - Providing search capabilities for FHIR resources "Resources" here refers to the MCP definition not the FHIR one. MCP Resources are a core primitive in the Model Context Protocol (MCP) that allow servers to expose data and content that can be read by clients and used as context for LLM interactions.
README
@flexpa/mcp-fhir
[!WARNING] This is an experimental demo not intended for production use.
This is a TypeScript-based MCP server that connects to a FHIR server. It provides core MCP functionality for interacting with FHIR resources by:
- Accessing FHIR resources via URIs
- Providing search capabilities for FHIR resources
Features
Resources
[!TIP] “Resources” here refers to the MCP definition not the FHIR one. MCP Resources are a core primitive in the Model Context Protocol (MCP) that allow servers to expose data and content that can be read by clients and used as context for LLM interactions.
- List and access FHIR resources via
fhir://URIs - Resources are returned in FHIR JSON format
- Supports all FHIR Resource types available in the FHIR server’s CapabilityStatement
Appointment Management
- Find available appointment slots based on practitioner availability and constraints
- Schedule new appointments with required patient, practitioner, and timing information
- Support for different appointment types and durations
- Integration with FHIR Schedule and Appointment resources
Tools
search_fhir- Search FHIR resources- Takes
resourceTypeandsearchParamsas parameters - Returns FHIR search results
- Takes
read_fhir- Read an individual FHIR resource- Takes
urias a parameter - Returns the FHIR resource in JSON format
- Takes
find_available_slots- Find available appointment slots- Takes
practitionerId,appointmentType,duration,startDate, andendDateas parameters - Returns list of available time slots
- Takes
schedule_appointment- Schedule a new appointment- Takes
patientId,practitionerId,appointmentType,startTime,endTime, and optionalnotes - Returns the created FHIR Appointment resource
- Takes
cancel_appointments_by_date- Cancel all appointments for a specified date- Takes
date(YYYY-MM-DD format) and optionalreasonfor cancellation - Returns a list of canceled appointment IDs
- Takes
update_fhir- Update a FHIR resource- Takes
uriandresourceas parameters - Returns the updated FHIR resource
- Takes
Configuration
The server requires the following environment variables:
FHIR_BASE_URL: The base URL of your FHIR serverFHIR_ACCESS_TOKEN: A SMART on FHIR access token for authentication
Development
Install dependencies:
npm install
Build the server:
npm run build
For development with auto-rebuild:
npm run watch
Installation
To use with Claude Desktop, add the server config:
On MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
On Windows: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"fhir": {
"command": "/path/to/@flexpa/mcp-fhir/build/index.js"
},
"env": {
"FHIR_BASE_URL": "",
"FHIR_ACCESS_TOKEN": ""
}
}
}
Debugging
Since MCP servers communicate over stdio, debugging can be challenging. We recommend using the MCP Inspector, which is available as a package script:
npm run inspector
The Inspector will provide a URL to access debugging tools in your browser.
Install
This server does not publish a one-line install command.
Open the repository installation guide New to MCP? Start with the mcpskill.org guide →Configuration
{
"mcpServers": {
"fhir": {
"command": "/path/to/@flexpa/mcp-fhir/build/index.js"
},
"env": {
"FHIR_BASE_URL": "<FHIR_BASE_URL>",
"FHIR_ACCESS_TOKEN": "<FHIR_ACCESS_TOKEN>"
}
}
}