Bridges Claude to Electronic Medical Records for home health nursing documentation, currently running in mock mode while awaiting PointCare EMR API integration. Exposes three tools: search_patient finds patients by name, ID, or phone; create_visit_note documents visits with vitals and observations; get_patient_history retrieves past visit records. Ships with five fictional test patients and in-memory storage so you can prototype clinical charting workflows in Claude Desktop before connecting to production systems. Born from an existing n8n workflow that sends nurse visit summaries to email, this closes the loop by writing structured notes directly into the EMR instead of requiring manual data entry.
MCP server for clinical charting with Claude (codename: Ratchet) - Enables Claude to document patient visits directly into Electronic Medical Records, reducing administrative burden for home health nurses.
Note: Currently runs in Mock Mode for development/testing. Production EMR integration coming soon.
| Component | Status |
|---|---|
| MCP Server | ✅ Working (Mock Mode) |
| Unit Tests | ✅ 20/20 Passing |
| Claude Desktop | ✅ Ready for Testing |
| PointCare API | ⏳ Pending API Documentation |
Current Mode: Mock Mode - Uses realistic test data for development and testing.
npx mcp-ratchet-clinical-charting
git clone https://github.com/m2ai-mcp-servers/mcp-ratchet-clinical-charting.git
cd mcp-ratchet-clinical-charting
npm install
npm run build
npm run dev # Development mode
npm test # Run tests
Ratchet runs in mock mode by default when POINTCARE_API_URL is not configured. Mock mode:
| Tool | Description | Mock Mode |
|---|---|---|
search_patient | Find patient by name, ID, or phone | ✅ Working |
create_visit_note | Document a patient visit with vitals | ✅ Working |
get_patient_history | Retrieve patient visit history | ✅ Working |
"Search for patient Eleanor Thompson"
→ Returns patient PT-10001 with demographics and status
"Create a visit note for PT-10001 with blood pressure 120/80"
→ Creates and stores visit note with vitals
"Get visit history for PT-10001"
→ Returns list of previous visits
Add to your Claude Desktop config file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"ratchet": {
"command": "npx",
"args": ["-y", "mcp-ratchet-clinical-charting"]
}
}
}
For production mode with EMR integration:
{
"mcpServers": {
"ratchet": {
"command": "npx",
"args": ["-y", "mcp-ratchet-clinical-charting"],
"env": {
"POINTCARE_API_URL": "https://api.pointcare.com",
"POINTCARE_API_KEY": "your-api-key"
}
}
}
}
Restart Claude Desktop to load the new MCP server.
In Claude Desktop, you should see:
search_patient tool availablecreate_visit_note tool availableget_patient_history tool availableTry: "Search for patient Eleanor"
| ID | Name | Status | Primary Diagnosis |
|---|---|---|---|
| PT-10001 | Eleanor Thompson | Active | Type 2 Diabetes, CHF |
| PT-10002 | Robert Martinez | Active | COPD, Post-surgical |
| PT-10003 | Margaret Wilson | Active | Parkinson's Disease |
| PT-10004 | James Thompson | Active | Post-stroke rehab |
| PT-10005 | Dorothy Anderson | Discharged | Hip replacement |
Ratchet evolved from the M2AI NurseCall n8n workflow, built to help home health nurses with visit documentation:
Current Flow (M2AI NurseCall):
┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐
│ Twilio │───>│ n8n │───>│ VAPI │───>│ Email │
│ SMS │ │ Workflow│ │ Call │ │ Summary │
└─────────┘ └─────────┘ └─────────┘ └─────────┘
The Problem: Visit notes go to email but still need manual entry into PointCare EMR.
Ratchet's Solution:
Future Flow (with Ratchet):
┌─────────┐ ┌─────────┐ ┌──────────┐ ┌───────────┐
│ Twilio │───>│ n8n │───>│ Ratchet │───>│ PointCare │
│ SMS │ │ Workflow│ │ MCP │ │ EMR │
└─────────┘ └─────────┘ └──────────┘ └───────────┘
| Variable | Required | Description |
|---|---|---|
POINTCARE_API_URL | No* | PointCare API base URL |
POINTCARE_API_KEY | No* | API key or token |
RATCHET_MOCK_MODE | No | Force mock mode (true/false) |
LOG_LEVEL | No | Logging level (debug/info/warn/error) |
*Required for production use. Mock mode activates when not set.
ratchet/
├── src/
│ ├── index.ts # MCP server entry point
│ ├── config.ts # Configuration management
│ ├── tools/ # Tool implementations
│ │ ├── search-patient.ts
│ │ ├── create-visit-note.ts
│ │ └── get-patient-history.ts
│ ├── services/ # Business logic
│ │ ├── patient-service.ts
│ │ └── mock-data.ts
│ ├── types/ # TypeScript types
│ └── utils/ # Logger, errors
├── tests/
│ └── patient-service.test.ts
├── dist/ # Compiled output
├── prds/
│ └── RATCHET-PRD.yaml
├── docs/
│ └── API_REQUIREMENTS.md
├── package.json
├── tsconfig.json
└── jest.config.js
# Run in watch mode
npm run dev
# Run tests
npm test
# Run tests with coverage
npm test -- --coverage
# Lint
npm run lint
docs/API_REQUIREMENTS.mdMIT
Built with GRIMLOCK - Autonomous MCP Server Factory
POINTCARE_API_URLEMR API base URL (optional - runs in mock mode if not set)
POINTCARE_API_KEYsecretEMR API key (required for production mode)
csoai-org/pdf-document-mcp
xt765/mcp-document-converter
io.github.xjtlumedia/markdown-formatter
io.github.ai-aviate/better-notion
suekou/mcp-notion-server
meterlong/mcp-doc