open-dental-mcp

open-dental-mcp

Enables interaction with Open Dental practice management software, allowing reading of patients, appointments, providers, procedures, and recalls, as well as writing communications back to patient charts via MCP clients.

Category
Visit Server

README

open-dental-mcp

Model Context Protocol (MCP) server for Open Dental — dental practice management software.

Talk to your Open Dental data from Claude, Cursor, or any MCP client. Read patients, appointments, providers, procedures, recalls. Write communications (phone calls, messages) back to patient charts.

Built against the Open Dental REST API. No existing MCP for Open Dental — this is the first.


What you can do with it

You:   "Pull patient 4523 and show me their last 5 appointments + outstanding recalls."
Claude: *calls get_patient, then find_appointments, then find_recalls*

You:   "Find every recall due this month and draft a friendly reminder for each."
Claude: *calls find_recalls with due_date window, drafts the messages*

You:   "Just got off a call with the Smith family about rescheduling — log it."
Claude: *calls log_communication with the right comm_type + comm_mode*

You:   "What providers are working at clinic 2 tomorrow?"
Claude: *calls list_providers + find_appointments, filters*

Install

pip install -e .

Configure

You need two API keys from Open Dental's Developer Portal:

  1. Developer API Key — applies to your integration (you register via vendor.relations@opendental.com)
  2. Customer API Key — generated per-customer in the Developer Portal
export OPENDENTAL_DEVELOPER_KEY="..."
export OPENDENTAL_CUSTOMER_KEY="..."

Who uses this server?

  1. Approved Open Dental API Partners building tools for dental practices. Your developer key + customer keys work directly.
  2. Dental practices / DSOs doing custom integration work. Email vendor.relations@opendental.com to get set up.

Use with Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "open_dental_mcp": {
      "command": "open_dental_mcp",
      "env": {
        "OPENDENTAL_DEVELOPER_KEY": "your-developer-key",
        "OPENDENTAL_CUSTOMER_KEY": "your-customer-key"
      }
    }
  }
}

Tools

Tool Type What it does
health_check Diagnostic Verifies credentials
get_patient Read Fetch a patient by PatNum
find_patients Read Search by name / phone / email / DOB
update_patient Write Patch patient fields
get_appointment Read Fetch an appointment by AptNum
find_appointments Read List appointments (by date / patient / provider)
create_appointment Write Book a new appointment
list_providers Read All providers in the practice
list_clinics Read All clinics (offices) accessible
list_operatories Read Treatment rooms
list_appointment_types Read Cleaning / filling / exam definitions
find_procedurelogs Read Treatments performed
log_communication Write Log a phone call / email / message
find_recalls Read Hygiene follow-up reminders

Common patterns

Pre-visit brief

User:  I'm seeing patient 4523 at 2pm. Brief me.
Agent: get_patient(patnum=4523)
       find_appointments(patnum=4523, limit=5)
       find_procedurelogs(patnum=4523, limit=10)
       find_recalls(patnum=4523)
       → Summary: patient info, last visits, what's been done, what's due

Recall campaign

User:  Build this week's recall list and draft rebooking messages.
Agent: find_recalls(due_date_start="2026-06-26", due_date_end="2026-07-03")
       → for each: pull patient, draft a friendly message

Post-call documentation

User:  Just took a call from the Smiths about rescheduling next week's cleaning.
Agent: find_patients(lname="Smith", fname="...", phone="...")
       log_communication(
         patnum=<found>,
         comm_datetime="2026-06-26T15:30:00",
         comm_type=1,           # ApptRelated
         comm_mode=2,           # Phone
         sent_or_received=1,    # Received
         note="Patient called to reschedule cleaning. Will call back with new date."
       )

API coverage

Open Dental endpoint MCP tool
GET /patients/{id} get_patient
GET /patients find_patients
PUT /patients/{id} update_patient
GET /appointments/{id} get_appointment
GET /appointments find_appointments
POST /appointments create_appointment
GET /providers list_providers
GET /clinics list_clinics
GET /operatories list_operatories
GET /appointmenttypes list_appointment_types
GET /procedurelogs find_procedurelogs
POST /commlogs log_communication
GET /recalls find_recalls

Full Open Dental API: https://www.opendental.com/site/apispecification.html

Development

pip install -e ".[dev]"
pytest
open_dental_mcp

Need a custom MCP for your SaaS?

I build production-grade MCP servers for vertical SaaS — insurance, dental, veterinary, legal, property mgmt, home services. Typical engagement: 2-4 weeks, $25K-$120K. Source-owned, MIT-licensed, no vendor lock-in.

See sanjibani/mcp-services or email sanjibani@users.noreply.github.com.


Ships in the sanjibani vertical-MCP portfolio — see also hawksoft-mcp, open-dental-mcp, ezyvet-mcp, jobber-mcp, paid-skills, mcp-vertical-template.




MIT — see LICENSE.

Acknowledgements

See also

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured