FHIR MCP Server - A Model Context Protocol server for interacting with FHIR servers
Project description
FHIR MCP Server
A Model Context Protocol (MCP) server that provides secure, standardized access to FHIR (Fast Healthcare Interoperability Resources) servers. This server acts as a bridge between MCP clients and FHIR APIs, offering a simplified and secure way to access healthcare data.
Features
- MCP Protocol Support: Full Model Context Protocol implementation
- FHIR R4 Compatibility: Works with any FHIR R4-compliant server
- Simplified Configuration: Easy setup with environment variables
- Docker Ready: Containerized for easy deployment
- Health Monitoring: Built-in health check endpoints
- Security: Optional OAuth/Bearer token authentication
- Two Server Modes: Simple server for development, full server for production
Supported FHIR Operations
The server provides the following MCP tools for FHIR operations:
get_capabilities- Get FHIR server capabilities for a resource typesearch- Search for FHIR resources with parametersread- Read a specific FHIR resource by IDcreate- Create a new FHIR resourceupdate- Update an existing FHIR resourcedelete- Delete a FHIR resource
Quick Start
Using Docker Compose (Recommended)
- Clone the repository and navigate to the project root
- Copy the environment template:
cp env.template .env
- Edit
.envwith your FHIR server configuration - Start the server:
docker-compose up fhir-mcp-server
Manual Installation
-
Install dependencies:
pip install -r requirements.txt
-
Set environment variables:
export FHIR_MCP_FHIR__BASE_URL="https://hapi.fhir.org/baseR4" export FHIR_MCP_HOST="localhost" export FHIR_MCP_PORT="8004"
-
Run the server:
python -m fhir_mcp_server
Configuration
Environment Variables
| Variable | Description | Default |
|---|---|---|
FHIR_MCP_HOST |
Server host address | localhost |
FHIR_MCP_PORT |
Server port | 8004 |
FHIR_MCP_FHIR__BASE_URL |
FHIR server base URL | https://hapi.fhir.org/baseR4 |
FHIR_MCP_FHIR__ACCESS_TOKEN |
Bearer token for FHIR server | (empty) |
FHIR_MCP_FHIR__TIMEOUT |
Request timeout in seconds | 30 |
FHIR_MCP_USE_SIMPLE |
Use simplified server | true |
Server Modes
Simple Server (Default)
- Lightweight implementation
- Basic FHIR operations
- Minimal dependencies
- Best for development and testing
Full Server
- Complete OAuth2/OIDC support
- Advanced authentication flows
- Production-ready features
- Set
FHIR_MCP_USE_SIMPLE=falseto enable
Usage Examples
Using with Healthcare AI UI
The FHIR MCP server integrates seamlessly with the Healthcare AI UI:
- Enable MCP mode in UI Settings
- Set MCP server URL to
http://localhost:8004 - Configure your FHIR server URL
- Test the connection
Direct MCP Protocol Usage
// Example MCP request to search for patients
const request = {
jsonrpc: "2.0",
id: 1,
method: "tools/call",
params: {
name: "search",
arguments: {
type: "Patient",
searchParam: {
name: "John"
}
}
}
};
fetch('http://localhost:8004/mcp', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(request)
});
API Endpoints
POST /mcp- MCP protocol endpointGET /health- Health check endpointGET /oauth/callback- OAuth callback (full server only)GET /fhir/callback- FHIR OAuth callback (full server only)
Health Check
The server provides a health check endpoint at /health:
curl http://localhost:8004/health
Response:
{
"status": "healthy",
"service": "FHIR MCP Server",
"version": "1.0.0",
"fhir_url": "https://hapi.fhir.org/baseR4"
}
Development
Running Tests
# Install test dependencies
pip install pytest pytest-asyncio
# Run tests
pytest tests/
Code Structure
fhir_mcp_server/
├── Dockerfile # Docker configuration for the service
├── README.md # This README file
├── __init__.py # Package initialization
├── __main__.py # Main entry point for the service
├── fhir_mcp_service.py # Main FHIR MCP service implementing business logic and tool definitions
└── requirements.txt # Python dependencies
Security Considerations
- Always use HTTPS in production
- Configure proper FHIR server authentication
- Validate all input parameters
- Monitor access logs
- Keep dependencies updated
Troubleshooting
Common Issues
-
Connection Refused
- Check if the server is running
- Verify host and port configuration
- Ensure firewall allows connections
-
FHIR Authentication Errors
- Verify FHIR server URL is correct
- Check access token if using authentication
- Ensure FHIR server is accessible
-
MCP Protocol Errors
- Verify JSON-RPC 2.0 format
- Check method and parameter names
- Review server logs for details
Logs
Enable debug logging for troubleshooting:
python -m fhir_mcp_server --log-level DEBUG
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Submit a pull request
License
This project is licensed under the MIT License. See LICENSE file for details.
Support
For support and questions:
- Open an issue on GitHub
- Check the documentation
- Review the troubleshooting guide
Related Projects
- Healthcare AI Agents - Main healthcare AI platform
- FHIR Proxy - Alternative FHIR access method
- MCP Specification - Official MCP documentation
New File Structure
fhir_mcp_server/
├── Dockerfile # Docker configuration for the service
├── README.md # This README file
├── __init__.py # Package initialization
├── __main__.py # Main entry point for the service
├── fhir_mcp_service.py # Main FHIR MCP service implementing business logic and tool definitions
└── requirements.txt # Python dependencies
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file iflow_mcp_amitpuri_fhir_mcp_server-1.0.1-py3-none-any.whl.
File metadata
- Download URL: iflow_mcp_amitpuri_fhir_mcp_server-1.0.1-py3-none-any.whl
- Upload date:
- Size: 16.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dfbd0faf32dd4d30db1b9158a5c94fbdeb8a76875c47c53aa432f8eac536c43f
|
|
| MD5 |
57f519ebadcfd09b292754d657d584ca
|
|
| BLAKE2b-256 |
68da224cff89bce02221cb0dc28c30f6bcffc5aec1161d14ae636ff68be32f82
|