practice-fusion-mcp
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
An open-source, **FHIR-first, read-only** Model Context Protocol server for **Practice Fusion**. Connect Claude (Desktop / Code), Cursor, or any MCP client to a Practice Fusion EHR to search patients and providers and review appointments, conditions, medications, labs, vitals, allergies, immunizations, encounters, documents, procedures, diagnostic reports, care plans, and goals — running on Practice Fusion's **free Open FHIR account**.
Read-only by design. Audit-logged. No write access, no scheduling, no patient creation.
Contents
- Architecture
- Tools
- Prompts & resources
- Example
- Demo mode
- Setup
- Environment variables
- MCP clients
- Troubleshooting
- Security & HIPAA
- Known limits
- How it differs from the alternative
- Development
Architecture
Every tool call flows through the audit logger; the FHIR client only ever holds a short-lived token minted from a signed JWT assertion (SMART backend-services), and long free-text parameters are redacted before anything is logged.
Tools
All tools are namespaced with a practicefusion_ prefix (so they don't collide when loaded alongside other MCP servers), carry a readOnlyHint annotation, and return a typed outputSchema / structuredContent. List tools accept an optional limit (default 50, max 200) and report count and has_more.
**Patients & providers**
| Tool | What it does |
| ------------------------------------- | ------------------------------------------------------- |
| practicefusion_search_patients | Find patients by name / birthdate / gender / identifier |
| practicefusion_get_patient | One patient's demographics by id |
| practicefusion_search_practitioners | Find providers by name / identifier |
**Clinical**
| Tool | What it does |
| ---------------------------------- | ------------------------------------ |
| practicefusion_get_conditions | A patient's problems / diagnoses |
| practicefusion_get_medications | A patient's medication requests |
| practicefusion_get_lab_results | A patient's laboratory observations |
| practicefusion_get_vitals | A patient's vital-sign observations |
| practicefusion_get_allergies | A patient's allergies & intolerances |
| practicefusion_get_immunizations | A patient's immunizations |
**Records**
| Tool | What it does |
| --------------------------------- | ------------------------------------------------------ |
| practicefusion_get_appointments | Appointments by patient / status / date |
| practicefusion_get_encounters | A patient's clinical encounters (visits) |
| practicefusion_get_documents | A patient's document references (note metadata) |
| practicefusion_get_coverage | A patient's insurance Coverage (status, payer, period) |
**Summary**
| Tool | What it does |
| ------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| practicefusion_get_everything | Pre-visit summary for a single patient — per-type counts plus a bounded sample of raw resources (FHIR $everything with a per-type-search fallback) |
**Procedures & care planning**
| Tool | What it does |
| --------------------------------------- | ---------------------------------------------- |
| practicefusion_get_procedures | A patient's procedures |
| practicefusion_get_diagnostic_reports | A patient's diagnostic (lab / imaging) reports |
| practicefusion_get_care_plans | A patient's care plans |
| practicefusion_get_goals | A patient's care goals |
Prompts & resources
Beyond tools, the server exposes the other two MCP primitives.
**Prompts** — ready-made templates a client can surface:
| Prompt | Args | What it does |
| ------------------- | ----------- | -------------------------------------------------------------------------------------------------------- |
| pre_visit_summary | patientId | Guides the assistant to assemble a one-minute pre-visit summary from the read tools |
| medication_review | patientId | Reviews a patient's medications against their problems and allergies (decision support, not prescribing) |