fhir-patient-consent-mcp-server
fhir-patient-consent-mcp-server
Сервер MCP, который позволяет модели задавать вопросы о пациенте, его инсулиновой помпе и том, кому предоставлено согласие на просмотр этих данных, — всё это получается в реальном времени из хранилища FHIR (R4). Никакие данные на сервере не хранятся; каждый ответ — это прямой запрос к FHIR REST в реальном времени.
Он является сопутствующим сервисом к fhir-consent-service (Spring Boot API для записи Patient/Device/Consent в FHIR), но не имеет от него программной зависимости: этот сервер зависит только от формата обмена FHIR, поэтому работает с любой FHIR R4 конечной точкой.
Инструменты
Инструмент | Назначение |
| Найти пациента по номеру MRN и/или фамилии |
| Получить демографические данные одного пациента по FHIR-идентификатору |
| Перечислить устройства пациента (помечает инсулиновые помпы по коду SNOMED CT |
| Перечислить согласия на передачу данных (партнёр, цель, категории данных, период) |
| Проверка прав: есть ли у партнёра X активное согласие на доступ к данным пациента Y? |
Related MCP server: FHIR MCP Server
Ресурс
fhir-chart://{patientId} — консолидированная JSON-«карта» (демография + устройства + активные согласия) пациента, предназначенная для непосредственного прикрепления к контексту приложением-хостом, а не для сборки моделью через несколько вызовов инструментов. См. docs/architecture.md о том, почему это ресурс, а не шестой инструмент.
Настройка
npm install
npm run buildПодключение к FHIR-серверу
export FHIR_BASE_URL=http://localhost:8081/fhir # default shown
export FHIR_AUTH_TOKEN=... # optional bearer tokenСамый простой способ получить данные для запросов: выполните docker compose up -d в каталоге fhir-consent-service (запустится локальный HAPI FHIR JPA-сервер на :8081), создайте пациента, устройство и согласие через его REST API, а затем запрашивайте эти же данные здесь, в этом хранилище.
Запуск напрямую (для тестирования через stdio)
npm run devРегистрация в MCP-клиенте
Для Claude Desktop / Claude Code добавьте в свою конфигурацию MCP:
{
"mcpServers": {
"fhir-patient-consent": {
"command": "node",
"args": ["/absolute/path/to/fhir-patient-consent-mcp-server/dist/index.js"],
"env": {
"FHIR_BASE_URL": "http://localhost:8081/fhir"
}
}
}
}Сначала выполните npm run build, чтобы появился файл dist/index.js.
Примеры вопросов после подключения
«Найдите пациента с MRN MRN-778001.»
«Какая инсулиновая помпа есть у пациента 123 и какой у неё серийный номер?»
«Было ли предоставлено GlucoVue Remote Monitoring согласие на просмотр данных об устройствах пациента 123?»
«Покажите полную карту пациента 123.» (использует ресурс
fhir-chart://)
Тестирование
npm testМодульные тесты покрывают работы слой мапперов (src/mappers/*.ts), в том числе логику авторизации по согласия в isConsentActiveForPartner — в частности, обработку отозванных согласий, ещё не начавшихся и истёкших периодов, а также открытых периодов без параметра end, поскольку именно здесь чаще всего возникают трудно заметные ошибки.
В этом репозитории нет интеграционного теста против живого FHIR-сервера (в отличие от fhir-consent-service, в котором используется Testcontainers), потому что у этого сервера нет пути записи, чтобы подготовить тестовые данные: ему пришлось бы зависеть от того репозитория (или дублировать его логику создания ресурсов) только ради тестовых фикстур. Если в репозитории появится скрипт заполнения данных, добавьте такой тест.
Примечание: код написан в песочнице без доступа к npm-реестру, поэтому
npm install,npm run buildиnpm testздесь фактически не выполнялись. Код рассчитан наserver.tool/server.resourceиз@modelcontextprotocol/sdk@^1.12; если в вашей версии SDK эти сигнатуры изменены наregisterTool/registerResource, это механическое исправление — сверьтесь с README/CHANGELOG самого SDK.
Структура проекта
src/
├── index.ts Server entry point, registers all tools/resources
├── fhirClient.ts Thin fetch-based FHIR REST client
├── tools/ One file per MCP tool
├── resources/ One file per MCP resource
├── mappers/ FHIR JSON -> summary objects + consent auth logic
└── util/results.ts Shared tool-result formatting helpersЗамечание о безопасности
Этот сервер не выполняет редактирование PHI и передаёт всё, что возвращает FHIR-конечная точка. При развёртывании на реальных данных о пациентах разместите контроль доступа перед самим FHIR-сервером (этот сервер передаёт FHIR_AUTH_TOKEN как bearer-токен, но он не управляет получением и обновлением токена) и подумайте, какие данные вообще стоит раскрывать MCP-клиенту.
Лицензия
This server cannot be deployed
Maintenance
Related MCP Connectors
Query Health Gorilla FHIR patients, conditions, medications and lab results.
Read patient-authorized EHR records: medications, labs, conditions, allergies. Consent-bounded.
- NightscoutOAuthai.b77
Your Nightscout glucose data, conversational.
Your own SLATE health data in your AI assistant: read, trend, plan and log. Never suggests a dose.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables natural-language querying of a mock legacy healthcare database and returns validated FHIR resources (Patient, Observation, Condition).MIT
- FlicenseNot gradedqualityAmaintenanceEnables LLM-based agents and MCP-compatible clients to query and manipulate clinical data through natural-language prompts by providing full CRUD operations on FHIR resources, document ingestion, semantic search, and LOINC terminology lookup.-
- FlicenseNot gradedqualityAmaintenanceEnables LLM-based agents and MCP-compatible clients to query and manipulate FHIR-compliant clinical data through natural-language prompts, with CRUD operations, document ingestion, semantic search, and terminology lookup.-
- FlicenseNot gradedqualityAmaintenanceEnables LLM-based agents and MCP-compatible clients to query and manipulate clinical data on a FHIR-compliant backend using natural-language prompts, with full CRUD operations, document ingestion, semantic search, and LOINC terminology support.-