soapnoteapi-mcp
OfficialREADME.md
# soapnoteapi-mcp
A [Model Context Protocol](https://modelcontextprotocol.io) (MCP) server for **[SOAPNoteAPI](https://www.soapnoteapi.com)**. It lets AI agents (Claude Desktop/Code, Cursor, Windsurf, VS Code + Copilot, etc.) turn clinical transcripts or audio recordings into structured **SOAP notes**, **ICD-10/CPT billing-code suggestions**, **patient summaries**, and **visit summaries**.
> ⚕️ All clinical content and billing codes are **AI-generated decision support** and must be reviewed by a qualified clinician/coder before use. HIPAA: this server only transits PHI to the API over TLS and never logs note content.
## Tools
| Tool | What it does | API |
|------|--------------|-----|
| `list_specialties` | List supported specialties (no key needed) | `GET /v1/specialties` |
| `generate_soap_note` | Transcript → SOAP note (+ optional billing codes, patient summary) | `POST /v1/note` |
| `get_note` | Fetch a note by `noteId` | `GET /v1/note/{id}` |
| `summarize_visits` | Consolidate visits into a longitudinal summary | `POST /v1/visit-summary` |
| `transcribe_audio_to_soap` | Local audio file → SOAP note (waits for async jobs) | `PUT /v1/note/audio` |
| `get_audio_status` | Poll an async audio job | `GET /v1/audio/status/{id}` |
## Setup
Get an API key at <https://app.soapnoteapi.com> (free tier: $10 credit, first 20 notes free).
### Claude Desktop / Cursor (`mcp.json`)
```json
{
"mcpServers": {
"soapnoteapi": {
"command": "npx",
"args": ["-y", "soapnoteapi-mcp"],
"env": { "SOAPNOTEAPI_KEY": "snapi_sk_live_xxxxxxxx" }
}
}
}
```
### Claude Code
```bash
claude mcp add soapnoteapi --env SOAPNOTEAPI_KEY=snapi_sk_live_xxxxxxxx -- npx -y soapnoteapi-mcp
```
## Environment variables
| Variable | Required | Notes |
|----------|----------|-------|
| `SOAPNOTEAPI_KEY` | yes (for all tools except `list_specialties`) | Bearer key, `snapi_sk_live_…` or `snapi_sk_test_…` |
| `SOAPNOTEAPI_BASE_URL` | no | Override API base (default `https://api.soapnoteapi.com`) |
## Develop
```bash
pnpm install
pnpm --filter soapnoteapi-mcp dev # run from source (tsx)
pnpm --filter soapnoteapi-mcp build # compile to dist/
npx @modelcontextprotocol/inspector node dist/index.js # interactive test
```
## Publish
```bash
pnpm --filter soapnoteapi-mcp build
cd packages/mcp && npm publish # publishes soapnoteapi-mcp to npm
```
## License
MIT
TDQS
A4/5.0
Scored across 6 tools
Disambiguation5/5
Each tool has a clearly distinct purpose: listing specialties, generating notes from text, transcribing audio, retrieving notes, checking status, and summarizing visits. No overlap or ambiguity.
Naming Consistency5/5
All tool names follow a consistent verb_noun pattern in snake_case (e.g., list_specialties, generate_soap_note), making them predictable and easy to understand.
Tool Count5/5
6 tools is well-scoped for a clinical note generation server. Each tool provides essential functionality without redundancy, covering the core workflow.
Completeness4/5
Covers the full lifecycle: specialty listing, note generation (text/audio), retrieval, status checking, and visit summarization. Minor gaps like lack of update/delete are acceptable given auto-expiration.
Maintenance
ActivityInactive
ResponsivenessNo issues