Skip to main content
Glama
bicatu

MCP Medical Appointments Demo

by bicatu

Демонстрация медицинских приемов MCP

Рабочий эталон для Model Context Protocol — инструменты, ресурсы, подсказки (prompts), получение подтверждений (elicitation), выборка (sampling) и автодополнение — построенный вокруг домена планирования медицинских приемов.

Создано с использованием TypeScript, Hono, MCP SDK и Zod.

Содержание

Related MCP server: MCP Appointment Booking Server

Возможности

Примитивы сервера MCP

Примитив

Имя

Описание

Инструмент

search_doctors

Поиск врачей по имени или специальности

Инструмент

get_available_slots

Получение доступных временных интервалов для врача на дату

Инструмент

book_appointment

Запись на прием (использует elicitation для подтверждения)

Инструмент

cancel_appointment

Отмена приема (использует elicitation для подтверждения)

Инструмент

list_appointments

Список приемов с фильтрами

Инструмент

recommend_specialist

Рекомендация специалиста на основе симптомов (использует sampling)

Ресурс

specialties://list

Статический список всех медицинских специальностей

Ресурс

doctor://{doctorId}/profile

Динамический профиль врача с шаблоном

Ресурс

patient://{patientId}/summary

Информация о пациенте + история приемов

Ресурс

appointment://{appointmentId}

Полные сведения о приеме

Подсказка

schedule-appointment

Управляемый рабочий процесс планирования приема (с completion)

Подсказка

patient-history

Обзор истории пациента (с completion)

Подсказка

triage-symptoms

Сортировка симптомов и рекомендация специалиста

Возможности клиента MCP

Функция

Как это используется

Elicitation

book_appointment и cancel_appointment запрашивают подтверждение пользователя перед выполнением

Sampling

recommend_specialist использует выборку LLM для сопоставления симптомов со специальностями

Roots

Сервер регистрирует корень для рабочей области медицинских приемов

Completion

Подсказки используют completable() для автодополнения имен специальностей и ID пациентов

Навык агента

SKILL.md для этого домена предоставлен по адресу .github/skills/medical-appointments/SKILL.md. Он отражает возможности сервера MCP без необходимости использования протокола MCP — любой совместимый агент (GitHub Copilot, Claude Code и т. д.) может загрузить его по требованию.

Что охватывает навык

Рабочий процесс навыка

Эквивалентный примитив MCP

Поиск врачей

Инструмент search_doctors

Проверка доступных слотов

Инструмент get_available_slots

Запись на прием

Инструмент book_appointment

Отмена приема

Инструмент cancel_appointment

Список приемов

Инструмент list_appointments

Рекомендация специалиста

Инструмент recommend_specialist

Планирование приема

Подсказка schedule-appointment

История пациента

Подсказка patient-history

Сортировка симптомов

Подсказка triage-symptoms

Навык взаимодействует со службой REST напрямую по HTTP, используя собственный доступ агента к инструментам.

Ограничения навыка

Следующие функции сервера MCP не имеют эквивалента в спецификации agentskills.io и поэтому не воспроизведены:

Функция MCP

Ограничение

Elicitation

book_appointment и cancel_appointment используют встроенный диалог подтверждения UI в сервере MCP. У навыков нет эквивалента; агент запрашивает подтверждение через диалог.

Sampling

recommend_specialist вызывает вспомогательную LLM через выборку MCP для сопоставления симптомов со специальностями. Навык использует собственные рассуждения агента напрямую (функционально эквивалентно).

Завершение аргументов

Подсказки MCP используют completable() для автоподсказок имен специальностей и ID пациентов в UI клиента. Навыки не предоставляют интерактивное завершение.

Roots

Сервер MCP регистрирует корень рабочей области (roots/list). Это концепция транспорта MCP, не имеющая эквивалента в навыках.

Поля навыков для VS Code

Поля, такие как argument-hint, user-invocable и disable-model-invocation, являются расширениями VS Code Copilot для формата SKILL.md. Они не являются частью спецификации agentskills.io и опущены для обеспечения переносимости навыка.

Быстрый старт

Предварительные требования

  • Node.js >= 22.0.0

  • VS Code с GitHub Copilot (для интеграции MCP)

1. Установка и запуск REST API

npm install
npm run dev:service

Вы должны увидеть:

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

2. Подключение сервера MCP в VS Code

Файл .vscode/mcp.json уже настроен. VS Code автоматически обнаружит и предложит запустить сервер MCP. В качестве альтернативы запустите его вручную:

npm run dev:mcp

3. Попробуйте в действии

В чате Copilot в VS Code (режим агента) попробуйте:

  • "Search for cardiologists"

  • "What slots does Dr. Sarah Chen have available next Monday?"

  • "Book an appointment with doc-3 for patient pat-1"

  • "Show me Alice Johnson's appointment history"

  • "I've been having severe headaches and dizziness — what specialist should I see?"

Или используйте подсказки из выбора подсказок:

  • Schedule Appointment — управляемый рабочий процесс планирования

  • Patient History — обзор посещений пациента

  • Triage Symptoms — подбор специалиста на основе симптомов

Инспектор MCP

Инспектор MCP — это UI на базе браузера для интерактивного тестирования серверов MCP — просмотра инструментов, ресурсов и подсказок, а также их прямого вызова.

1. Запуск REST API

Сервер MCP вызывает REST API по HTTP, поэтому он должен быть запущен первым:

npm run dev:service

2. Запуск инспектора

Во втором терминале выполните:

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

Инспектор запустит сервер MCP как подпроцесс и откроет UI браузера по адресу http://localhost:5173. Выберите опцию STDIO.

Если REST API работает на нестандартном порту, передайте SERVICE_URL:

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

3. Попробуйте elicitation

Elicitation вызывается через book_appointment и cancel_appointment. Инспектор отобразит встроенный диалог подтверждения перед выполнением действия.

Вызовите book_appointment с помощью:

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

Инспектор приостановится и попросит вас подтвердить действие перед записью на прием.

Архитектура

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

Проект использует двухпроцессный дизайн:

  1. Hono REST API — HTTP-сервис с хранилищем данных в памяти, загружаемым из файлов JSON в data/.

  2. Сервер MCP — подключается через stdio и предоставляет REST API через примитивы MCP (инструменты, ресурсы, подсказки).

Сервер MCP никогда не обращается к хранилищу данных напрямую — он вызывает REST API через HTTP-клиент, сохраняя четкое разделение двух уровней.

Конечные точки REST API

Метод

Конечная точка

Описание

GET

/api/specialties

Список всех специальностей

GET

/api/specialties/:id

Получить специальность по ID

GET

/api/doctors

Список врачей (фильтры: ?specialtyId=, ?name=)

GET

/api/doctors/:id

Получить врача по ID

GET

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

Получить доступные слоты

GET

/api/patients

Список всех пациентов

GET

/api/patients/:id

Получить пациента по ID

POST

/api/patients

Создать пациента

GET

/api/appointments

Список приемов (фильтры: ?patientId=, ?doctorId=, ?status=, ?date=)

GET

/api/appointments/:id

Получить прием по ID

POST

/api/appointments

Записаться на прием

PATCH

/api/appointments/:id/cancel

Отменить прием

PATCH

/api/appointments/:id/complete

Завершить прием

Структура проекта

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

Скрипты

Команда

Описание

npm run dev:service

Запуск Hono REST API с горячей перезагрузкой

npm run dev:mcp

Запуск сервера MCP в режиме stdio

npm run build

Компиляция TypeScript в dist/

npm run typecheck

Проверка типов без создания файлов

Модель предметной области

Сущность

Описание

Specialty

Медицинская специальность (кардиология, дерматология и т. д.)

Doctor

Имеет специальность, доступные дни, рабочие часы и длительность слота

Patient

Имя, email, телефон, дата рождения

Appointment

Связывает пациента с врачом в определенную дату/время с причиной и статусом

TimeSlot

Доступное или забронированное временное окно для врача в конкретный день

Конфигурация

REST API по умолчанию прослушивает порт 3000. Сервер MCP взаимодействует с API через http://localhost:3000 и подключается к VS Code через stdio.

Начальные данные (специальности, врачи, пациенты) загружаются из каталога data/ при запуске. Редактируйте эти файлы JSON, чтобы настроить демонстрационный набор данных.

Участие в разработке

Вклады приветствуются. Сделайте форк репозитория, создайте ветку для функции и откройте pull request.

Лицензия

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