agentcare-mcp
by: Kartha-AI
MCP Server for EMRs with FHIR
📌Overview
Purpose: To provide an MCP server that enables seamless interaction with FHIR data and healthcare resources within Electronic Medical Records (EMR) systems like Cerner and Epic.
Overview: Agent Care serves as a robust tool for healthcare professionals by allowing them to harness FHIR data efficiently. It leverages various integrations, including OAuth2 for EMR authentication and the Anthropic Claude and Goose Desktop interfaces for enhanced interaction and analysis of medical data.
Key Features:
-
EMR Integration: Facilitates integration with EMRs using SMART on FHIR APIs, improving data access and interoperability.
-
Comprehensive Medical Research Tools: Includes tools that allow healthcare providers to access medical literature and clinical trial data, aiding in better-informed clinical decisions.
Agent Care: An MCP Server for EMRs like Cerner and Epic
A Model Context Protocol (MCP) server that provides healthcare tools and prompts for interacting with FHIR data and medical resources on EMRs like Cerner and Epic using Claude Desktop and Goose Desktop.
Features
- EMR integration using SMART on FHIR APIs
- Uses OAuth2 to authenticate with EMRs
- Anthropic Claude Desktop integration
- Medical research integration (PubMed, Clinical Trials, FDA)
- Response caching
- Error handling
- Null-safe data formatting
- Comprehensive clinical analysis
Tools
FHIR Tools
find_patient
- Search for a patient by name, DOB, or other identifiersget_patient_observations
- Retrieve patient observations/vital signsget_patient_conditions
- Get patient's active conditionsget_patient_medications
- Get patient's current medicationsget_patient_encounters
- Get patient's clinical encountersget_patient_allergies
- Get patient's allergies and intolerancesget_patient_procedures
- Get patient's proceduresget_patient_careteam
- Get patient's care team membersget_patient_careplans
- Get patient's active care plansget_vital_signs
- Get patient's vital signsget_lab_results
- Get patient's laboratory resultsget_medications_history
- Get patient's medication historyclinical_query
- Execute custom FHIR queries
Medical Research Tools
search-pubmed
- Search PubMed articles related to medical conditionssearch-trials
- Find relevant clinical trialsdrug-interactions
- Check drug-drug interactions
Usage
Each tool requires specific parameters:
Required Parameters
- Most tools require
patientId
- Some tools have additional parameters:
lab_trend_analysis
: requireslabType
search-pubmed
: requiresquery
and optionalmaxResults
search-trials
: requirescondition
and optionallocation
drug-interactions
: requiresdrugs
array
Development Configuration
To use with Cerner: create a sandbox account at Cerner Code Console, create a new provider app, and get the clientId/secret.
(Note: ec2458f2-1e24-41c8-b71b-0e701af7583d is the tenant id for Cerner developer sandbox)
To use with Epic: sign up as a developer at Epic FHIR Developer Apps, create a new app, and get the clientId/secret.
For PubMed, Clinical Trials, and FDA, get the API keys from the respective websites:
- https://clinicaltrials.gov/api/v2/studies
- https://eutils.ncbi.nlm.nih.gov/entrez/eutils
- https://api.fda.gov/drug/ndc.json
Create a .env
file in the root directory or use environment variables in Claude Desktop launch configuration.
Cerner Configuration
OAUTH_CLIENT_ID="XXXXX"
OAUTH_CLIENT_SECRET="XXXXXXX"
OAUTH_TOKEN_HOST="https://authorization.cerner.com"
OAUTH_AUTHORIZE_PATH="/tenants/ec2458f2-1e24-41c8-b71b-0e701af7583d/protocols/oauth2/profiles/smart-v1/personas/provider/authorize"
OAUTH_AUTHORIZATION_METHOD='header'
OAUTH_TOKEN_PATH="/tenants/ec2458f2-1e24-41c8-b71b-0e701af7583d/hosts/api.cernermillennium.com/protocols/oauth2/profiles/smart-v1/token"
OAUTH_AUDIENCE="https://fhir-ehr.cerner.com/r4/ec2458f2-1e24-41c8-b71b-0e701af7583d"
OAUTH_CALLBACK_URL="http://localhost:3456/oauth/callback"
OAUTH_SCOPES="user/Patient.read user/Condition.read user/Observation.read user/MedicationRequest.read user/AllergyIntolerance.read user/Procedure.read user/CarePlan.read user/CareTeam.read user/Encounter.read user/Immunization.read"
OAUTH_CALLBACK_PORT="3456"
FHIR_BASE_URL="https://fhir-ehr.cerner.com/r4/ec2458f2-1e24-41c8-b71b-0e701af7583d"
PUBMED_API_KEY=your_pubmed_api_key
CLINICAL_TRIALS_API_KEY=your_trials_api_key
FDA_API_KEY=your_fda_api_key
Epic Configuration
OAUTH_CLIENT_ID="XXXXXXX"
OAUTH_CLIENT_SECRET=""
OAUTH_TOKEN_HOST="https://fhir.epic.com"
OAUTH_AUTHORIZE_PATH="/interconnect-fhir-oauth/oauth2/authorize"
OAUTH_AUTHORIZATION_METHOD='body'
OAUTH_TOKEN_PATH="/interconnect-fhir-oauth/oauth2/token"
OAUTH_AUDIENCE="https://fhir.epic.com/interconnect-fhir-oauth/api/FHIR/R4"
OAUTH_CALLBACK_URL="http://localhost:3456/oauth/callback"
OAUTH_SCOPES="user/Patient.read user/Observation.read user/MedicationRequest.read user/Condition.read user/AllergyIntolerance.read user/Procedure.read user/CarePlan.read user/CareTeam.read user/Encounter.read user/Immunization.read"
OAUTH_CALLBACK_PORT=3456
FHIR_BASE_URL="https://fhir.epic.com/interconnect-fhir-oauth/api/FHIR/R4"
PUBMED_API_KEY=your_pubmed_api_key
CLINICAL_TRIALS_API_KEY=your_trials_api_key
FDA_API_KEY=your_fda_api_key
Start MCP Server Locally
git clone {agentcare-mcp-github path}
cd agentcare-mcp
npm install
npm run build
Use Claude Desktop
For macOS, configure claude_desktop_config.json
:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/your-username/Desktop"
]
},
"agent-care": {
"command": "node",
"args": [
"/Users/your-username/{agentcare-download-path}/agent-care-mcp/build/index.js"
],
"env": {
"OAUTH_CLIENT_ID": "XXXXXX",
"OAUTH_CLIENT_SECRET": "XXXXXXX",
"OAUTH_TOKEN_HOST": "",
"OAUTH_TOKEN_PATH": "",
"OAUTH_AUTHORIZE_PATH": "",
"OAUTH_AUTHORIZATION_METHOD": "",
"OAUTH_AUDIENCE": "",
"OAUTH_CALLBACK_URL": "",
"OAUTH_SCOPES": "",
"OAUTH_CALLBACK_PORT": "",
"FHIR_BASE_URL": "",
"PUBMED_API_KEY": "",
"CLINICAL_TRIALS_API_KEY": "",
"FDA_API_KEY": ""
}
}
}
}
Use MCP Inspector
(Make sure to update the .env
file with the correct values.)
npm install -g @modelcontextprotocol/inspector
mcp-inspector build/index.js
Then open http://localhost:5173 in your browser.
Test User Logins
Commonly used for sandbox/dev environments:
- Cerner: portal | portal
- Epic: FHIRTWO | EpicFhir11!
Troubleshooting
If Claude Desktop is running, it uses port 3456 for authentication. Terminate the process with:
kill -9 $(lsof -t -i:3456)
Use Goose
Goose is an open-source AI Agent framework from Block (Stripe) that works with MCP servers. Goose Desktop is similar to Claude Desktop but can be configured to use models other than Anthropic.
More info: https://block.xyz/inside/block-open-source-introduces-codename-goose
Goose Desktop extension can be configured with the command:
/Users/your-username/{agentcare-download-path}/agent-care-mcp/build/index.js