Dental Clinic Appointments MCP Server
A Model Context Protocol (MCP) server for managing dental clinic appointments with full CRUD operations. Stores appointments in a local JSON file with patient information, appointment types, and status tracking.
Features
- Create dental appointments with patient information and appointment type
- Read appointments (list all or get specific appointment)
- Update existing appointments and status
- Delete appointments
- Filter appointments by date range, patient name, appointment type, dentist, or status
- Track appointment status (scheduled, confirmed, completed, cancelled, no_show)
- Support for multiple appointment types (checkup, cleaning, filling, root canal, etc.)
- Local JSON file storage (no external dependencies)
Installation
- Install dependencies:
npm install
- Make the script executable (optional):
chmod +x index.js
Configuration
Add this server to your MCP settings file. The location depends on your client:
Claude Desktop (macOS)
Edit: ~/Library/Application Support/Claude/claude_desktop_config.json
Claude Desktop (Windows)
Edit: %APPDATA%\Claude\claude_desktop_config.json
Configuration Example
{
"mcpServers": {
"dental-appointments": {
"command": "node",
"args": ["/absolute/path/to/appointments-mcp/index.js"]
}
}
}
Important: Replace /absolute/path/to/appointments-mcp/ with the actual absolute path to this directory.
Available Tools
1. create_appointment
Create a new dental appointment.
Required Parameters:
patientName: Full name of the patientpatientPhone: Patient's phone numberdate: Date in YYYY-MM-DD formattime: Time in HH:MM format (24-hour)appointmentType: Type of appointment (see types below)
Optional Parameters:
patientEmail: Patient's email addressduration: Duration in minutes (default: 30)dentist: Name of the assigned dentistnotes: Additional notes about the appointmentstatus: scheduled, confirmed, completed, cancelled, no_show (default: scheduled)isNewPatient: Boolean indicating if this is a new patient
Appointment Types:
checkup- Regular dental checkupcleaning- Teeth cleaningfilling- Cavity fillingroot_canal- Root canal treatmentextraction- Tooth extractioncrown- Crown placementwhitening- Teeth whiteningorthodontics- Braces/orthodontic treatmentemergency- Emergency dental careconsultation- Initial consultationother- Other procedures
Example:
{
"patientName": "Sarah Johnson",
"patientPhone": "+1-555-0123",
"patientEmail": "sarah.j@email.com",
"date": "2026-01-27",
"time": "14:30",
"duration": 60,
"appointmentType": "root_canal",
"dentist": "Dr. Smith",
"notes": "Patient reported tooth sensitivity",
"isNewPatient": false
}
2. list_appointments
List all appointments with optional filtering.
Parameters (all optional):
startDate: Filter appointments from this date (YYYY-MM-DD)endDate: Filter appointments until this date (YYYY-MM-DD)patientName: Filter by patient name (partial match)appointmentType: Filter by specific appointment typestatus: Filter by statusdentist: Filter by dentist name
Example:
{
"startDate": "2026-01-25",
"endDate": "2026-01-31",
"status": "scheduled"
}
3. get_appointment
Get details of a specific appointment.
Parameters:
id: The appointment ID
Example:
{
"id": "apt_1234567890_abc123def"
}
4. update_appointment
Update an existing appointment.
Parameters:
id(required): The appointment ID to update- All other fields from create_appointment (optional)
Example - Confirming an appointment:
{
"id": "apt_1234567890_abc123def",
"status": "confirmed"
}
Example - Rescheduling:
{
"id": "apt_1234567890_abc123def",
"date": "2026-01-28",
"time": "10:00"
}
5. delete_appointment
Delete an appointment.
Parameters:
id: The appointment ID to delete
Example:
{
"id": "apt_1234567890_abc123def"
}
Data Storage
Appointments are stored in appointments.json in the same directory as the server. The file is automatically created on first use.
Data Structure
[
{
"id": "apt_1737740400000_xyz789abc",
"patientName": "Sarah Johnson",
"patientPhone": "+1-555-0123",
"patientEmail": "sarah.j@email.com",
"date": "2026-01-27",
"time": "14:30",
"duration": 60,
"appointmentType": "root_canal",
"dentist": "Dr. Smith",
"notes": "Patient reported tooth sensitivity",
"status": "confirmed",
"isNewPatient": false,
"createdAt": "2026-01-24T17:00:00.000Z",
"updatedAt": "2026-01-24T18:00:00.000Z"
}
]
Usage Examples
Once configured, you can interact with the appointments through your MCP client:
Creating appointments:
- "Create an appointment for John Doe tomorrow at 2pm for a dental cleaning. Phone is 555-0123."
- "Schedule a root canal for Sarah Johnson on January 27th at 2:30pm with Dr. Smith"
- "Book an emergency appointment for today at 4pm for Michael Brown, phone 555-0456"
Listing and searching:
- "Show me all appointments for next week"
- "List all scheduled appointments for tomorrow"
- "Find appointments for patient Sarah Johnson"
- "Show me all root canal appointments"
- "List Dr. Smith's appointments for today"
Updating appointments:
- "Confirm the appointment for Sarah Johnson tomorrow"
- "Reschedule John's appointment to 3pm instead of 2pm"
- "Mark appointment apt_xxx as completed"
- "Change the status of the 2pm appointment to cancelled"
Managing appointments:
- "Delete the cancelled appointment from yesterday"
- "Get details for appointment apt_1234567890"
Common Workflows
Daily Schedule
"Show me all scheduled and confirmed appointments for today"
New Patient Booking
{
"patientName": "New Patient Name",
"patientPhone": "555-0123",
"date": "2026-01-28",
"time": "09:00",
"appointmentType": "consultation",
"isNewPatient": true,
"notes": "First visit - full examination needed"
}
Appointment Confirmation Workflow
- List today's appointments:
status: "scheduled" - Contact patients to confirm
- Update each:
status: "confirmed"
End of Day Review
- List today's appointments
- Mark completed:
status: "completed" - Mark no-shows:
status: "no_show"
Troubleshooting
Server not appearing in Claude:
- Check that the path in your config file is absolute, not relative
- Restart Claude Desktop after updating the config
- Check Claude Desktop logs for errors
Appointments not saving:
- Ensure the directory has write permissions
- Check for errors in the Claude Desktop logs
Validation errors:
- Dates must be in YYYY-MM-DD format (e.g., "2026-01-25")
- Times must be in HH:MM 24-hour format (e.g., "14:30")
- Appointment type must be one of the valid types listed above
- Status must be one of: scheduled, confirmed, completed, cancelled, no_show
License
ISC