Azure AHDS FHIR MCP Server

by erikhoward

Not rated
GitHub

About

An MCP server implementation for interacting with Azure Health Data Services FHIR.

Details

Author
erikhoward
Categories
Cloud Service, Other, API

Setup

Install Azure AHDS FHIR MCP Server in your MCP client (Claude Desktop, Cursor, Windsurf, and others).

Repository: https://github.com/erikhoward/azure-fhir-mcp-server

Follow the installation instructions in the repository README, then restart your MCP client.

An MCP server implementation for interacting with Azure Health Data Services FHIR.

A Model Context Protocol (MCP) server implementation for Azure Health Data Services FHIR (Fast Healthcare Interoperability Resources). This service provides a standardized interface for interacting with Azure FHIR servers, enabling healthcare data operations through MCP tools.

See the FastMCP guidance onmcp.jsonhere:https://gofastmcp.com/integrations/mcp-json-configuration

- Used for service-to-service authentication
- LeaveUSE_FAST_MCP_OAUTH_PROXY=false
- KeepHTTP_TRANSPORT=falseto use stdio transport
- Uses Azure AD client credentials flow

{ "mcpServers": { "fhir": { "type": "stdio", "command": "uvx", "args": [ "azure-fhir-mcp-server" ], "env": { "fhirUrl": "https://your-fhir-server.azurehealthcareapis.com/fhir", "clientId": "your-client-id", "clientSecret": "your-client-secret", "tenantId": "your-tenant-id" } } } }

The OAuth on-behalf-of flow requires a confidential Azure AD application that represents the MCP server.
- In the Azure portal, go toMicrosoft Entra ID ➜ App registrations ➜ New registration. Give it a descriptive name such asFHIR-MCP-Server, setSupported account typestoSingle tenant, and leave the redirect URI unset for now.
- After the app is created, capture the generatedApplication (client) IDandDirectory (tenant) IDfor later use.
- UnderExpose an API, selectSetfor the Application ID URI and accept the suggested valueapi://{appId}. Add a scope nameduser_impersonationwith admin consent display/description also set touser_impersonation.
- UnderCertificates & secrets, create aNew client secret(for exampleFHIR-MCP-Secret-New). Copy the secret value immediately; it is required for the MCP serverclientSecretsetting.
- UnderAuthentication, add the following Web redirect URIs to support the FastMCP OAuth proxy:

- http://localhost:9002/auth/callbackEnsureDefault client typeremainsNoso the app stays confidential.

- SetUSE_FAST_MCP_OAUTH_PROXY=true
- RequiresHTTP_TRANSPORT=true

uv pip install -e . uv run --env-file .env azure-fhir-mcp-server
{ "mcpServers": { "fhir": { "type": "http", "url": "http://localhost:9002/mcp" } } }

The following is a table of available environment configuration variables:

- search_fhir- Search for FHIR resources based on a dictionary of search parameters
- get_user_info- (OAuth only) Returns information about the authenticated Azure user

The server provides access to all standard FHIR resources through the MCP resource protocol:

- fhir://Patient/- Access all Patient resources
- fhir://Patient/{id}- Access a specific Patient resource
- fhir://Observation/- Access all Observation resources
- fhir://Observation/{id}- Access a specific Observation resource
- fhir://Medication/- Access all Medication resources
- fhir://Medication/{id}- Access a specific Medication resource
- And many more...

git clone https://github.com/erikhoward/azure-fhir-mcp-server.git cd azure-fhir-mcp-server

2 - Create and activate virtual environment:

python -m venv .venv source .venv/bin/activate
python -m venv .venv .venv\Scripts\activate

4 - Copy and configure environment variables:

fhirUrl=https://your-fhir-server.azurehealthcareapis.com/fhir clientId=your-client-id clientSecret=your-client-secret tenantId=your-tenant-id

Openclaude_desktop_config.jsonand add the following configuration.

On MacOs, the file is located here:~/Library/Application Support/Claude Desktop/claude_desktop_config.json.

On Windows, the file is located here:%APPDATA%\Claude Desktop\claude_desktop_config.json.

{ "mcpServers": { "fhir": { "command": "uv", "args": [ "--directory", "/path/to/azure-fhir-mcp-server/repo", "run", "azure_fhir_mcp_server" ], "env": { "LOG_LEVEL": "DEBUG", "fhirUrl": "https://your-fhir-server.azurehealthcareapis.com/fhir", "clientId": "your-client-id", "clientSecret": "your-client-secret", "tenantId": "your-tenant-id" } } } }
# Run all tests python -m pytest tests/ -v # Run with coverage pytest tests/ --cov=src/azure_fhir_mcp_server # Run specific test pytest tests/test_fastmcp_metadata.py::TestFastMCPMetadata::test_fastmcp_server_discovery -v # Run with detailed output pytest tests/test_fastmcp_metadata.py::TestFastMCPMetadata::test_output_detailed_metadata -v -s

Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (git checkout -b feature/AmazingFeature)
- Commit your changes (git commit -m '✨ Add some AmazingFeature')
- Push to the branch (git push origin feature/AmazingFeature)
- Open a Pull Request

Licensed under MIT - seeLICENSE.mdfile.

This is not an official Microsoft or Azure product.

Query Azure retail pricing information using the Azure Retail Prices API.

Provides real-time medical and medication information using the openFDA API.

Manage Azure Cloud PCs using the Microsoft Graph API.

Access Garmin Connect running data and training plan information.

Provides healthcare tools for interacting with FHIR resources on Google Cloud Healthcare API and public medical research APIs like PubMed.

A server for the Microsoft Graph and Azure RM APIs to manage Azure and Microsoft 365 tenants with AI.

Interact with the Mindbody API for managing fitness and wellness studios.

A fitness data platform that aggregates data from providers like Strava and Fitbit, offering secure B2B API access.

Access and manage wearable and health app data through the Terra API.

A healthcare MCP server for EMRs like Cerner and Epic, providing tools to interact with FHIR data and medical resources.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.