Skip to main content
Glama
yashika306

Healthcare MCP Server

by yashika306
README.md
# Healthcare MCP Server

A custom MCP (Model Context Protocol) server that lets an AI agent (Claude
Desktop, or any MCP client) query a small patient-records SQLite database.

## Project structure

```
healthcare-mcp-server/
├── server.py           # MCP server - registers all tools, runs Streamable HTTP on port 8000
├── db.py                # SQLite connection + CREATE TABLE statements
├── seed_data.py          # Populates patients.db with sample data
├── requirements.txt
├── tools/
│   ├── schema.py         # get_schema tool
│   ├── query.py           # query_database tool (SELECT-only, guarded)
│   ├── risk.py             # get_patient_risk_summary tool
│   └── readmission.py       # get_readmission_risk_summary tool
└── patients.db            # created after running db.py + seed_data.py
```

## Tools exposed

| Tool | What it does |
|---|---|
| `get_schema` | Returns all table/column names so the agent can write correct SQL before it queries anything. |
| `query_database` | Runs an agent-generated SQL `SELECT` against the DB. Anything that isn't a `SELECT` is rejected. |
| `get_patient_risk_summary` | Joins visits + labs + medications for one patient and produces a risk score/level with reasons. |
| `get_readmission_risk_summary` | Looks at visit frequency/spacing and diagnosis to estimate readmission risk. |

## Setup

```bash
cd healthcare-mcp-server
pip install -r requirements.txt

# 1. Create the tables
python db.py

# 2. Populate sample data (safe to re-run)
python seed_data.py

# 3. Start the MCP server (Streamable HTTP on port 8000)
python server.py
```

The server will be reachable at `http://localhost:8000/mcp`.

## Connecting it to Claude Desktop

1. Open Claude Desktop → **Settings → Developer → Edit Config**.
2. Add an entry under `mcpServers` pointing at your running server:

```json
{
  "mcpServers": {
    "my-healthcare-server": {
      "url": "http://localhost:8000/mcp"
    }
  }
}
```

3. Save, fully quit and reopen Claude Desktop.
4. Click the **+** icon → your server should now be listed under connectors.
   Enable it, and Claude will be able to call the four tools above.

## Example prompts to try

- "Can you get me any 5 patient details?"
- "What is the risk profile of the patient James Walker?"
- "How many times has James Walker visited the hospital, and which doctors has he consulted?"

The last question needs a JOIN across `visits` and can't be answered without
the agent first calling `get_schema` to understand the table structure -
that's the point of exposing schema as its own tool.

## Safety note

`query_database` only allows `SELECT` statements and blocks a short list of
destructive keywords (`insert`, `update`, `delete`, `drop`, `alter`,
`attach`). This is a minimal example guardrail, not a production-grade
solution - a real deployment would need parameterized queries, per-table
allow-lists, row limits, timeouts, and audit logging on top of this.

Maintenance

ActivitySlowing
ResponsivenessNo issues