Skip to main content
Glama

smart-fhir

Коннектор, который не выдумывает пациента.

MCP v1 transport stdio FHIR R4 4.0.1 SMART 2.2.0 writes off

tools 4 sandbox public synthetic empty search stays empty unknown id 404 PHI none

Установка · Инструменты · Как это работает · Ограничения


Установка

Только stdio. После TypeScript-сборки добавьте локальный коннектор:

name: smart-fhir
command: node
args: dist/index.js
npm install
npm run build

Переменные окружения для этого (значения по умолчанию, не секреты):

FHIR_ISS = https://launch.smarthealthit.org/v/r4/fhir
FHIR_VERSION = R4
FHIR_AUTH_MODE = open
FHIR_WRITE = off
FHIR_AUDIT_PATH = ./audit/audit.jsonl

Не кладите секреты в репозиторий. Не открывайте публичный HTTP-порт. Не слушайте TCP.

Утренний быстрый запуск (та же среда)

npx -y tsx src/index.ts

Смотрите скрипты в package.json: install, build, test, prove.

Related MCP server: smart-mcp-server

Инструменты

Четыре инструмента. Никаких create / update / delete.

Инструмент

Действие

smart_discover

GET {iss}/.well-known/smart-configuration. Возвращает разобранный JSON или явную ошибку. Не выдумывает конечные точки.

fhir_auth_status

{ mode, iss, fhir_version: "R4", write: "off", token_present, discovery_ok, last_error? }. Никогда не печатает токен или PEM.

fhir_search

GET {iss}/{resourceType}?... _count по умолчанию 10, максимум 50. Одна страница. Пустой Bundle возвращается как есть.

fhir_read

GET {iss}/{resourceType}/{id}. 404 — это «не найдено», а не выдуманный ресурс.

Разрешённые типы resourceType: Patient, Observation, Condition, MedicationRequest, Encounter. Всё остальное → { ok: false, error: "resourceType is not in the v1 allowlist" }.

Как это работает

FHIR_VERSION должен быть R4. Любое другое значение не даст запуститься.

Что

URL

Как читать

Индекс FHIR (опубликованная страница — R5 5.0.0)

http://hl7.org/fhir/

Только официальный индекс. Не реализовано.

FHIR R4 (v1)

https://hl7.org/fhir/R4/

FHIR Release 4, 4.0.1. Модель ресурсов.

SMART App Launch 2.2.0 (STU 2.2)

https://hl7.org/fhir/smart-app-launch/

Текущий опубликованный SMART IG. Основан на FHIR R4.

App launch + авторизация

https://hl7.org/fhir/smart-app-launch/app-launch.html

App Launch, PKCE, токен. App Launch (code+PKCE) вне рамок v1.

Backend Services

https://hl7.org/fhir/smart-app-launch/backend-services.html

client_credentials + JWT с приватным ключом. Реализовано; не используется, если не задано окружение.

Разрешённый список ISS (конечный слеш удаляется; всё остальное отклоняется):

  • https://launch.smarthealthit.org/v/r4/fhir (по умолчанию)

  • https://r4.smarthealthit.org

  • https://hapi.fhir.org/baseR4

Чтобы направить коннектор на другой ISS, задайте FHIR_ISS другой разрешённой базой. Новый ISS сначала нужно проверить. Не указывайте на «живую» EHR без этой проверки и настоящего client_id.

FHIR_AUTH_MODE

Поведение

open (по умолчанию)

Сначала discovery, затем FHIR GET без Authorization. Ошибка 404 при discovery не фатальна в режиме open (логируется и движемся дальше). 401/403 FHIR → { ok: false, http_status, ... }.

bearer

Та же discovery. FHIR GET с Authorization: Bearer <token>.

backend_jwt

Только если есть и FHIR_CLIENT_ID (или SMART_CLIENT_ID), и FHIR_PRIVATE_KEY_PEM. SMART Backend Services JWT. Отсутствует env → отказ запуска. Не выдумывает учётные данные.

App Launch (code+PKCE) вне рамок. FHIR_REDIRECT_URI зарезервирован и не используется.

Форма ошибки аутентификации: { ok: false, http_status, issue?, error? }. Никогда не отдаёт выдуманную Patient-запись.

FHIR_WRITE по умолчанию off. В v1 нет инструментов записи, даже если кто-то поставит on. Операции записи никогда не делают POST AuditEvent в FHIR.

Имя

Значение по умолчанию

Примечания

FHIR_ISS

стандартный лаунчер R4

Должен оставаться в разрешённом списке

FHIR_VERSION

R4

Всё остальное отклоняется

FHIR_AUTH_MODE

open

open / bearer / backend_jwt

FHIR_WRITE

off

Запись в v1 остаётся выключенной

FHIR_AUDIT_PATH

/workspace/smart-fhir-mcp/audit/audit.jsonl

Только дозапись JSONL; локально задайте ./audit/audit.jsonl

FHIR_ACCESS_TOKEN

не задано

Только для bearer

FHIR_CLIENT_ID

не задано

Backend Services

SMART_CLIENT_ID

не задано

Псевдоним FHIR_CLIENT_ID

FHIR_PRIVATE_KEY_PEM

не задано

JWT Backend Services

FHIR_JWKS_URL

не задано

Зарезервирован, если EHR запрашивает JWKS

FHIR_SCOPE

five system/*.rs types

Переопределение только в режиме JWT

FHIR_REDIRECT_URI

не задано

Зарезервирован для будущего App Launch

Строки аудита: ts, tool, iss, mode, resourceType, id?, http_status, entry_count?. Нет тела ресурса, токена, PEM и значений запроса name/MRN.

Ограничения

  • R5 / R4B по умолчанию. Дополнительные типы ресурсов. CRUD. Bulk. App Launch в браузере / PKCE.

  • Настоящая EHR / настоящая PHI. Продовый деплой. Публичный bind или Streamable HTTP.

  • momentum / fhirhydrant / Atrium / Pinecone / Medplum.

  • Не медицинский продукт. Не диагностирует, не лечит и не хранит PHI.


Никакой PHI. Никаких «живых» EHR.

Install Server
F
license - not found
A
quality
C
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

View all related MCP servers

Related MCP Connectors

  • Securely access and manage FHIR healthcare data stored in Medplum.

  • Hosted MCP endpoint with realistic fake data for prototyping agents. 12 tools, no setup.

  • Guardrailed FHIR access for AI agents: PHI redaction, audit trail, step-up auth, tenant isolation

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/swami8791/smart-fhir-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server