
FhirMCP
Enables LLMs to securely interact with FHIR healthcare servers and HL7 terminology services. Provides comprehensive healthcare data operations with built-in PHI protection, audit logging, and SMART on FHIR authentication.
README
FHIR-MCP - FHIR Model Context Protocol Server
FHIR-MCP is an open-source MCP (Model Context Protocol) server that enables LLMs to securely interact with FHIR servers and HL7 terminology services. It provides a comprehensive toolset for healthcare interoperability with enterprise-grade security hardening, PHI protection, audit logging, and token-efficient operations.
✨ Features
- 🔐 Enterprise Security: OWASP-compliant hardening with multi-tier rate limiting
- 🛡️ PHI Protection: Advanced masking, classification, and redaction of sensitive healthcare data
- 📊 Comprehensive FHIR Support: Read, search, create, and update operations
- 🏥 HL7 Terminology: ValueSet expansion, CodeSystem lookup, and concept translation
- 📝 Audit Logging: HIPAA-compliant audit trail with structured logging and trace IDs
- ⚡ Token Efficient: Field selection, pagination, and optimized queries
- 🔧 Interoperable: Works with HAPI FHIR, Firely, and other R4/R4B servers
- ✅ Production Ready: Security hardening Phase 1 complete with comprehensive validation
- 🌐 HTTP Bridge: Secure REST API with Docker containerization support
- 🔒 Modern Architecture: ES modules, TypeScript, and cloud-native deployment
🚀 Quick Start
-
Install dependencies:
npm install
-
Build the project:
npm run build
-
Configure environment:
export FHIR_BASE_URL="https://hapi.fhir.org/baseR4" export TERMINOLOGY_BASE_URL="https://tx.fhir.org/r4" export PHI_MODE="safe"
-
Start the server:
cd packages/mcp-fhir-server npm start
-
Test functionality:
node test-basic-functionality.js
🛠️ Available Tools
FHIR Operations
fhir.capabilities
- Get server capability statementfhir.search
- Search resources with advanced filteringfhir.read
- Read specific resources by IDfhir.create
- Create new FHIR resourcesfhir.update
- Update existing resources
Terminology Services
terminology.lookup
- Look up code properties and display namesterminology.expand
- Expand ValueSets to get contained codesterminology.translate
- Translate codes between coding systems
📁 Project Structure
packages/
├── mcp-fhir-server/ # Main MCP server implementation
│ ├── src/
│ │ ├── providers/ # FHIR and terminology providers
│ │ ├── security/ # PHI guard and audit logging
│ │ ├── tools/ # MCP tool handlers and schemas
│ │ └── types/ # TypeScript definitions
│ └── dist/ # Compiled JavaScript (ES modules)
├── examples/
│ └── http-bridge/ # HTTP REST API bridge for web clients
│
docs/
├── QUICKSTART.md # Getting started guide
├── PROMPTS.md # LLM prompt library
├── SECURITY.md # Security and privacy guide
└── AI_INTEGRATION.md # AI assistant integration examples
tests/
├── e2e/ # End-to-end tests
└── QA-REPORT.md # Comprehensive QA test results
🔒 Security Features (Phase 1 Complete)
Enterprise Security Hardening
- OWASP Compliance: Complete security headers and content security policies
- Multi-Tier Rate Limiting: PHI-aware rate limiting with progressive delays
- Input Validation: Comprehensive Joi-based validation with SQL injection prevention
- Request Monitoring: Suspicious activity detection with automated IP blocking
- Emergency Access: Break-glass mechanisms for critical healthcare scenarios
PHI Protection & Classification
- Advanced PHI Engine: ML-powered classification of sensitive healthcare data
- Safe Mode: Automatically masks names, addresses, birth dates, and identifiers
- Trusted Mode: Returns data as-is for secure environments
- Dynamic Masking: Context-aware redaction based on PHI sensitivity levels
- Authorization Engine: Role-based access control with healthcare-specific permissions
Audit & HIPAA Compliance
- Comprehensive Audit Trail: Structured logging with trace IDs for all operations
- PHI-Safe Logging: Automatic redaction of sensitive data in audit logs
- FHIR AuditEvent Support: Standards-compliant audit event emission
- Security Monitoring: Real-time threat detection and response
- Compliance Reporting: Automated generation of security and access reports
Authentication & Authorization
- SMART on FHIR / OAuth2: Authorization Code + PKCE flow support
- Client Credentials: Server-to-server access with scope validation
- Emergency Override: Break-glass access for critical patient care situations
- Session Management: Secure token handling with automatic expiration
📖 Documentation
- Quick Start Guide - Installation and basic usage
- Prompt Library - Ready-to-use LLM prompts and patterns
- Security Guide - Production deployment and security considerations
🧪 Testing
Run the test suites:
# Build the project first
npm run build
# Full QA test suite (comprehensive function testing)
node manual-qa-test.js
# E2E integration tests
node tests/e2e/test-fhir-mcp.js
# Type checking
npm run typecheck
# Linting (with improved type safety)
npm run lint
QA Test Results: ✅ 19/19 tests passed (100% success rate)
- All core functions validated
- Security features verified
- PHI protection tested
- Audit logging validated
- ES module compatibility confirmed
See QA-REPORT.md for detailed test results.
🔧 Configuration
Configure via environment variables:
Variable | Description | Default |
---|---|---|
FHIR_BASE_URL |
FHIR server base URL | https://hapi.fhir.org/baseR4 |
FHIR_TOKEN |
Bearer token for FHIR server | - |
TERMINOLOGY_BASE_URL |
HL7 terminology service URL | https://tx.fhir.org/r4 |
TERMINOLOGY_TOKEN |
Bearer token for terminology service | - |
PHI_MODE |
PHI protection mode (safe or trusted ) |
safe |
ENABLE_AUDIT |
Enable audit logging | true |
🤖 Using with Claude
Add FHIR-MCP to your Claude MCP configuration:
{
"mcpServers": {
"fhir": {
"command": "node",
"args": ["path/to/FHIR-MCP/packages/mcp-fhir-server/dist/index.js"],
"env": {
"FHIR_BASE_URL": "https://your-fhir-server.com/fhir",
"TERMINOLOGY_BASE_URL": "https://tx.fhir.org/r4",
"PHI_MODE": "safe",
"ENABLE_AUDIT": "true"
}
}
}
}
🌐 HTTP Bridge for Web Applications
For browser-based AI assistants that can't use MCP directly:
Local Development
# Build the HTTP bridge first
cd packages/examples/http-bridge
npm run build
# Start the HTTP bridge server
PORT=3001 FHIR_BASE_URL="https://hapi.fhir.org/baseR4" TERMINOLOGY_BASE_URL="https://tx.fhir.org/r4" PHI_MODE="safe" ENABLE_AUDIT="true" npm start
Docker Deployment (Recommended)
# Build and start with Docker Compose
docker-compose up --build
# Or run individual commands
docker build -t fhir-mcp .
docker run -p 3002:3001 -e FHIR_BASE_URL="https://hapi.fhir.org/baseR4" -e TERMINOLOGY_BASE_URL="https://tx.fhir.org/r4" -e PHI_MODE="safe" -e ENABLE_AUDIT="true" fhir-mcp
The bridge provides secure REST endpoints at http://localhost:3002
(or localhost:3001 for local dev):
GET /health
- Health check with security statusGET /tools
- List available toolsPOST /fhir/capabilities
- FHIR server capabilitiesPOST /fhir/search
- Search FHIR resourcesPOST /fhir/read
- Read FHIR resourcesPOST /fhir/create
- Create FHIR resources (write operations)POST /fhir/update
- Update FHIR resources (write operations)POST /terminology/lookup
- Terminology lookupPOST /terminology/expand
- ValueSet expansionPOST /terminology/translate
- Code translationPOST /tools/{toolName}
- Generic tool interface
Security Features Active
- ✅ OWASP security headers
- ✅ Multi-tier rate limiting
- ✅ Input validation & sanitization
- ✅ PHI-aware authorization
- ✅ Comprehensive audit logging
- ✅ Emergency access controls
📋 Roadmap
- [x] MVP: Basic FHIR operations and terminology lookup
- [x] QA: Comprehensive testing and security validation
- [x] ES Modules: Modern JavaScript module support
- [x] HTTP Bridge: Web-accessible REST API
- [x] Phase 1 Security: Enterprise hardening with PHI protection
- [x] Docker: Containerized deployment with security hardening
- [ ] Phase 2: OAuth2 flows, advanced policy engine
- [ ] Phase 3: Delete operations, bulk export, R5 support
- [ ] Future: GraphQL support, subscription webhooks
🤝 Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🙏 Acknowledgments
- HL7 FHIR for the interoperability standard
- Model Context Protocol for the protocol specification
- HAPI FHIR for the reference implementation
- HL7 Terminology Services for code system management
FHIR-MCP: Built with ❤️ for healthcare interoperability
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.