The Model Context Protocol (MCP) provides a standardized way for AI agents to connect with external tools, data sources, and services. In healthcare, an MCP server can become a controlled interoperability layer between an agentic AI system and clinical infrastructure such as FHIR repositories, electronic health records, laboratory systems, medication databases, and healthcare applications.

Agentic AI in healthcare is moving beyond conversational question answering. Modern healthcare agents can retrieve information, invoke specialized tools, coordinate multiple steps, analyze structured clinical data, and prepare decision-support outputs. But this capability also creates a fundamental engineering challenge: an intelligent agent must be able to use healthcare resources without receiving unrestricted access to sensitive clinical systems.
A Healthcare MCP Server addresses this challenge by exposing carefully defined resources, tools, and prompts through the Model Context Protocol. Instead of allowing an AI model to directly query an EHR or database, the MCP server controls what the agent can access, validates requests, applies authorization policies, records activity, minimizes data exposure, and can require human approval before sensitive operations.
This guide presents a practical architecture for building an Agentic AI Healthcare MCP Server using MCP together with healthcare interoperability technologies such as HL7 FHIR. It covers the conceptual model, MCP primitives, system architecture, healthcare tool design, Python and TypeScript implementation patterns, security and governance, agent-framework integration, real-world clinical-support examples, and the role of human-centered and Compassionate AI.
Table of Contents
- Core Concepts
- MCP Primitives for Healthcare
- Healthcare MCP Architecture
- Designing Healthcare MCP Tools
- Python Implementation
- TypeScript Implementation
- Security, Privacy and Governance
- Connecting AI Agent Frameworks
- Healthcare Agent Examples
- Compassionate AI Design
- The Core Architecture Principle
- Frequently Asked Questions
1. Core Concepts: What Is a Healthcare MCP Server?
Before writing code, it is useful to separate four technologies that are often confused: AI models, AI agents, MCP, and FHIR.
1.1 What is Model Context Protocol?
The Model Context Protocol is an open protocol designed to connect AI applications with external context and executable capabilities. In a healthcare environment, an MCP server can provide controlled access to clinical information, calculation services, medical knowledge systems, workflow tools, and other authorized resources.
MCP does not replace the underlying healthcare information system. It provides an interoperability and capability layer between the AI application and those systems.
1.2 What is an AI agent?
A conventional chatbot generally produces an answer from the information available in its context. An agentic AI system can determine that it needs additional information, select an appropriate tool, execute the tool, interpret the result, call another tool, and eventually produce a response.
For example, a clinician might ask an agent to review a patient’s current medications and recent laboratory results. The agent could:
- Identify the authorized patient.
- Retrieve the medication list.
- Retrieve relevant laboratory observations.
- Invoke a drug-interaction or clinical calculation tool.
- Organize the findings.
- Present a decision-support summary for clinician review.
The agent therefore performs orchestration, while the MCP server controls access to the underlying capabilities.
1.3 Why should an AI agent not receive raw database access?
A tool such as get_medications is fundamentally different from giving an AI unrestricted access to a clinical database. The tool can have a fixed input schema, predefined authorization requirements, data-minimization rules, rate limits, and audit logging.
1.4 MCP and FHIR have different jobs
| Technology | Primary role | Healthcare function |
|---|---|---|
| MCP | AI capability and connection layer | Allows agents to discover and invoke authorized resources and tools. |
| FHIR | Healthcare information model | Represents patients, observations, medications, conditions, encounters and other clinical resources. |
| EHR / Clinical System | Source system | Stores and manages the underlying clinical information. |
AI Agent
↓
MCP Client
↓
Healthcare MCP Server
↓
FHIR / Clinical APIs
↓
EHR / Clinical Data Systems
1.5 Human-in-the-loop is a system property
Healthcare AI should distinguish between information retrieval and actions that affect patient care or records.
A read-only operation such as retrieving a laboratory result may be automatically permitted when the user is authorized. A write operation—such as creating an order, modifying a prescription, or changing a patient record—should pass through explicit authorization and, where appropriate, human approval.
2. MCP Primitives in a Healthcare Context
A healthcare MCP implementation can organize its capabilities around the core MCP concepts of Resources, Tools, and Prompts.
| Primitive | Healthcare role | Examples | Primary control |
|---|---|---|---|
| Resources | Read-oriented information and state | Patient demographics, FHIR resources, observations | Authorization, minimization, audit |
| Tools | Executable capabilities | Clinical calculations, searches, workflow actions | Schema validation, authorization, limits |
| Prompts | Reusable interaction templates | Clinical summaries, interaction evaluation | Controlled templates and institutional guidance |
2.1 Resources
Resources are appropriate for controlled access to information. A resource could represent an authorized FHIR patient record or a particular category of clinical observations.
fhir://patient/{patient_id}
2.2 Tools
Tools represent explicit actions. Examples include:
search_patientget_patientget_medicationsget_allergiesget_observationsget_conditionsget_encounterscalculate_dosagecheck_interactionsEach tool should have a narrow purpose and an explicit input schema.
2.3 Prompts
Prompts can provide reusable templates for structured clinical-support workflows. For example, a medication interaction evaluation can define the information the agent should organize without turning the prompt into an autonomous prescribing mechanism.
3. Agentic AI Healthcare MCP Architecture
A production-oriented architecture separates the reasoning layer, MCP capability layer, healthcare interoperability layer, and enterprise infrastructure.
AI Agent Layer
- LLM reasoning engine
- Agent orchestration
- Planning and tool selection
- MCP client
- Human approval workflow
Healthcare MCP Layer
- MCP resources
- MCP tools
- MCP prompts
- Authentication
- Authorization
- Audit controls
Healthcare Data Layer
- FHIR server
- EHR gateway
- Laboratory systems
- Medication databases
- Clinical knowledge services
┌───────────────────────────────┐
│ AI Agent / LLM │
│ Planning • Reasoning • HITL │
└───────────────┬───────────────┘
│
▼
┌───────────────────────────────┐
│ MCP Client │
└───────────────┬───────────────┘
│
▼
┌───────────────────────────────┐
│ Healthcare MCP Server │
│ Authentication • Authorization│
│ Consent • Resources • Tools │
│ Validation • Audit • Limits │
└───────────────┬───────────────┘
│
▼
┌───────────────────────────────┐
│ FHIR / APIs │
└───────────────┬───────────────┘
│
▼
┌───────────────────────────────┐
│ EHR • Labs • Medications │
└───────────────────────────────┘
4. Designing Healthcare MCP Tools
The quality of the MCP server depends heavily on the quality of its tool definitions. A useful healthcare MCP server should expose small, deterministic, purpose-specific capabilities rather than one giant interface.
4.1 Recommended starting tool set
search_patientget_patientget_conditionsget_medicationsget_allergiesget_observationsget_diagnostic_reportsget_encountersget_proceduresget_care_plansget_immunizations4.2 Example tool schema
{
"name": "get_patient",
"description": "Retrieve authorized patient demographic information.",
"inputSchema": {
"type": "object",
"properties": {
"patientId": {
"type": "string",
"description": "Authorized FHIR Patient resource ID"
}
},
"required": ["patientId"],
"additionalProperties": false
}
}
5. Building a Healthcare MCP Server with Python
Python is a practical choice for healthcare AI infrastructure because it integrates well with AI frameworks, FHIR libraries, validation libraries, HTTP clients, and data-processing systems.
5.1 Environment setup
python -m venv venv
# Linux / macOS
source venv/bin/activate
pip install "mcp[cli]" fhir.resources pydantic httpx
5.2 Example server structure
import logging
from mcp.server import MCPServer
from pydantic import BaseModel, Field
mcp = MCPServer("Agentic Healthcare Server")
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger("HealthcareMCP")
@mcp.resource("fhir://patient/{patient_id}")
def get_patient_record(patient_id: str) -> str:
"""Retrieve an authorized patient's FHIR record."""
logger.info("AUDIT: patient resource requested")
# Replace with an authenticated FHIR gateway call.
return '{"resourceType":"Patient","id":"' + patient_id + '"}'
class DosageRequest(BaseModel):
patient_id: str
weight_kg: float = Field(gt=0)
mg_per_kg: float = Field(gt=0)
max_dose_mg: float = Field(default=500.0, gt=0)
@mcp.tool()
def calculate_pediatric_dosage(data: DosageRequest) -> dict:
"""Example calculation tool with a hard safety boundary."""
calculated = data.weight_kg * data.mg_per_kg
final_dose = min(calculated, data.max_dose_mg)
return {
"patient_id": data.patient_id,
"calculated_dose_mg": calculated,
"recommended_dose_mg": final_dose,
"safety_cap_applied": calculated > data.max_dose_mg
}
@mcp.prompt()
def evaluate_drug_interaction(drug_a: str, drug_b: str) -> str:
return f"""
Evaluate potential interaction between:
Primary Drug: {drug_a}
Secondary Drug: {drug_b}
Return:
1. Risk level
2. Mechanism
3. Adverse effects to monitor
4. Suggested provider action
This is clinical decision support and requires
professional review before patient-care action.
"""
if __name__ == "__main__":
mcp.run()
6. Building the Server with TypeScript
TypeScript is another strong choice when the healthcare AI platform is already based on Node.js or a TypeScript agent ecosystem.
import { McpServer } from "@modelcontextprotocol/server";
import { serveStdio } from "@modelcontextprotocol/server/stdio";
import * as z from "zod/v4";
serveStdio(() => {
const server = new McpServer({
name: "healthcare-records",
version: "1.0.0"
});
server.registerTool(
"get_patient",
{
title: "Get Patient",
description: "Retrieve authorized patient information.",
inputSchema: {
patientId: z.string()
}
},
async ({ patientId }) => {
// Authenticate the caller.
// Verify authorization.
// Verify patient access.
// Query the FHIR gateway.
// Minimize returned information.
// Record the access event.
const patient = await getPatientFromFHIR(patientId);
return {
content: [
{
type: "text",
text: JSON.stringify(patient)
}
]
};
}
);
return server;
});
Always verify the exact API against the MCP SDK version selected for deployment. MCP libraries evolve quickly, so version pinning and automated compatibility testing are particularly important for systems handling sensitive healthcare information.
7. Security, Privacy and Governance
Healthcare MCP servers operate in a high-consequence environment. Technical interoperability alone is not sufficient. The server must enforce security and governance independently of the AI model’s intentions.
7.1 Authentication
Authentication establishes who is requesting access. The MCP server should rely on trusted authentication infrastructure rather than accepting an identity claim generated by the model.
7.2 Authorization
Authorization determines what that authenticated user or service is permitted to access. Patient-level access should be evaluated by the server and its authorization layer.
7.3 Data minimization
The agent should receive only the information necessary to perform the requested task. A question about a medication interaction rarely requires the entire patient record.
7.4 Audit logging
Every sensitive access should produce an auditable event describing the requesting identity, operation, resource, authorization result, and relevant system metadata. Logs themselves must be designed so that sensitive information is not unnecessarily exposed.
7.5 Network isolation
A healthcare MCP server should ideally be deployed within appropriately controlled infrastructure, with restricted network egress and protected communication channels between the MCP server, FHIR services, EHR gateways, and other clinical systems.
7.6 Human approval for write operations
7.7 Minimum security architecture
- Strong authentication.
- Fine-grained authorization.
- Consent and policy enforcement where applicable.
- Strict input validation.
- Data minimization.
- Encryption in transit and at rest.
- Audit logging.
- Rate limiting.
- Network isolation.
- Human-in-the-loop controls for sensitive actions.
- Monitoring and anomaly detection.
8. Connecting Agent Frameworks to the MCP Server
An MCP server becomes especially useful when connected to an agent orchestration framework. Frameworks such as LangGraph or LlamaIndex can provide planning and reasoning while MCP provides standardized access to healthcare capabilities.
AI Agent
↓
Agent Orchestrator
↓
MCP Client
↓
Healthcare MCP Server
↓
FHIR / Healthcare Tools
from langchain_mcp_adapters.client import MultiServerMCPClient
async def run_agent():
async with MultiServerMCPClient({
"healthcare": {
"command": "python",
"args": ["server.py"],
"transport": "stdio"
}
}) as client:
tools = client.get_tools()
print(
f"Loaded {len(tools)} healthcare tools."
)
The agent framework should remain responsible for orchestration and reasoning, while authorization and healthcare-system access remain enforced at the server and infrastructure layers.
9. Real-World Healthcare Agent Examples
The following examples illustrate how an agent can coordinate several controlled MCP capabilities without receiving unrestricted access to a clinical database.
9.1 Example: Gastrointestinal Workup Review
1. get_patient()
→ verify authorized patient access
2. get_conditions()
→ retrieve relevant diagnosis history
3. get_diagnostic_reports()
→ retrieve authorized reports
4. get_observations()
→ retrieve relevant laboratory observations
5. Agent
→ organize findings
6. Clinician
→ interprets clinical significance
9.2 Example: Medication Safety Review
1. get_patient()
→ verify access
2. get_medications()
→ retrieve current medications
3. check_interactions()
→ evaluate relevant combinations
4. get_observations()
→ retrieve relevant laboratory or vital information
5. Agent
→ summarize potential risks
6. Clinician
→ reviews and makes the clinical decision
9.3 Example: Diabetes Trend Review
An agent can prepare a longitudinal summary before a clinical appointment.
1. get_observations()
→ retrieve historical A1C values
2. get_medications()
→ retrieve current diabetes medications
3. get_care_plans()
→ retrieve relevant care-plan information
4. Agent
→ identify the trajectory
5. Clinician
→ evaluates whether treatment should change
9.4 Why this pattern is important
- The agent does not need the entire patient record.
- Each access request can be separately authorized.
- Each tool can be independently tested.
- Each operation can be independently audited.
- Clinical write operations can remain behind human approval.
10. Compassionate AI and Human-Centered Healthcare Agents
Healthcare AI should not be evaluated only according to whether it can retrieve data or generate technically plausible responses. It should also be designed around the human consequences of its outputs.
A Compassionate AI approach adds human-centered behavioral principles to the technical architecture.
10.1 Transparency
Patients and clinicians should be able to distinguish AI-generated summaries from statements made directly by healthcare professionals.
10.2 Appropriate human escalation
Sensitive clinical information may require communication by a qualified human professional. An AI system should be able to identify when a matter requires escalation rather than attempting to replace human judgment.
10.3 Respectful communication
Clinical accuracy does not require unnecessarily alarming, confusing, or dehumanizing language. Healthcare agents should communicate findings clearly, calmly, and respectfully.
10.4 Patient autonomy
The agent should support informed human decision-making rather than quietly replacing it. Where patient preferences and values matter, the system should make space for those considerations.
10.5 Suffering reduction
A human-centered healthcare agent can be designed to identify opportunities to reduce avoidable delays, confusion, repetitive administrative work, information fragmentation, and other sources of unnecessary suffering while remaining within appropriate clinical and organizational boundaries.
11. The Core Architecture Principle
One of the most important design decisions is to avoid creating a proprietary healthcare data structure specifically for the AI agent.
FHIR
↓
Healthcare MCP Server
↓
MCP Resources + Tools + Prompts
↓
Agentic AI
↓
Human Decision-Making
| Layer | Responsibility |
|---|---|
| FHIR | Standardizes healthcare information and interoperability. |
| MCP | Standardizes how AI applications access authorized capabilities. |
| Agent | Reasons about the user’s request and orchestrates available tools. |
| Human | Provides clinical judgment, authorization, accountability, and oversight where required. |
12. Frequently Asked Questions
What is an Agentic AI Healthcare MCP Server?
It is an MCP server designed to provide AI agents with controlled access to healthcare resources and executable capabilities. It can connect an agent with FHIR repositories, clinical APIs, medication services, laboratory systems, calculation tools, and other authorized healthcare infrastructure.
Why combine MCP with FHIR?
FHIR and MCP solve different problems. FHIR provides a standardized healthcare information model, while MCP provides a standardized interface through which AI applications can access external resources and capabilities.
What tools should a healthcare MCP server expose?
A useful starting set includes search_patient, get_patient, get_conditions, get_medications, get_allergies, get_observations, get_diagnostic_reports, get_encounters, get_procedures, get_care_plans, and get_immunizations. Specialized tools can then be added for specific clinical workflows.
Should an AI agent have direct access to the EHR?
A safer architecture is to place a controlled capability layer between the agent and the EHR. The MCP server can enforce authorization, validation, minimization, auditing, rate limits, and workflow policies before information or actions reach the underlying healthcare system.
How should healthcare MCP servers be secured?
Security should be enforced at the infrastructure and server layers rather than delegated to the AI model. Key controls include authentication, authorization, consent and policy enforcement, validation, data minimization, encryption, auditing, network isolation, rate limiting, monitoring, and human approval for sensitive write operations.
Can an MCP healthcare agent diagnose patients?
An MCP server is an interoperability and capability mechanism; it does not inherently make an AI system clinically qualified to diagnose. Whether an agent can perform any clinical function depends on the specific system, evidence, validation, governance, regulatory environment, intended use, and qualified human oversight.
Can MCP support human-in-the-loop healthcare AI?
Yes. Human approval can be incorporated into the agent workflow, particularly for operations that modify patient records, create orders, transmit prescriptions, or otherwise affect clinical care. The strongest design is to make these controls architectural rather than relying on the model to voluntarily follow them.
What is the most important design principle?
Do not give the AI unrestricted access to healthcare systems. Give the AI narrowly defined, authorized, auditable capabilities through the MCP server, use established healthcare interoperability standards such as FHIR, and preserve human oversight for consequential clinical decisions.
Conclusion
An Agentic AI Healthcare MCP Server can provide an important bridge between intelligent AI agents and the complex ecosystem of modern healthcare information systems. MCP can organize access to tools and resources, while FHIR can provide a standardized representation of healthcare information.
The most robust architecture separates AI reasoning, MCP capabilities, healthcare data, security controls, and human decision-making. This separation allows developers to build more modular and auditable healthcare AI systems without giving an AI model unrestricted access to sensitive clinical infrastructure.
The next generation of healthcare AI will depend not simply on more capable language models, but on reliable agent infrastructure: interoperable tools, controlled data access, strong security, human oversight, clinical validation, and human-centered design. A Healthcare MCP Server can form one important component of that infrastructure.
