Content
# @dental-ai/mcp-server
MCP server that gives any AI agent full dental office capabilities — patient management, appointment scheduling, insurance verification, and SMS communications.
Works with [Open Dental](https://www.opendental.com/) (the most popular open-source dental PMS) and [Twilio](https://www.twilio.com/) for SMS. Ships with a built-in demo mode that works without any credentials.
## Tools (14 total)
### Patients
| Tool | Description |
|------|-------------|
| `find_patient` | Search by name, phone, or date of birth |
| `create_patient` | Register a new patient (with duplicate detection) |
| `get_patient` | Get full patient record by ID |
### Appointments
| Tool | Description |
|------|-------------|
| `get_appointment_types` | List available types with durations, CDT codes, and price ranges |
| `find_available_slots` | Search open slots by date range, provider, or appointment type |
| `book_appointment` | Book an appointment (verifies patient exists first) |
| `cancel_appointment` | Cancel with optional reason |
| `get_patient_appointments` | Get all appointments for a patient |
### Office
| Tool | Description |
|------|-------------|
| `get_office_info` | Practice name, address, phone, hours |
| `get_providers` | List dentists and hygienists with specialties |
| `check_insurance` | Check if a carrier is accepted, or list all plans |
| `get_office_hours` | Full week or specific day schedule |
### Communications
| Tool | Description |
|------|-------------|
| `send_sms` | Send any SMS via Twilio |
| `send_appointment_confirmation` | Templated confirmation with practice branding |
| `send_appointment_reminder` | Templated 24-hour reminder |
## Quick Start
### Install
```bash
npm install -g @dental-ai/mcp-server
```
### Demo Mode (no credentials needed)
Just add the server to your Claude config — it works immediately with realistic mock data:
**Claude Code** (`~/.claude/settings.json`):
```json
{
"mcpServers": {
"dental-office": {
"command": "dental-mcp"
}
}
}
```
**Claude Desktop** (`claude_desktop_config.json`):
```json
{
"mcpServers": {
"dental-office": {
"command": "npx",
"args": ["-y", "@dental-ai/mcp-server"]
}
}
}
```
Demo mode includes 5 sample patients, 4 providers, 8 insurance plans, realistic scheduling with conflict detection, and SMS previews.
### Production Mode (Open Dental + Twilio)
```json
{
"mcpServers": {
"dental-office": {
"command": "dental-mcp",
"env": {
"DENTAL_PRACTICE_NAME": "Bright Smile Dental",
"DENTAL_PHONE": "(512) 555-0200",
"DENTAL_ADDRESS": "123 Main Street",
"DENTAL_CITY": "Austin",
"DENTAL_STATE": "TX",
"DENTAL_ZIP": "78701",
"DENTAL_TIMEZONE": "America/Chicago",
"OPEN_DENTAL_DEV_KEY": "your-developer-key",
"OPEN_DENTAL_CUST_KEY": "your-customer-key",
"TWILIO_ACCOUNT_SID": "ACxxxxxxxx",
"TWILIO_AUTH_TOKEN": "your-auth-token",
"TWILIO_PHONE_NUMBER": "+15125550200"
}
}
}
}
```
## Environment Variables
| Variable | Required | Description |
|----------|----------|-------------|
| `DENTAL_PRACTICE_NAME` | No | Practice name (default: "Bright Smile Dental") |
| `DENTAL_PHONE` | No | Office phone number |
| `DENTAL_ADDRESS` | No | Street address |
| `DENTAL_CITY` | No | City |
| `DENTAL_STATE` | No | State code |
| `DENTAL_ZIP` | No | ZIP code |
| `DENTAL_TIMEZONE` | No | IANA timezone (default: "America/Chicago") |
| `OPEN_DENTAL_API_BASE` | No | API URL (default: Open Dental production) |
| `OPEN_DENTAL_DEV_KEY` | For production | Developer key from Open Dental |
| `OPEN_DENTAL_CUST_KEY` | For production | Customer key from Open Dental |
| `TWILIO_ACCOUNT_SID` | For SMS | Twilio Account SID |
| `TWILIO_AUTH_TOKEN` | For SMS | Twilio Auth Token |
| `TWILIO_PHONE_NUMBER` | For SMS | Twilio phone number (E.164 format) |
If Open Dental keys are not set, the server uses a mock adapter with demo data. If Twilio keys are not set, SMS tools show what would be sent without actually sending.
## Architecture
```
┌─────────────────────────────────────────────┐
│ dental-mcp server │
│ │
│ ┌─────────┐ ┌──────────┐ ┌────────────┐ │
│ │ Patient │ │ Appoint- │ │ Office │ │
│ │ Tools │ │ ments │ │ Tools │ │
│ └────┬─────┘ └────┬─────┘ └─────┬──────┘ │
│ │ │ │ │
│ ┌────┴────────────┴─────────────┘ │
│ │ PMSAdapter interface │
│ ├─────────────────┬────────────────┐ │
│ │ MockAdapter │ OpenDentalAdapter│ │
│ │ (demo data) │ (REST API) │ │
│ └─────────────────┴────────────────┘ │
│ │
│ ┌──────────────┐ │
│ │ Comms Tools │ → Twilio SMS API │
│ │ (send_sms, │ (or demo preview) │
│ │ confirm, │ │
│ │ remind) │ │
│ └──────────────┘ │
└─────────────────────────────────────────────┘
```
## Appointment Types (15)
Built-in CDT-coded appointment types with durations and price ranges:
| Type | CDT Code | Duration | Category |
|------|----------|----------|----------|
| Cleaning & Exam | D0120+D1110 | 60 min | Preventive |
| New Patient Exam | D0150+D0210 | 90 min | Preventive |
| Emergency / Toothache | D0140 | 30 min | Emergency |
| Filling | D2391 | 45 min | Restorative |
| Crown Prep | D2740 | 90 min | Restorative |
| Crown Seat | D2740-seat | 30 min | Restorative |
| Root Canal | D3310 | 90 min | Restorative |
| Extraction | D7140 | 45 min | Surgical |
| Wisdom Teeth | D7230 | 60 min | Surgical |
| Teeth Whitening | D9972 | 60 min | Cosmetic |
| Veneer Consultation | D0160 | 30 min | Cosmetic |
| Implant Consultation | D0160-impl | 45 min | Surgical |
| Ortho Consultation | D8660 | 45 min | Orthodontic |
| Deep Cleaning (SRP) | D4341 | 90 min | Preventive |
| Night Guard | D9944 | 30 min | Preventive |
## Use Cases
- **AI Receptionist**: Voice AI agent (Vapi, Retell, Pipecat) that books appointments, answers insurance questions, and sends confirmations
- **Chatbot Widget**: Website chat that handles scheduling without staff intervention
- **Internal Assistant**: Claude helping front desk staff find patient info, check schedules, send reminders
- **Batch Operations**: Automated reminder campaigns, insurance verification, appointment follow-ups
## Getting Open Dental API Access
1. Email `vendor.relations@opendental.com` requesting a developer key
2. Mention you're building an AI integration for dental offices
3. They'll provide developer credentials + sandbox access (free)
4. Customer keys come from individual practices that install Open Dental
## Related MCP Servers
- **[@phone-mcp/server](https://github.com/petesumners/phone-mcp)** — 8 telephony tools (calls, SMS, caller ID, recordings). Pairs naturally with dental-mcp for a full AI receptionist stack.
- **[@lucid-dream/mcp-server](https://github.com/petesumners/lucid-mcp)** — Synthetic dreaming for AI agents. Creative code generation from accumulated context.
## License
MIT