AojdevStudio/open-dental-mcp
This tool helps you search through OpenDental documentation using natural language questions. Instead of searching for exact keywords, you can ask questions like "How do I create an appointment?" and get relevant answers from the documentation.
OpenDental MCP Server
This repository contains an MCP (Model Context Protocol) server for querying OpenDental documentation using Qdrant vector database.
What is This?
This tool helps you search through OpenDental documentation using natural language questions. Instead of searching for exact keywords, you can ask questions like "How do I create an appointment?" and get relevant answers from the documentation.
Platform-Specific Guides
For non-technical users, we've created detailed step-by-step guides:
System Requirements
- Windows, macOS, or Linux
- Node.js 18 or higher (Download here)
- Python 3.6 or higher (Download here)
- Qdrant vector database (automatically runs with Docker or standalone)
- OpenAI API key for generating embeddings (Get one here)
Important Note on API Keys
This project requires API keys to function. For security reasons:
- Never commit real API keys to the repository
- Use the provided
.env.examplefiles as templates - Create your own
.envfiles with your actual keys - The
.gitignorefile is configured to exclude.envfiles from Git
If you need to share configuration, always use placeholder values like your_openai_api_key instead of real keys.
Installation Instructions
Step 1: Clone the Repository
Windows
git clone https://github.com/yourusername/open-dental-mcp.git
cd open-dental-mcp
macOS/Linux
git clone https://github.com/yourusername/open-dental-mcp.git
cd open-dental-mcp
Step 2: Install Qdrant
You need to have Qdrant running locally. There are several ways to install it:
Using Docker (Recommended)
docker pull qdrant/qdrant
docker run -p 6333:6333 -p 6334:6334 -v $(pwd)/qdrant_storage:/qdrant/storage qdrant/qdrant
On Windows without Docker
You can download the latest release from Qdrant GitHub releases and run it locally.
On macOS without Docker
You can install Qdrant with Homebrew:
brew install qdrant/qdrant/qdrant
qdrant
Step 3: Configure Environment Variables
You need to set up your environment variables for Qdrant and OpenAI (for embeddings).
Windows
- Create a file named
.envin themcp-openai-filesearchfolder based on.env.example - Add the following content (replace OpenAI API key with your own):
OPENAI_API_KEY=your_openai_api_key
QDRANT_HOST=localhost
QDRANT_PORT=6333
QDRANT_COLLECTION=open_dental_docs
macOS/Linux
- Create a file named
.envin themcp-openai-filesearchfolder based on.env.example - Add the following content (replace OpenAI API key with your own):
OPENAI_API_KEY=your_openai_api_key
QDRANT_HOST=localhost
QDRANT_PORT=6333
QDRANT_COLLECTION=open_dental_docs
Step 4: Install Dependencies
From the root directory:
npm run install:deps
Or manually:
Windows
cd mcp-openai-filesearch
npm install
macOS/Linux
cd mcp-openai-filesearch
npm install
Step 5: Build the Server
From the root directory:
npm run build
Or manually:
Windows
cd mcp-openai-filesearch
npm run build
macOS/Linux
cd mcp-openai-filesearch
npm run build
Step 6: Setup Qdrant Collection
Before starting the server, you need to set up the Qdrant collection:
cd mcp-openai-filesearch
npm run setup:qdrant
Client Configuration
To connect your MCP client (like Cursor) to the OpenDental MCP server, you need to create a configuration file. This tells your client how to launch and communicate with the server.
Setting Up mcp.json
- Create a file named
mcp.jsonin the.cursordirectory of your project (or where your MCP client looks for configurations) - Add the following configuration, adjusting paths to match your local installation:
Windows Configuration
{
"mcpServers": {
"OpenDental-MCP": {
"command": "node",
"args": [
"C:\\\\path\\\\to\\\\open-dental-mcp\\\\mcp-openai-filesearch\\\\dist\\\\server-qdrant.js"
],
"transport": "stdio",
"description": "Qdrant-based MCP server for OpenDental docs."
}
}
}
macOS/Linux Configuration
{
"mcpServers": {
"OpenDental-MCP": {
"command": "/usr/local/bin/node",
"args": [
"/path/to/open-dental-mcp/mcp-openai-filesearch/dist/server-qdrant.js"
],
"transport": "stdio",
"description": "Qdrant-based MCP server for OpenDental docs."
}
}
}
Notes for Client Configuration:
-
Command Path:
- For Windows, you can usually just use
"command": "node"if Node.js is in your PATH - For macOS/Linux, use the full path to your Node.js binary (find it with
which node)
- For Windows, you can usually just use
-
Server Path:
- Make sure to point to
server-qdrant.jsin thedistdirectory - Use the correct path separator for your OS (
\\\\for Windows,/for macOS/Linux) - Use absolute paths to avoid any confusion
- Make sure to point to
-
Verify Configuration:
- After creating the mcp.json file, ensure your MCP client can detect and connect to the server
- If you're using Cursor, go to Settings > MCP and check if "OpenDental-MCP" appears in the list of available servers
Running the MCP Server
From the root directory:
npm run start:qdrant # Qdrant-based server
Or manually:
Windows
cd mcp-openai-filesearch
npm run start:qdrant
macOS/Linux
cd mcp-openai-filesearch
npm run start:qdrant
The server will start running on http://localhost:3000.
Testing the Server
From the root directory:
npm run query:qdrant -- --query "How do I create an appointment in Open Dental?"
Or manually:
Windows
cd mcp-openai-filesearch
npm run test:qdrant
macOS/Linux
cd mcp-openai-filesearch
npm run test:qdrant
Uploading Documentation
If you need to upload your own documentation to the Qdrant vector database:
- Place your documentation files in a folder
- Edit the upload script to point to your documentation folder
- Run the setup script to create embeddings and upload them to Qdrant
Troubleshooting
Common Issues on Windows
- Path Errors: Make sure to use the correct path format (e.g.,
C:\\path\\to\\fileorC:/path/to/file) in your configuration - Permission Denied: Run your command prompt or PowerShell as Administrator if you encounter permission issues
- NPM Errors: Make sure your Node.js installation is up to date
- Port Already in Use: If port 3000 or 6333 is already in use, check which process is using it and terminate that process
Common Issues on macOS/Linux
- Permission Denied: You may need to use
sudofor some commands or fix file permissions withchmod +x filename.py - Python Version: Use
python3explicitly rather thanpythonif you have multiple versions installed - Port Already in Use: Check if port 3000 is already in use with
lsof -i :3000and kill the process if needed - Docker Issues: If using Docker for Qdrant, make sure Docker is running and the Qdrant container is active
API Key Issues
- Ensure your OpenAI API key is valid (it's still needed for generating embeddings)
- Make sure there are no extra spaces or characters in the
.envfile
Getting Help
If you encounter issues not covered here, please:
- Check the Qdrant documentation
- Check the OpenAI documentation for embeddings
- Create an issue in this repository
- Contact the development team through your organization's support channels
License
This project is proprietary and confidential.
Recommend MCP Servers 💡
RafaelCartenet/mcp-databricks-server
MCP server for Databricks that enables AI agents to interact with Unity Catalog metadata for data discovery, lineage analysis, and SQL execution
awslabs.bedrock-kb-retrieval-mcp-server
An MCP server for accessing and querying Amazon Bedrock Knowledge Bases, enabling natural language retrieval, data source filtering, and result reranking.
mcp-server-microsoft365-filesearch
An MCP server providing advanced file search capabilities within Microsoft 365 (SharePoint & OneDrive)
@remote-mcp/client
A type-safe local proxy MCP server that enables remote access and centralized management of model contexts by connecting to a remote MCP implementation.
metmuseum-mcp
Met Museum MCP integration to discover the art collection at The Metropolitan Museum of Art in New York
markitdown-mcp
A lightweight Model Context Protocol (MCP) server from Microsoft's MarkItDown project, providing STDIO, Streamable HTTP, and SSE transports to convert various URIs (http:, https:, file:, data:) into Markdown.