Skip to main content
Glama
bicatu

MCP Medical Appointments Demo

by bicatu

MCP Medizinische Termine Demo

Eine funktionierende Referenz für das Model Context Protocol — Tools, Ressourcen, Prompts, Elicitation, Sampling und Completion — aufgebaut rund um den Bereich der medizinischen Terminplanung.

Erstellt mit TypeScript, Hono, MCP SDK und Zod.

Inhaltsverzeichnis

Related MCP server: MCP Appointment Booking Server

Funktionen

MCP Server Primitive

Primitiv

Name

Beschreibung

Tool

search_doctors

Suche nach Ärzten nach Name oder Fachgebiet

Tool

get_available_slots

Verfügbare Zeitfenster für einen Arzt an einem Datum abrufen

Tool

book_appointment

Termin buchen (nutzt Elicitation zur Bestätigung)

Tool

cancel_appointment

Termin stornieren (nutzt Elicitation zur Bestätigung)

Tool

list_appointments

Termine mit Filtern auflisten

Tool

recommend_specialist

Symptombasierte Facharzt-Empfehlung (nutzt Sampling)

Resource

specialties://list

Statische Liste aller medizinischen Fachgebiete

Resource

doctor://{doctorId}/profile

Dynamisches Arztprofil mit Vorlage

Resource

patient://{patientId}/summary

Patienteninformationen + Terminhistorie

Resource

appointment://{appointmentId}

Vollständige Termindetails

Prompt

schedule-appointment

Geführter Terminplanungs-Workflow (mit Completion)

Prompt

patient-history

Überprüfung der Patientenhistorie (mit Completion)

Prompt

triage-symptoms

Symptom-Triage und Facharzt-Empfehlung

MCP Client Funktionen

Funktion

Verwendung

Elicitation

book_appointment und cancel_appointment fordern den Benutzer zur Bestätigung auf, bevor fortgefahren wird

Sampling

recommend_specialist nutzt LLM-Sampling, um Symptome Fachgebieten zuzuordnen

Roots

Der Server registriert ein Root für den Arbeitsbereich der medizinischen Termine

Completion

Prompts nutzen completable() zur automatischen Vervollständigung von Fachgebietsnamen und Patienten-IDs

Agent Skill

A SKILL.md für diesen Bereich wird unter .github/skills/medical-appointments/SKILL.md bereitgestellt. Es spiegelt die Fähigkeiten des MCP-Servers wider, ohne das MCP-Protokoll zu erfordern — jeder kompatible Agent (GitHub Copilot, Claude Code, etc.) kann es bei Bedarf laden.

Was der Skill abdeckt

Skill-Workflow

Äquivalentes MCP-Primitiv

Ärzte finden

search_doctors Tool

Verfügbare Slots prüfen

get_available_slots Tool

Termin buchen

book_appointment Tool

Termin stornieren

cancel_appointment Tool

Termine auflisten

list_appointments Tool

Facharzt empfehlen

recommend_specialist Tool

Termin planen

schedule-appointment Prompt

Patientenhistorie

patient-history Prompt

Symptome triagieren

triage-symptoms Prompt

Der Skill interagiert direkt über HTTP mit dem REST-Dienst unter Verwendung des nativen Tool-Zugriffs des Agenten.

Skill-Einschränkungen

Die folgenden MCP-Server-Funktionen haben kein Äquivalent in der agentskills.io Spezifikation und werden daher nicht repliziert:

MCP-Funktion

Einschränkung

Elicitation

book_appointment und cancel_appointment verwenden einen nativen UI-Bestätigungsdialog im MCP-Server. Skills haben kein Äquivalent; der Agent fordert die Bestätigung stattdessen durch Konversation an.

Sampling

recommend_specialist ruft ein Sub-LLM via MCP-Sampling auf, um Symptome Fachgebieten zuzuordnen. Der Skill nutzt die eigene Schlussfolgerung des Agenten direkt (funktional äquivalent).

Argument-Vervollständigung

MCP-Prompts nutzen completable(), um Fachgebietsnamen und Patienten-IDs in der Client-UI automatisch vorzuschlagen. Skills bieten keine interaktive Vervollständigung.

Roots

Der MCP-Server registriert ein Arbeitsbereichs-Root (roots/list). Dies ist ein MCP-Transportkonzept ohne Skill-Äquivalent.

VS Code-spezifische Skill-Felder

Felder wie argument-hint, user-invocable und disable-model-invocation sind VS Code Copilot-Erweiterungen des SKILL.md-Formats. Sie sind nicht Teil der agentskills.io-Spezifikation und wurden weggelassen, um den Skill portabel zu halten.

Schnellstart

Voraussetzungen

  • Node.js >= 22.0.0

  • VS Code mit GitHub Copilot (für MCP-Integration)

1. REST API installieren und starten

npm install
npm run dev:service

Sie sollten sehen:

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

2. MCP-Server in VS Code verbinden

Die Datei .vscode/mcp.json ist bereits konfiguriert. VS Code erkennt den MCP-Server automatisch und bietet an, ihn zu starten. Alternativ können Sie ihn manuell ausführen:

npm run dev:mcp

3. Ausprobieren

Versuchen Sie im Copilot Chat von VS Code (Agent-Modus):

  • "Suche nach Kardiologen"

  • "Welche Termine hat Dr. Sarah Chen nächsten Montag frei?"

  • "Buche einen Termin bei doc-3 für Patient pat-1"

  • "Zeige mir die Terminhistorie von Alice Johnson"

  • "Ich habe starke Kopfschmerzen und Schwindel — welchen Facharzt sollte ich aufsuchen?"

Oder verwenden Sie die Prompts aus der Prompt-Auswahl:

  • Schedule Appointment — geführter Terminplanungs-Workflow

  • Patient History — Besuche eines Patienten überprüfen

  • Triage Symptoms — symptombasierte Facharzt-Zuordnung

MCP Inspector

MCP Inspector ist eine browserbasierte UI zum interaktiven Testen von MCP-Servern — zum Durchsuchen von Tools, Ressourcen und Prompts sowie deren direktem Aufruf.

1. REST API starten

Der MCP-Server ruft die REST-API über HTTP auf, daher muss diese zuerst laufen:

npm run dev:service

2. Inspector starten

Führen Sie in einem zweiten Terminal aus:

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

Der Inspector startet den MCP-Server als Subprozess und öffnet eine Browser-UI unter http://localhost:5173. Wählen Sie die Option STDIO.

Wenn die REST-API auf einem nicht standardmäßigen Port läuft, übergeben Sie SERVICE_URL:

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

3. Elicitation ausprobieren

Elicitation wird durch book_appointment und cancel_appointment ausgelöst. Der Inspector rendert einen nativen Bestätigungsdialog, bevor die Aktion ausgeführt wird.

Rufen Sie book_appointment auf mit:

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

Der Inspector pausiert und bittet Sie um Bestätigung, bevor der Termin gebucht wird.

Architektur

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

Das Projekt verwendet ein Zwei-Prozess-Design:

  1. Hono REST API — HTTP-Dienst mit einem In-Memory-Datenspeicher, gebootstrappt aus JSON-Seed-Dateien in data/.

  2. MCP Server — Verbindet sich über stdio und macht die REST-API über MCP-Primitive (Tools, Ressourcen, Prompts) verfügbar.

Der MCP-Server greift nie direkt auf den Datenspeicher zu — er ruft die REST-API über einen HTTP-Client auf, wodurch die beiden Schichten sauber getrennt bleiben.

REST API Endpunkte

Methode

Endpunkt

Beschreibung

GET

/api/specialties

Alle Fachgebiete auflisten

GET

/api/specialties/:id

Fachgebiet nach ID abrufen

GET

/api/doctors

Ärzte auflisten (Filter: ?specialtyId=, ?name=)

GET

/api/doctors/:id

Arzt nach ID abrufen

GET

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

Verfügbare Slots abrufen

GET

/api/patients

Alle Patienten auflisten

GET

/api/patients/:id

Patient nach ID abrufen

POST

/api/patients

Patienten erstellen

GET

/api/appointments

Termine auflisten (Filter: ?patientId=, ?doctorId=, ?status=, ?date=)

GET

/api/appointments/:id

Termin nach ID abrufen

POST

/api/appointments

Termin buchen

PATCH

/api/appointments/:id/cancel

Termin stornieren

PATCH

/api/appointments/:id/complete

Termin abschließen

Projektstruktur

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

Skripte

Befehl

Beschreibung

npm run dev:service

Hono REST API mit Hot-Reload starten

npm run dev:mcp

MCP-Server im stdio-Modus starten

npm run build

TypeScript nach dist/ kompilieren

npm run typecheck

Typ-Prüfung ohne Dateierstellung

Domänenmodell

Entität

Beschreibung

Specialty

Medizinisches Fachgebiet (Kardiologie, Dermatologie, etc.)

Doctor

Hat ein Fachgebiet, verfügbare Tage, Arbeitszeiten und Slot-Dauer

Patient

Name, E-Mail, Telefon, Geburtsdatum

Appointment

Verknüpft einen Patienten mit einem Arzt zu einem bestimmten Datum/Uhrzeit mit Grund und Status

TimeSlot

Verfügbares oder gebuchtes Zeitfenster für einen Arzt an einem bestimmten Tag

Konfiguration

Die REST-API lauscht standardmäßig auf Port 3000. Der MCP-Server kommuniziert mit der API über http://localhost:3000 und verbindet sich mit VS Code über stdio.

Seed-Daten (Fachgebiete, Ärzte, Patienten) werden beim Start aus dem Verzeichnis data/ geladen. Bearbeiten Sie diese JSON-Dateien, um den Demo-Datensatz anzupassen.

Mitwirken

Beiträge sind willkommen. Forken Sie das Repo, erstellen Sie einen Feature-Branch und öffnen Sie einen Pull Request.

Lizenz

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