MCP Medical Appointments Demo
Демонстрация MCP Medical Appointments
Рабочий эталон для Model Context Protocol — инструменты, ресурсы, промпты, получение данных (elicitation), выборка (sampling) и автодополнение — построенный вокруг домена планирования медицинских приемов.
Создано с использованием TypeScript, Hono, MCP SDK и Zod.
Содержание
Возможности
Примитивы MCP-сервера
Примитив | Название | Описание |
Инструмент |
| Поиск врачей по имени или специальности |
Инструмент |
| Получение доступных временных слотов для врача на дату |
Инструмент |
| Бронирование приема (использует elicitation для подтверждения) |
Инструмент |
| Отмена приема (использует elicitation для подтверждения) |
Инструмент |
| Список приемов с фильтрами |
Инструмент |
| Рекомендация специалиста на основе симптомов (использует sampling) |
Ресурс |
| Статический список всех медицинских специальностей |
Ресурс |
| Динамический профиль врача с шаблоном |
Ресурс |
| Информация о пациенте + история приемов |
Ресурс |
| Полные детали приема |
Промпт |
| Управляемый рабочий процесс планирования приема (с completion) |
Промпт |
| Просмотр истории пациента (с completion) |
Промпт |
| Триаж симптомов и рекомендация специалиста |
Возможности MCP-клиента
Возможность | Как это используется |
Elicitation |
|
Sampling |
|
Roots | Сервер регистрирует корень (root) для рабочей области медицинских приемов |
Completion | Промпты используют |
Навык агента
SKILL.md для этого домена предоставлен по адресу .github/skills/medical-appointments/SKILL.md. Он дублирует возможности MCP-сервера без необходимости использования протокола MCP — любой совместимый агент (GitHub Copilot, Claude Code и т.д.) может загрузить его по требованию.
Что охватывает навык
Рабочий процесс навыка | Эквивалентный примитив MCP |
Поиск врачей | Инструмент |
Проверка доступных слотов | Инструмент |
Бронирование приема | Инструмент |
Отмена приема | Инструмент |
Список приемов | Инструмент |
Рекомендация специалиста | Инструмент |
Планирование приема | Промпт |
История пациента | Промпт |
Триаж симптомов | Промпт |
Навык взаимодействует с REST-сервисом напрямую по HTTP, используя встроенный доступ агента к инструментам.
Ограничения навыка
Следующие функции MCP-сервера не имеют эквивалента в спецификации agentskills.io и поэтому не воспроизведены:
Функция MCP | Ограничение |
Elicitation |
|
Sampling |
|
Завершение аргументов | MCP-промпты используют |
Roots | MCP-сервер регистрирует корень рабочей области ( |
Специфичные для VS Code поля навыка | Поля, такие как |
Быстрый старт
Предварительные требования
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:30002. Подключите MCP-сервер в VS Code
Файл .vscode/mcp.json уже настроен. VS Code автоматически обнаружит и предложит запустить MCP-сервер. Альтернативно, запустите его вручную:
npm run dev:mcp3. Попробуйте в действии
В чате Copilot в VS Code (режим Agent) попробуйте:
"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 — подбор специалиста на основе симптомов
Архитектура
┌─────────────────┐ stdio ┌───────────────────┐ HTTP ┌──────────────────┐
│ VS Code / │◄──────────────►│ MCP Server │─────────────►│ Hono REST API │
│ MCP Client │ │ (TypeScript) │ localhost │ (localhost:3000)│
└─────────────────┘ └───────────────────┘ └──────────────────┘
Tools, Resources, In-memory store
Prompts + JSON bootstrapПроект использует двухпроцессный дизайн:
Hono REST API — HTTP-сервис с хранилищем данных в оперативной памяти, загружаемым из JSON-файлов в
data/.MCP-сервер — подключается через stdio и предоставляет REST API через примитивы MCP (инструменты, ресурсы, промпты).
MCP-сервер никогда не обращается к хранилищу данных напрямую — он вызывает REST API через HTTP-клиент, сохраняя четкое разделение двух уровней.
REST API эндпоинты
Метод | Эндпоинт | Описание |
|
| Список всех специальностей |
|
| Получить специальность по ID |
|
| Список врачей (фильтры: |
|
| Получить врача по ID |
|
| Получить доступные слоты |
|
| Список всех пациентов |
|
| Получить пациента по ID |
|
| Создать пациента |
|
| Список приемов (фильтры: |
|
| Получить прием по ID |
|
| Забронировать прием |
|
| Отменить прием |
|
| Завершить прием |
Структура проекта
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Скрипты
Команда | Описание |
| Запуск Hono REST API с горячей перезагрузкой |
| Запуск MCP-сервера в режиме stdio |
| Компиляция TypeScript в |
| Проверка типов без создания файлов |
Доменная модель
Сущность | Описание |
Specialty | Медицинская специальность (кардиология, дерматология и т.д.) |
Doctor | Имеет специальность, доступные дни, рабочие часы и длительность слота |
Patient | Имя, email, телефон, дата рождения |
Appointment | Связывает пациента с врачом в конкретную дату/время с причиной и статусом |
TimeSlot | Доступное или забронированное временное окно для врача в конкретный день |
Конфигурация
REST API по умолчанию слушает порт 3000. MCP-сервер общается с API через http://localhost:3000 и подключается к VS Code через stdio.
Начальные данные (специальности, врачи, пациенты) загружаются из директории data/ при запуске. Редактируйте эти JSON-файлы для настройки демонстрационного набора данных.
Участие в разработке
Вклад приветствуется. Сделайте форк репозитория, создайте ветку для функции и откройте pull request.
Лицензия
MIT
This server cannot be installed
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