Doctor Appointment MCP Server
Doctor Appointment MCP Server
Un servidor Model Context Protocol (MCP) basado en Python para gestionar citas médicas a través de una API REST externa de citas.
El servidor expone operaciones de gestión de citas como herramientas MCP para que un agente o cliente de IA compatible con MCP pueda crear, buscar, recuperar, cancelar y reprogramar citas.
Qué hace
El servidor proporciona cinco herramientas MCP:
Herramienta | Descripción |
| Crea una nueva cita médica. |
| Busca citas por nombre del paciente, nombre del médico y/o fecha de la cita. |
| Recupera los detalles y el estado de la cita por ID de cita. |
| Cancela una cita cambiando su estado a |
| Cambia la fecha y la hora de una cita existente. |
El servidor también incluye:
Endpoint MCP Streamable HTTP en
/mcpEndpoints de salud en
/y/healthAutenticación opcional mediante cabeceras HTTP personalizadas
Un backend de API REST externo configurado mediante
APPOINTMENTS_APIPeticiones HTTP asíncronas con
httpx
Related MCP server: MCP Appointment Booking Server
Arquitectura
AI Agent / MCP Client
|
| Model Context Protocol
v
/mcp endpoint
|
v
Uvicorn
|
v
Starlette
|
v
FastMCP
|
+------+------+------+------+------+
| | | | |
v v v v v
Create Find Check Cancel Reschedule
| | | | |
+------+------+------+------+------+
|
v
HTTPX Client
|
| REST API
v
Appointment Backend
(MockAPI by default)Estructura del proyecto
doctor-appointment-mcp/
├── server.py
├── requirements.txt
├── start.sh
├── run.sh
├── README.md
├── .gitignore
└── .gitattributesRequisitos
Se recomienda Python 3.11 o superior
pipUn endpoint de API REST de citas
Las dependencias de Python se definen en requirements.txt:
fastmcp>=3.0
uvicorn[standard]>=0.30
httpx>=0.27Configuración local
1. Clonar el repositorio
git clone https://github.com/josh747jr/doctor-appointment-mcp.git
cd doctor-appointment-mcp2. Crear un entorno virtual
Windows PowerShell:
python -m venv .venv
.\.venv\Scripts\Activate.ps1Linux/macOS/WSL:
python3 -m venv .venv
source .venv/bin/activate3. Instalar las dependencias
pip install -r requirements.txt4. Configurar la API de citas
Establezca APPOINTMENTS_API en el endpoint REST que almacena los registros de citas.
Windows PowerShell:
$env:APPOINTMENTS_API="https://YOUR-API-ENDPOINT/appointments"Linux/macOS/WSL:
export APPOINTMENTS_API="https://YOUR-API-ENDPOINT/appointments"Si APPOINTMENTS_API no está definida, el server.py actual utiliza su endpoint MockAPI configurado.
No confirme claves de API, credenciales u otros secretos en el repositorio.
Ejecutar el servidor localmente
Inicie Uvicorn:
python -m uvicorn server:app --host 127.0.0.1 --port 8000El endpoint MCP será:
http://127.0.0.1:8000/mcpEl endpoint de salud será:
http://127.0.0.1:8000/healthUna comprobación de salud correcta devuelve:
okHerramientas MCP
1. create_appointment
Crea una nueva cita médica.
Entradas:
patient_namedoctor_nameappointment_dateappointment_timereason— opcional
Ejemplo de argumentos de la herramienta:
{
"patient_name": "John Doe",
"doctor_name": "Dr. Mike",
"appointment_date": "2026-09-18",
"appointment_time": "2:00 PM",
"reason": "Annual physical"
}Las nuevas citas se almacenan con un estado de scheduled.
Ejemplo de solicitud de usuario:
Schedule an appointment for John Doe with Dr. Mike on September 18, 2026
at 2:00 PM for an annual physical.2. find_appointments
Busca una o más citas existentes cuando no se conoce el ID de la cita.
Entradas de búsqueda:
patient_name— opcionaldoctor_name— opcionalappointment_date— opcionalinclude_cancelled— booleano opcional, por defectofalse
Debe proporcionarse al menos uno de los siguientes: patient_name, doctor_name o appointment_date.
Buscar citas de un paciente:
{
"patient_name": "John Doe"
}Buscar citas de un paciente y un médico:
{
"patient_name": "John Doe",
"doctor_name": "Dr. Mike"
}Buscar citas en una fecha concreta:
{
"appointment_date": "2026-09-18"
}La herramienta envía los campos de búsqueda proporcionados como parámetros de consulta a la API REST de citas y devuelve los registros de citas coincidentes.
Un resultado correcto incluye:
{
"success": true,
"message": "Found 1 matching appointment(s).",
"count": 1,
"appointments": [
{
"id": "12",
"patientName": "John Doe",
"doctorName": "Dr. Mike",
"appointmentDate": "2026-09-18",
"appointmentTime": "2:00 PM",
"reason": "Annual physical",
"status": "scheduled"
}
]
}Si no hay registros coincidentes, la herramienta devuelve una respuesta correcta con count establecido en 0 y un array appointments vacío.
Ejemplos de solicitudes de usuario:
Find my appointment with Dr. Mike.What appointments does John Doe have?Find John Doe's appointment on September 18, 2026.3. check_appointment_status
Recupera una cita por su ID.
Entrada:
appointment_id
Ejemplo:
{
"appointment_id": "12"
}Una respuesta correcta incluye el paciente, el médico, la fecha de la cita, la hora de la cita, el motivo y el estado.
Ejemplo de solicitud de usuario:
What is the status of appointment 12?4. cancel_appointment
Cancela una cita existente.
Entrada:
appointment_id
Ejemplo:
{
"appointment_id": "12"
}La cancelación no elimina el registro de la cita. El servidor cambia su estado a:
cancelledConservar el registro preserva el historial de citas.
Ejemplo de solicitud de usuario:
Cancel appointment 12.5. reschedule_appointment
Cambia la fecha y la hora de una cita existente.
Entradas:
appointment_idnew_appointment_datenew_appointment_time
Ejemplo:
{
"appointment_id": "12",
"new_appointment_date": "2026-09-21",
"new_appointment_time": "10:00 AM"
}Las citas canceladas no pueden reprogramarse con la implementación actual.
Ejemplo de solicitud de usuario:
Move appointment 12 to September 21, 2026 at 10:00 AM.Modelo de datos de citas
Se espera que el backend REST almacene registros similares a:
{
"id": "12",
"patientName": "John Doe",
"doctorName": "Dr. Mike",
"appointmentDate": "2026-09-18",
"appointmentTime": "2:00 PM",
"reason": "Annual physical",
"status": "scheduled"
}El servidor utiliza operaciones REST equivalentes a:
POST /appointments
GET /appointments
GET /appointments/{id}
PUT /appointments/{id}find_appointments utiliza GET /appointments con parámetros de consulta como:
patientName
doctorName
appointmentDateEjemplo de flujo de trabajo de agente
Un usuario puede preguntar primero:
Find my appointment with Dr. Mike.El cliente MCP puede invocar:
find_appointments(patient_name="John Doe", doctor_name="Dr. Mike")Después de encontrar el registro coincidente y el ID de la cita, el usuario puede decir:
Move that appointment to September 21 at 10 AM.El cliente MCP puede entonces invocar:
reschedule_appointment(
appointment_id="12",
new_appointment_date="2026-09-21",
new_appointment_time="10:00 AM"
)Esto permite que un agente de IA localice primero una cita en lugar de exigir que el usuario conozca el ID de la cita.
Autenticación opcional mediante cabecera MCP
El servidor admite autenticación opcional mediante cabecera personalizada a través de la variable de entorno MCP_REQUEST_HEADERS.
Si la variable no está configurada, la autenticación mediante cabecera personalizada está desactivada.
Cabecera simple
Windows PowerShell:
$env:MCP_REQUEST_HEADERS="my-secret"Linux/macOS/WSL:
export MCP_REQUEST_HEADERS="my-secret"Esta configuración espera que las solicitudes MCP incluyan una cabecera denominada:
MCP_REQUEST_HEADERScon el valor configurado.
Nombre de cabecera personalizado
La variable también puede contener JSON:
export MCP_REQUEST_HEADERS='{"X-API-Key":"my-secret"}'El cliente MCP debe entonces enviar:
X-API-Key: my-secretLos endpoints / y /health permanecen disponibles sin esta autenticación personalizada.
Nota de seguridad: Este proyecto es una implementación de demostración/aprendizaje. Una aplicación sanitaria real requiere una autenticación, autorización, controles de privacidad, registro de auditoría, gestión de secretos, protección de datos y revisión normativa sustancialmente más sólidos antes de almacenar información real de pacientes.
Despliegue
El repositorio contiene:
start.sh
run.shEstos scripts pueden utilizarse para un despliegue basado en Linux.
start.sh instala los paquetes de Python necesarios en el directorio de dependencias del despliegue.
run.sh inicia la aplicación con Uvicorn y escucha en la variable de entorno PORT, con el puerto 8080 como valor predeterminado.
Variable de entorno de despliegue necesaria:
APPOINTMENTS_API=https://YOUR-API-ENDPOINT/appointmentsAutenticación opcional:
MCP_REQUEST_HEADERS=your-secretDespués del despliegue, el endpoint MCP normalmente será:
https://YOUR-SERVER/mcpy el endpoint de salud:
https://YOUR-SERVER/healthPruebas del servidor
Inicie la aplicación:
python -m uvicorn server:app --host 127.0.0.1 --port 8000Pruebe el endpoint de salud:
curl http://127.0.0.1:8000/healthRespuesta esperada:
okA continuación, configure un cliente compatible con MCP para conectarse a:
http://127.0.0.1:8000/mcpEl cliente debería descubrir estas cinco herramientas:
create_appointment
find_appointments
check_appointment_status
cancel_appointment
reschedule_appointmentMejoras previstas
Los siguientes pasos útiles incluyen:
Añadir consulta de disponibilidad y franjas horarias de médicos
Evitar citas conflictivas o duplicadas
Añadir una validación más sólida de fecha y hora
Añadir una base de datos de producción
Añadir OAuth u otro mecanismo de autenticación de nivel de producción
Añadir pruebas automatizadas
Añadir registro de auditoría estructurado
Integrar con un calendario real o un proveedor de programación
Añadir controles de identidad y autorización de pacientes de nivel de producción
Estado de desarrollo
Este proyecto está pensado como un proyecto de desarrollo y aprendizaje de MCP. El backend de citas actual puede sustituirse posteriormente por un servicio de programación o una base de datos de producción conservando la interfaz de herramientas orientada a MCP.
Seguridad y datos sanitarios
No utilice información real de pacientes ni información sanitaria protegida (PHI) con un backend de demostración no seguro.
Una aplicación sanitaria de producción puede estar sujeta a requisitos de privacidad, seguridad, cumplimiento normativo y retención de datos, como HIPAA en Estados Unidos.
Repositorio
https://github.com/josh747jr/doctor-appointment-mcp
Licencia
Todavía no se ha especificado ninguna licencia para este repositorio. Añada un archivo LICENSE antes de distribuir o reutilizar el proyecto bajo términos de licencia específicos.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn MCP server that enables interaction with OnSched's consumer-facing appointment scheduling API through natural language, allowing users to manage bookings, appointments, and scheduling operations.
- AlicenseNot gradedqualityDmaintenanceAn MCP server that enables users to book, cancel, reschedule, and list appointments through natural language interactions. It uses YAML configurations for agent behavior and function logic to manage appointment data and availability.MIT
- AlicenseNot gradedqualityDmaintenanceEnables users to manage medical appointments by searching for doctors, checking availability, and booking sessions through a natural language interface. It serves as a reference implementation for advanced MCP features like symptom-based specialist recommendations and multi-step scheduling workflows.15MIT
- FlicenseNot gradedqualityCmaintenanceSimulates a third-party appointment booking agent, enabling your AI platform to check availability and book appointments via MCP interoperability.
Related MCP Connectors
Hosted Google Calendar MCP server for AI agents. No self-hosting or Google Cloud setup.
Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.
An AI concierge that turns static forms into adaptive AI conversations. From any MCP client.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/josh747jr/doctor-appointment-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server