Skip to main content

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 type
  • search - Search for FHIR resources with parameters
  • read - Read a specific FHIR resource by ID
  • create - Create a new FHIR resource
  • update - Update an existing FHIR resource
  • delete - Delete a FHIR resource

Quick Start

Using Docker Compose (Recommended)

  1. Clone the repository and navigate to the project root
  2. Copy the environment template:
    cp env.template .env
    
  3. Edit .env with your FHIR server configuration
  4. Start the server:
    docker-compose up fhir-mcp-server
    

Manual Installation

  1. Install dependencies:

    pip install -r requirements.txt
    
  2. Set environment variables:

    export FHIR_MCP_FHIR__BASE_URL="https://hapi.fhir.org/baseR4"
    export FHIR_MCP_HOST="localhost"
    export FHIR_MCP_PORT="8004"
    
  3. 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=false to enable

Usage Examples

Using with Healthcare AI UI

The FHIR MCP server integrates seamlessly with the Healthcare AI UI:

  1. Enable MCP mode in UI Settings
  2. Set MCP server URL to http://localhost:8004
  3. Configure your FHIR server URL
  4. 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 endpoint
  • GET /health - Health check endpoint
  • GET /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

  1. Connection Refused

    • Check if the server is running
    • Verify host and port configuration
    • Ensure firewall allows connections
  2. FHIR Authentication Errors

    • Verify FHIR server URL is correct
    • Check access token if using authentication
    • Ensure FHIR server is accessible
  3. 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

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests
  5. 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

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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

iflow_mcp_amitpuri_fhir_mcp_server-1.0.3.tar.gz (22.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file iflow_mcp_amitpuri_fhir_mcp_server-1.0.3.tar.gz.

File metadata

  • Download URL: iflow_mcp_amitpuri_fhir_mcp_server-1.0.3.tar.gz
  • Upload date:
  • Size: 22.5 kB
  • Tags: Source
  • 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

Hashes for iflow_mcp_amitpuri_fhir_mcp_server-1.0.3.tar.gz
Algorithm Hash digest
SHA256 822ea011b277f56aa227a0658fa5852c4908f1cc8c7df8e4671bb22db5363b76
MD5 c911736418a08588d8b3825f9fbb9916
BLAKE2b-256 261250ed9dbeda217ddfec277fb57f5872b232fc650f33fc3ab287bde284bc17

See more details on using hashes here.

File details

Details for the file iflow_mcp_amitpuri_fhir_mcp_server-1.0.3-py3-none-any.whl.

File metadata

  • Download URL: iflow_mcp_amitpuri_fhir_mcp_server-1.0.3-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

Hashes for iflow_mcp_amitpuri_fhir_mcp_server-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 42c50cdca13bf223d1e9f987ad17bff21b8408c4b33ef22cd3e6eca95b01c8a2
MD5 929e4e2e82f0027d95678832722f7cb6
BLAKE2b-256 88e4f67578dbbf61fd1bb6317196eb13483960f4b0d87e94f3f07766d923b6da

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.0.3 This release

2 files

1.0.2

2 files

1.0.1

1 file

1.0.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page