MCP Server for Google Cloud Healthcare API
# An MCP Server for Google Cloud Healthcare API (FHIR)
[](https://smithery.ai/server/@Kartha-AI/google-cloud-healthcare-api-mcp)
A Model Context Protocol (MCP) server that provides healthcare tools for interacting with FHIR resources on [Google Cloud Healthcare API](https://cloud.google.com/healthcare-api) and public medical research APIs like pubmed, using MCP clients like Claude and Goose.
This is a slightly modified version for AgentCare MCP Server for EHRs. https://github.com/Kartha-AI/agentcare-mcp
The maion differnce is that this repo talks to Google Cloud Healthcare FHIR APIs thru a SmartonFHIR gateway that's secured by Firebase Auth.
## Architetcure
<img src="screenshots/architecture.png" alt="Architecture" width="700">
## Demo
- Claude: demo/claude-demo.mp4
- Goose: demo/goose-demo.mp4
## Screenshots
<img src="screenshots/goose/goose-auth.png" alt="Auth" width="700">
<img src="screenshots/goose/goose-patient.png" alt="Patient" width="700">
<img src="screenshots/goose/goose-conditions.png" alt="Conditions" width="700">
<img src="screenshots/goose/goose-vitals.png" alt="Vitals" width="700">
<img src="screenshots/claude/gchapi.png" alt="GCHAPI" width="700">
<img src="screenshots/claude/convo.png" alt="Converse" width="700">
<img src="screenshots/claude/chart.png" alt="Timeline" width="700">
<img src="screenshots/claude/soap.png" alt="Soap Notes" width="700">
## Tools
### FHIR Tools
- `find_patient` - Search for a patient by name, DOB, or other identifiers
- `get_patient_observations` - Retrieve patient observations/vital signs
- `get_patient_conditions` - Get patient's active conditions
- `get_patient_medications` - Get patient's current medications
- `get_patient_encounters` - Get patient's clinical encounters
- `get_patient_allergies` - Get patient's allergies and intolerances
- `get_patient_procedures` - Get patient's procedures
- `get_patient_careteam` - Get patient's care team members
- `get_patient_careplans` - Get patient's active care plans
- `get_vital_signs` - Get patient's vital signs
- `get_lab_results` - Get patient's laboratory results
- `get_medications_history` - Get patient's medication history
- `clinical_query` - Execute custom FHIR queries
### Medical Research Tools
- `search-pubmed` - Search PubMed articles related to medical conditions
- `search-trials` - Find relevant clinical trials
- `drug-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`: requires `labType`
- `search-pubmed`: requires `query` and optional `maxResults`
- `search-trials`: requires `condition` and optional `location`
- `drug-interactions`: requires `drugs` array
refer to: /src/server/constants/tools.ts for tools specirfication
## Use with claude desktop
```
for claude desktop:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
(use the env variables as shown above)
{
"mcpServers": {
"google-cloud-healthcare-api-mcp": {
"command": "node",
"args": [
"/Users/your-username/{google-cloud-healthcare-api-mcp dir}/build/index.js"
],
"env": {
"FIREBASE_API_KEY":"XXXXXXXXX",
"FIREBASE_AUTH_DOMAIN":"XXXXXXXX",
"FIREBASE_PROJECT_ID":"XXXXXXX",
"FIREBASE_STORAGE_BUCKET":"XXXXXXXXX",
"FIREBASE_MESSAGING_SENDER_ID":"XXXXXXX",
"FIREBASE_APP_ID":"XXXXXXXXX",
"FIREBASE_MEASUREMENT_ID":"XXXXXXXX",
"FIREBASE_AUTH_CALLBACK_PORT":"3456",
"FHIR_BASE_URL":"{gchapi-fhir-gateway-host}/fhir",
"PUBMED_API_KEY":"your_pubmed_api_key",
"CLINICAL_TRIALS_API_KEY":"your_trials_api_key",
"FDA_API_KEY":"your_fda_api_key"
}
}
}
}
```
### Installing via Smithery
To install google-cloud-healthcare-api-mcp for Claude Desktop automatically via [Smithery](https://smithery.ai/server/@Kartha-AI/google-cloud-healthcare-api-mcp):
```bash
npx -y @smithery/cli install @Kartha-AI/google-cloud-healthcare-api-mcp --client claude
```
## Start MCP Server Locally with MCP Inspector
```
git clone git@github.com:Kartha-AI/google-cloud-healthcare-api-mcp.git
cd google-cloud-healthcare-api-mcp
npm install
npm run build
npm install -g @modelcontextprotocol/inspector
mcp-inspector build/index.js
http://localhost:5173
Set up the env vars on Inspector
```
## Troubleshooting:
If Claude desktop is running it uses port 3456 for Auth. You need to terminate that process using the following command:
```
kill -9 $(lsof -t -i:3456)
```TDQS
Scored across 15 tools
Each tool has a clearly distinct purpose targeting specific healthcare data types (e.g., appointments, lab results, medications, allergies). There is no overlap in functionality, and an agent can easily differentiate between tools based on the resource they retrieve.
Most tools follow a consistent verb_noun pattern (e.g., get_patient_allergies, get_patient_conditions), but there are minor deviations with hyphenated names (get-drug-info, search-pubmed, search-trials) and one tool using 'find' instead of 'get' (find_patient). Overall, the naming is readable and mostly predictable.
With 15 tools, the server is well-scoped for a healthcare API, covering a comprehensive range of patient data and external medical resources. Each tool serves a specific and necessary function without redundancy, making the count appropriate for the domain.
The tool set provides extensive read-only coverage for patient data (e.g., conditions, medications, encounters) and includes useful external searches (PubMed, clinical trials). Minor gaps exist, such as lack of write operations (e.g., create or update patient records), but the surface supports most agent workflows for data retrieval and research.