Skip to main content
Glama
bicatu

MCP Medical Appointments Demo

by bicatu

Demo de Citas Médicas MCP

Una referencia funcional para el Model Context Protocol — herramientas, recursos, prompts, obtención de información (elicitation), muestreo y finalización — construida en torno a un dominio de programación de citas médicas.

Construido con TypeScript, Hono, MCP SDK y Zod.

Tabla de contenidos

Related MCP server: MCP Appointment Booking Server

Características

Primitivas del servidor MCP

Primitiva

Nombre

Descripción

Herramienta

search_doctors

Buscar médicos por nombre o especialidad

Herramienta

get_available_slots

Obtener franjas horarias disponibles para un médico en una fecha

Herramienta

book_appointment

Reservar una cita (usa elicitation para confirmación)

Herramienta

cancel_appointment

Cancelar una cita (usa elicitation para confirmación)

Herramienta

list_appointments

Listar citas con filtros

Herramienta

recommend_specialist

Recomendación de especialista basada en síntomas (usa sampling)

Recurso

specialties://list

Lista estática de todas las especialidades médicas

Recurso

doctor://{doctorId}/profile

Perfil dinámico del médico con plantilla

Recurso

patient://{patientId}/summary

Información del paciente + historial de citas

Recurso

appointment://{appointmentId}

Detalles completos de la cita

Prompt

schedule-appointment

Flujo de trabajo guiado de programación de citas (con completion)

Prompt

patient-history

Revisión del historial del paciente (con completion)

Prompt

triage-symptoms

Triaje de síntomas y recomendación de especialista

Características del cliente MCP

Característica

Cómo se utiliza

Elicitation

book_appointment y cancel_appointment piden al usuario que confirme antes de proceder

Sampling

recommend_specialist utiliza muestreo LLM para emparejar síntomas con especialidades

Roots

El servidor registra una raíz para el espacio de trabajo de citas médicas

Completion

Los prompts utilizan completable() para autocompletar nombres de especialidades e IDs de pacientes

Habilidad del Agente

Se proporciona un SKILL.md para este dominio en .github/skills/medical-appointments/SKILL.md. Refleja las capacidades del servidor MCP sin requerir el protocolo MCP: cualquier agente compatible (GitHub Copilot, Claude Code, etc.) puede cargarlo bajo demanda.

Qué cubre la habilidad

Flujo de trabajo de habilidad

Primitiva MCP equivalente

Buscar médicos

Herramienta search_doctors

Comprobar franjas disponibles

Herramienta get_available_slots

Reservar cita

Herramienta book_appointment

Cancelar cita

Herramienta cancel_appointment

Listar citas

Herramienta list_appointments

Recomendar especialista

Herramienta recommend_specialist

Programar cita

Prompt schedule-appointment

Historial del paciente

Prompt patient-history

Triaje de síntomas

Prompt triage-symptoms

La habilidad interactúa con el servicio REST directamente a través de HTTP utilizando el acceso a herramientas nativo del agente.

Limitaciones de la habilidad

Las siguientes características del servidor MCP no tienen equivalente en la especificación de agentskills.io y, por lo tanto, no se replican:

Característica MCP

Limitación

Elicitation

book_appointment y cancel_appointment utilizan un diálogo de confirmación de interfaz de usuario nativo en el servidor MCP. Las habilidades no tienen equivalente; el agente solicita confirmación a través de la conversación en su lugar.

Sampling

recommend_specialist llama a un sub-LLM a través de muestreo MCP para emparejar síntomas con especialidades. La habilidad utiliza el razonamiento propio del agente directamente (funcionalmente equivalente).

Argument completion

Los prompts de MCP utilizan completable() para sugerir automáticamente nombres de especialidades e IDs de pacientes en la interfaz de usuario del cliente. Las habilidades no proporcionan finalización interactiva.

Roots

El servidor MCP registra una raíz de espacio de trabajo (roots/list). Este es un concepto de transporte MCP sin equivalente en habilidades.

Campos de habilidad específicos de VS Code

Campos como argument-hint, user-invocable y disable-model-invocation son extensiones de VS Code Copilot para el formato SKILL.md. No forman parte de la especificación de agentskills.io y se omiten para mantener la portabilidad de la habilidad.

Inicio rápido

Requisitos previos

  • Node.js >= 22.0.0

  • VS Code con GitHub Copilot (para integración MCP)

1. Instalar e iniciar la API REST

npm install
npm run dev:service

Deberías ver:

Bootstrapped: 8 specialties, 12 doctors, 5 patients
Medical Appointment Service running on http://localhost:3000

2. Conectar el servidor MCP en VS Code

El archivo .vscode/mcp.json ya está configurado. VS Code detectará automáticamente y ofrecerá iniciar el servidor MCP. Alternativamente, ejecútalo manualmente:

npm run dev:mcp

3. Pruébalo

En el chat de Copilot de VS Code (modo Agente), intenta:

  • "Busca cardiólogos"

  • "¿Qué franjas horarias tiene disponibles la Dra. Sarah Chen el próximo lunes?"

  • "Reserva una cita con doc-3 para el paciente pat-1"

  • "Muéstrame el historial de citas de Alice Johnson"

  • "He tenido dolores de cabeza intensos y mareos, ¿qué especialista debería consultar?"

O utiliza los prompts del selector de prompts:

  • Schedule Appointment — flujo de trabajo de programación guiado

  • Patient History — revisar las visitas de un paciente

  • Triage Symptoms — emparejamiento de especialistas basado en síntomas

Inspector MCP

MCP Inspector es una interfaz de usuario basada en navegador para probar interactivamente servidores MCP: navegar por herramientas, recursos y prompts, e invocarlos directamente.

1. Iniciar la API REST

El servidor MCP llama a la API REST a través de HTTP, por lo que debe estar ejecutándose primero:

npm run dev:service

2. Iniciar el Inspector

En una segunda terminal, ejecuta:

npx @modelcontextprotocol/inspector tsx src/mcp/server.ts

El Inspector iniciará el servidor MCP como un subproceso y abrirá una interfaz de usuario en el navegador en http://localhost:5173. Elige la opción STDIO

Si la API REST se está ejecutando en un puerto no predeterminado, pasa SERVICE_URL:

SERVICE_URL=http://localhost:3000 npx @modelcontextprotocol/inspector tsx src/mcp/server.ts

3. Probar la obtención de información (elicitation)

La obtención de información se activa mediante book_appointment y cancel_appointment. El Inspector mostrará un diálogo de confirmación nativo antes de que se confirme la acción.

Llama a book_appointment con:

{
  "patientId": "pat-1",
  "doctorId": "doc-1",
  "dateTime": "2026-05-05T10:00:00",
  "reason": "Annual checkup"
}

El Inspector se pausará y te pedirá que confirmes antes de que se reserve la cita.

Arquitectura

┌─────────────────┐     stdio      ┌───────────────────┐     HTTP     ┌──────────────────┐
│   VS Code /     │◄──────────────►│   MCP Server      │─────────────►│  Hono REST API   │
│   MCP Client    │                │   (TypeScript)    │  localhost   │  (localhost:3000)│
└─────────────────┘                └───────────────────┘              └──────────────────┘
                                     Tools, Resources,                  In-memory store
                                     Prompts                            + JSON bootstrap

El proyecto utiliza un diseño de dos procesos:

  1. API REST Hono — Servicio HTTP con un almacén de datos en memoria, iniciado desde archivos semilla JSON en data/.

  2. Servidor MCP — Se conecta a través de stdio y expone la API REST a través de primitivas MCP (herramientas, recursos, prompts).

El servidor MCP nunca toca el almacén de datos directamente; llama a la API REST a través de un cliente HTTP, manteniendo las dos capas claramente separadas.

Endpoints de la API REST

Método

Endpoint

Descripción

GET

/api/specialties

Listar todas las especialidades

GET

/api/specialties/:id

Obtener especialidad por ID

GET

/api/doctors

Listar médicos (filtros: ?specialtyId=, ?name=)

GET

/api/doctors/:id

Obtener médico por ID

GET

/api/doctors/:id/slots?date=YYYY-MM-DD

Obtener franjas disponibles

GET

/api/patients

Listar todos los pacientes

GET

/api/patients/:id

Obtener paciente por ID

POST

/api/patients

Crear un paciente

GET

/api/appointments

Listar citas (filtros: ?patientId=, ?doctorId=, ?status=, ?date=)

GET

/api/appointments/:id

Obtener cita por ID

POST

/api/appointments

Reservar una cita

PATCH

/api/appointments/:id/cancel

Cancelar una cita

PATCH

/api/appointments/:id/complete

Completar una cita

Estructura del proyecto

mcp-demo/
├── data/
│   ├── specialties.json      # 8 medical specialties
│   ├── doctors.json           # 12 doctors across specialties
│   └── patients.json          # 5 sample patients
├── src/
│   ├── types.ts               # Shared domain types
│   ├── service/
│   │   ├── store.ts           # In-memory data store
│   │   ├── app.ts             # Hono app composition
│   │   ├── main.ts            # Service entry point
│   │   └── routes/            # REST route handlers
│   └── mcp/
│       ├── api-client.ts      # HTTP client for the REST API
│       ├── tools.ts           # MCP tool registrations
│       ├── resources.ts       # MCP resource registrations
│       ├── prompts.ts         # MCP prompt registrations
│       └── server.ts          # MCP server entry point
├── .vscode/
│   └── mcp.json               # VS Code MCP server config
├── package.json
└── tsconfig.json

Scripts

Comando

Descripción

npm run dev:service

Iniciar la API REST Hono con recarga en caliente

npm run dev:mcp

Iniciar el servidor MCP en modo stdio

npm run build

Compilar TypeScript a dist/

npm run typecheck

Comprobar tipos sin emitir archivos

Modelo de dominio

Entidad

Descripción

Especialidad

Especialidad médica (Cardiología, Dermatología, etc.)

Médico

Tiene una especialidad, días disponibles, horario laboral y duración de la franja

Paciente

Nombre, correo electrónico, teléfono, fecha de nacimiento

Cita

Vincula a un paciente con un médico en una fecha/hora específica con un motivo y estado

Franja horaria

Ventana de tiempo disponible o reservada para un médico en un día determinado

Configuración

La API REST escucha en el puerto 3000 por defecto. El servidor MCP se comunica con la API a través de http://localhost:3000 y se conecta a VS Code mediante stdio.

Los datos semilla (especialidades, médicos, pacientes) se cargan desde el directorio data/ al inicio. Edita esos archivos JSON para personalizar el conjunto de datos de la demo.

Contribución

Las contribuciones son bienvenidas. Haz un fork del repositorio, crea una rama de características y abre un pull request.

Licencia

MIT

A
license - permissive license
Not graded
quality - not tested
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • F
    license
    Not graded
    quality
    D
    maintenance
    An 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.
  • A
    license
    Not graded
    quality
    D
    maintenance
    An 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
  • A
    license
    A
    quality
    D
    maintenance
    Enables HIPAA-aware healthcare workflow automation including patient intake, clinical summaries, compliance checking, and appointment scheduling via MCP tools.
    4
    99
    1
    Business Source 1.1
  • F
    license
    Not graded
    quality
    C
    maintenance
    Simulates a third-party appointment booking agent, enabling your AI platform to check availability and book appointments via MCP interoperability.

View all related MCP servers

Related MCP Connectors

  • AI-native scheduling: check availability, book meetings, cancel and reschedule via MCP

  • An AI concierge that turns static forms into adaptive AI conversations. From any MCP client.

  • Hosted MCP server exposing US hospital procedure cost data to AI assistants

View all MCP Connectors

Latest Blog Posts

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/bicatu/mcp-skills-demo'

If you have feedback or need assistance with the MCP directory API, please join our Discord server