Prototype · This site is a prototype showing 100 real servers from the official registry, not all of them yet.
PopNx MCPMCP servers for people who use AI · explained in plain words

FHIR MCP Server

by wso2version 0.11.0i★ 137iRuns on your computer
Registry nameio.github.wso2/fhir-mcp-server

Overview

Description from the maker (original English)

MCP server providing seamless access to FHIR APIs for AI tools and healthcare applications

PopNx MCP’s three pillars

These three are never merged into one score: opinions, measurements and popularity are different things.

What you can do with it

We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.

  • Connection: Runs on your computer
  • Transport: stdio
  • Category: Clinics & health
  • You need to fill in: FHIR_SERVER_BASE_URL

Install

Pick the AI app you use, then copy the settings.

You need

  • PyPIPython’s uv installed (for the uvx command)

Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json

{
  "mcpServers": {
    "fhir": {
      "command": "uvx",
      "args": [
        "fhir-mcp-server"
      ],
      "env": {
        "FHIR_SERVER_BASE_URL": "your-value"
      }
    }
  }
}

Run this in your terminal

claude mcp add fhir --env FHIR_SERVER_BASE_URL=your-value -- uvx fhir-mcp-server

Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json

{
  "mcpServers": {
    "fhir": {
      "command": "uvx",
      "args": [
        "fhir-mcp-server"
      ],
      "env": {
        "FHIR_SERVER_BASE_URL": "your-value"
      }
    }
  }
}

Paste into .vscode/mcp.json in your project

{
  "servers": {
    "fhir": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "fhir-mcp-server"
      ],
      "env": {
        "FHIR_SERVER_BASE_URL": "your-value"
      }
    }
  }
}

Values you fill in

  • FHIR_SERVER_BASE_URL required env
    Base URL of the FHIR Server (eg: https://hapi.fhir.org/baseR5)

These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.

Basic checksi

We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 5, 2026

  • ✓ Pass

    Maker matches the repo

    The registry name was verified with the GitHub account wso2, which owns the repo

  • ✓ Pass

    Still maintained

    Code last changed 3 days ago

  • ✓ Pass

    Has a licence

    Uses Apache-2.0

  • – Not applicable

    Endpoint responds

    This one runs on your computer; there is no internet endpoint

  • – Not applicable

    Sign-in with OAuth

    Runs on your computer and uses local settings instead

  • … Not checked yet

    No hidden instructions in tool descriptions

    Needs the server’s tool list first; this check starts in the next step

Compared with others in Clinics & healthi

  • More stars than 67% of the other 3 servers in this category
  • Published to the registry more recently than 67% of the other 3 servers in this category
  • Basic checks equal to or better than 100% of the other 3 servers in this category

Compared only with servers in this prototype, not the whole registry.

Common questions

Is FHIR MCP Server safe?

It passed 3 of 3 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.

What keys or codes does it need?

You need to fill in: FHIR_SERVER_BASE_URL

Does it run on my computer or in the cloud?

It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).

Is it still maintained?

The GitHub repo last changed 3 days ago, and the latest version (0.11.0) reached the registry 7 days ago.

Which apps can use it?

Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Python (uv) on your computer.

What can I use instead?

In the same category: Mirobody, Google Health MCP, Langcare MCP FHIR

Alternatives

Servers in the same category from other makers, sorted by stars.

Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi

Mirobody

by thetahealth

Lab results to LOINC codes and UCUM units, symptoms and diagnoses to ICPC-3. Offline, no API key.

Runs on your computer★ 1,408Apache-2.0Updated 4 days ago

Google Health MCP

by davidmosiah

Privacy-first unofficial Google Health API v4 MCP server for health, sleep, activity, HR agents

Runs on your computer★ 79MITUpdated 4 months ago

An MCP FHIR server written in Go for EMR systems like Epic and Cerner

Runs on your computer★ 70MITUpdated 9 months ago

README from the maker

Open the README

Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.

Model Context Protocol (MCP) Server for Fast Healthcare Interoperability Resources (FHIR) APIs

Table of Contents

  • Model Context Protocol (MCP) Server for Fast Healthcare Interoperability Resources (FHIR) APIs
  • Table of Contents
  • Overview
  • Demo
  • Demo with HAPI FHIR server
  • Demo with EPIC Sandbox
  • Core Features
  • Prerequisites
  • Installation
  • Installing using PyPI Package
  • Installing from Source
  • Installing using Docker
  • Running the MCP Server with Docker
  • Using Docker Compose with WSO2 FHIR Server
  • Configuring any FHIR Server
  • Integration with MCP Clients
  • VS Code
  • Claude Desktop
  • MCP Inspector
  • Configuration
  • CLI Options
  • Environment Variables
  • Tools
  • Development \& Testing
  • Installing Development Dependencies
  • Running Tests

Overview

The FHIR MCP Server is a Model Context Protocol (MCP) server that provides seamless integration with FHIR APIs. Designed for developers, integrators, and healthcare innovators, this server acts as a bridge between modern AI/LLM tools and healthcare data, making it easy to search, retrieve, and analyze clinical information.

Demo

Demo with HAPI FHIR server

This video showcases the MCP server's functionality when connected to a public HAPI FHIR server. This example showcases direct interaction with an open FHIR server that does not require an authorization flow.

https://github.com/user-attachments/assets/cc6ac87e-8329-4da4-a090-2d76564a3abf

Demo with EPIC Sandbox

This video showcases the MCP server's capabilities within the Epic EHR ecosystem. It demonstrates the complete OAuth 2.0 Authorization Code Grant flow.

https://github.com/user-attachments/assets/96b433f1-3e53-4564-8466-65ab48d521de

Core Features

  • MCP-compatible transport: Serves FHIR via stdio, SSE, or streamable HTTP
  • SMART-on-FHIR based authentication support: Securely authenticate with FHIR servers and clients
  • Response Filtering using FHIRPath: Filter resources and bundles returned by read and search operations using custom FHIRPath expressions to retrieve only the fields needed for the task, reducing payload sizes.
  • Tool integration: Integratable with any MCP client such as VS Code, Claude Desktop, and MCP Inspector

Prerequisites

  • Python 3.8+
  • uv (for dependency management)
  • An accessible FHIR API server.

Installation

You can use the FHIR MCP Server by installing our Python package, or by cloning this repository.

Installing using PyPI Package
  1. Configure Environment Variables:

To run the server, you must set FHIR_SERVER_BASE_URL.

  • To enable authorization: Set FHIR_SERVER_BASE_URL, FHIR_SERVER_CLIENT_ID, FHIR_SERVER_CLIENT_SECRET, and FHIR_SERVER_SCOPES. Authorization is enabled by default.
  • To disable authorization: Set FHIR_SERVER_DISABLE_AUTHORIZATION to True.

By default, the MCP server runs on [http://localhost:8000](http://localhost:8000), and you can customize the host and port using FHIR_MCP_HOST and FHIR_MCP_PORT.

You can set these by exporting them as environment variables like below or by creating a .env file (referencing .env.example).

`bash export FHIR_SERVER_BASE_URL="" export FHIR_SERVER_CLIENT_ID="" export FHIR_SERVER_CLIENT_SECRET="" export FHIR_SERVER_SCOPES=""

export FHIR_MCP_HOST="localhost" export FHIR_MCP_PORT="8000" `

  1. Install the PyPI package and run the server

bash uvx fhir-mcp-server

Installing from Source
  1. Clone the repository: bash git clone cd
  1. Create a virtual environment and install dependencies: bash uv venv source .venv/bin/activate uv pip sync requirements.txt Or with pip: bash python -m venv .venv source .venv/bin/activate pip install -r requirements.txt
  1. Configure Environment Variables: Copy the example file and customize if needed: bash cp .env.example .env
  1. Run the server: bash uv run fhir-mcp-server
Installing using Docker
Running the MCP Server with Docker

You can run the MCP server using Docker for a consistent, isolated environment.

Note on Authorization: When running the MCP server locally via Docker or Docker Compose, authorization should be disabled by setting the environment variable, FHIR_SERVER_DISABLE_AUTHORIZATION=True . This would be fixed in the future releases.

  1. Build the Docker Image or pull the docker image from the container registry:
  • Build from source: bash docker build -t fhir-mcp-server .
  • Pull from GitHub Container Registry: bash docker pull ghcr.io/wso2/fhir-mcp-server:latest latest is built from the main branch. To use a release, pull its version tag instead, for example ghcr.io/wso2/fhir-mcp-server:0.11.0.
  1. Configure Environment Variables

Copy the example environment file and edit as needed:

`bash cp .env.example .env

Edit .env to set your FHIR server, client credentials, etc.

`

Alternatively, you can pass environment variables directly with -e flags or use Docker secrets for sensitive values. See the Configuration section for details on available environment variables.

  1. Run the Container

bash docker run --env-file .env -p 8000:8000 ghcr.io/wso2/fhir-mcp-server:latest

This will start the server and expose it on port 8000. Adjust the port mapping as needed.

Using Docker Compose with WSO2 FHIR Server

For a quick setup that includes both the FHIR MCP server and the WSO2 FHIR Server (with PostgreSQL), use the provided docker-compose.yml. This sets up an instant development environment for testing FHIR operations.

  1. Prerequisites:
  • Docker and Docker Compose installed.
  1. Set the Database Credentials:

Copy the example environment file and set DB_PASSWORD in .env. If you already have a .env, add the DB_USER, DB_PASSWORD and DB_NAME lines from .env.example to it instead.

   cp .env.example .env

Docker Compose reads .env automatically. DB_USER and DB_NAME default to postgres if not set. .env is excluded from Git; use a secrets manager for production deployments.

  1. Run the Stack:
   docker compose up -d

This command will:

  • Start a PostgreSQL database container.
  • Launch the FHIR Server (connected to PostgreSQL) listening on http://localhost:8080/fhir/r4.
  • Build and run the FHIR MCP server container listening on http://localhost:8000, with FHIR_SERVER_BASE_URL set to http://wso2-fhir-server:8080/fhir/r4.
  1. Access the Services:
  • FHIR MCP Server: http://localhost:8000
  • FHIR Server: http://localhost:8080/fhir/r4
  • To stop run docker compose down.

docker compose down removes the database data; use docker compose stop to keep it between runs.

  1. Configure Additional Environment Variables:

If you need to customize OAuth or other settings, adjust the env variables in the docker-compose.yml. The compose file sets basic configuration; refer to the Configuration section for full options.

Configuring any FHIR Server

To use a different FHIR server, run the FHIR MCP server container with FHIR_SERVER_BASE_URL pointing to that server. The example below uses the HAPI FHIR server. Stop the default stack first if it's already running (docker compose down), as both use ports 8000 and 8080.

  1. Create a network and start the HAPI FHIR server:
   docker network create fhir-network

docker run -d --name hapi-fhir-server --network fhir-network -p 127.0.0.1:8080:8080 docker.io/hapiproject/hapi:v8.4.0-2

HAPI FHIR listens on http://localhost:8080/fhir. This uses its built-in database, so data is lost when the container is removed.

  1. Build and run the FHIR MCP server container:
   docker build -t fhir-mcp-server .

docker run -d --name fhir-mcp-server-hapi --network fhir-network -p 127.0.0.1:8000:8000 -e FHIR_SERVER_BASE_URL=http://hapi-fhir-server:8080/fhir -e FHIR_MCP_HOST=0.0.0.0 -e FHIR_SERVER_DISABLE_AUTHORIZATION=True fhir-mcp-server

The FHIR MCP server listens on http://localhost:8000.

  1. Stop and clean up:
   docker rm -f fhir-mcp-server-hapi hapi-fhir-server

docker network rm fhir-network

For any other FHIR server, set FHIR_SERVER_BASE_URL to its base URL. If the FHIR server runs on your host rather than in Docker, use http://host.docker.internal: /... instead of localhost. On Linux, also add --add-host=host.docker.internal:host-gateway to the docker run command, and make sure the FHIR server listens on an address reachable from containers (for example 0.0.0.0, not only 127.0.0.1).

Integration with MCP Clients

The FHIR MCP Server is designed for seamless integration with various MCP clients.

VS Code

Add the following JSON block to your MCP configuration file in VS Code (> V1.104). You can do this by pressing Ctrl + Shift + P and typing MCP: Open User Configuration.

Streamable HTTP STDIO SSE

"servers": {

"fhir": { "type": "http", "url": "http://localhost:8000/mcp", } }

</td>
"servers": {

"fhir": { "command": "uv", "args": [ "-

Only the beginning is shown; read the rest in the repo

Ask PopNx