azure-fhir
Azure AHDS FHIR MCP Server
claude mcp add --transport stdio erikhoward-azure-fhir-mcp-server uvx azure-fhir-mcp-server \ --env fhirUrl="https://your-fhir-server.azurehealthcareapis.com/fhir" \ --env clientId="your-client-id" \ --env tenantId="your-tenant-id" \ --env clientSecret="your-client-secret"
How to use
This MCP server provides a bridge to Azure Health Data Services FHIR by exposing standard MCP interfaces to interact with Azure FHIR resources. It supports common FHIR operations via the MCP toolset, including resource discovery, search, and access to standard FHIR resources like Patient, Observation, Medication, and more through the MCP protocol. The server can operate using a client credentials flow (default) or an OAuth on-behalf-of flow when integrated with FastMCP and the Azure OAuth proxy. Tools available include search_fhir for dictionary-driven searches and get_user_info (OAuth only) to reveal information about the authenticated Azure user. You can navigate the FHIR resources using URIs such as fhir://Patient/ to access all patients or fhir://Observation/{id} for a specific observation, with the MCP server translating these requests to the Azure FHIR backend.
How to install
Prerequisites:
- Python 3.13+ installed
- uv (FastAPI/uvicorn runner for MCP)
- Git to clone the repository
Step-by-step installation:
- Clone the repository
git clone https://github.com/erikhoward/azure-fhir-mcp-server.git
cd azure-fhir-mcp-server
- Create and activate a virtual environment Linux/macOS:
python -m venv .venv
source .venv/bin/activate
Windows:
python -m venv .venv
.\.venv\Scripts\activate
- Install dependencies (editable mode for development)
pip install -e ".[dev]"
- Copy and configure environment variables
cp .env.example .env
Edit the .env file to include your Azure FHIR details, for example:
fhirUrl=https://your-fhir-server.azurehealthcareapis.com/fhir
clientId=your-client-id
clientSecret=your-client-secret
tenantId=your-tenant-id
- Run the MCP server (examples assume development setup)
uv run azure_fhir_mcp_server
- If you plan to use Claude Desktop or other integrations, update the Claude configuration to point at your local MCP server as demonstrated in the repo’s Claude configuration guidance.
Additional notes
Notes and tips:
- The default authentication flow is client credentials; switch to OAuth On-Behalf-Of by enabling USE_FAST_MCP_OAUTH_PROXY=true and HTTP_TRANSPORT=true when using the FastMCP Azure OAuth proxy.
- Ensure fhirUrl, clientId, clientSecret, and tenantId are correctly set in your environment before starting.
- The mcp.json guidance in the README shows an example where the server is exposed via stdio (uvx) and can be executed from the MCP runtime with the azure-fhir-mcp-server entry point.
- Available tools include search_fhir for dictionary-based FHIR searches and get_user_info (OAuth only) for user metadata. Resource access is exposed through fhir:// URIs for standard FHIR resources.
- If you enable HTTP transport for OAuth, you may need to set FASTMCP_SERVER_AUTH_AZURE_BASE_URL and related redirect settings to match your deployment.
Related MCP Servers
mcp -odoo
A Model Context Protocol (MCP) server that enables AI assistants to securely interact with Odoo ERP systems through standardized resources and tools for data retrieval and manipulation.
asterisk
Asterisk Model Context Protocol (MCP) server.
mcp_autogen_sse_stdio
This repository demonstrates how to use AutoGen to integrate local and remote MCP (Model Context Protocol) servers. It showcases a local math tool (math_server.py) using Stdio and a remote Apify tool (RAG Web Browser Actor) via SSE for tasks like arithmetic and web browsing.
julia
MCP server for persistent Julia sessions — fast iteration without startup/compilation overhead
BinAssistMCP
Binary Ninja plugin to provide MCP functionality.
mcp-cyberbro
Using MCP is fun with Cyberbro!