Skip to main content
Glama
bicatu

MCP Medical Appointments Demo

by bicatu

MCP Medical Appointments Demo

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

Erstellt mit TypeScript, Hono, MCP SDK und Zod.

Inhaltsverzeichnis

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 verwendet LLM-Sampling, um Symptome mit Fachgebieten abzugleichen

Roots

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

Completion

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

Agent Skill

A SKILL.md für diesen Bereich finden Sie unter .github/skills/medical-appointments/SKILL.md. 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 mit Fachgebieten abzugleichen. Der Skill nutzt die eigene Schlussfolgerung des Agenten direkt (funktional äquivalent).

Argument-Vervollständigung

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

Roots

Der MCP-Server registriert einen 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 Folgendes 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 in VS Code's Copilot Chat (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 — Überprüfung der Besuche eines Patienten

  • Triage Symptoms — symptombasierte Facharzt-Suche

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 stellt die REST API über MCP-Primitive (Tools, Ressourcen, Prompts) bereit.

Der MCP-Server greift niemals 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

Einen Patienten erstellen

GET

/api/appointments

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

GET

/api/appointments/:id

Termin nach ID abrufen

POST

/api/appointments

Einen Termin buchen

PATCH

/api/appointments/:id/cancel

Einen Termin stornieren

PATCH

/api/appointments/:id/complete

Einen 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

-
security - not tested
F
license - not found
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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