hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Integrations
Enables complex data analysis on EHR records through JavaScript code evaluation with Lodash utilities.
Connects to EHR systems using SMART on FHIR protocol, enabling secure access to patient data from Electronic Health Records. Fetches structured FHIR data and clinical documents.
Stores and queries fetched EHR data in a SQLite database, allowing read-only SQL operations against structured FHIR resources.
MCP 및 FHIR을 사용한 EHR 도구
이 프로젝트는 대규모 언어 모델(LLM) 및 기타 AI 에이전트가 전자 건강 기록(EHR)과 상호 작용할 수 있도록 도구를 제공하는 특수 서버 역할을 합니다. 안전한 데이터 접근을 위해 SMART on FHIR 표준을 활용하고, 모델 컨텍스트 프로토콜(MCP)을 통해 도구를 제공합니다.
이를 AI가 다양한 EHR 시스템의 환자 데이터에 안전하게 접근하여 분석할 수 있도록 하는 안전한 게이트웨이 및 툴킷이라고 생각해 보세요.
핵심 아이디어
이 시스템은 세 가지 주요 단계로 작동합니다.
- SMART on FHIR 클라이언트(이 프로젝트에서 구현): 표준 SMART 앱 실행 프레임워크를 사용하여 EHR에 안전하게 연결합니다. 구조화된 데이터(상태, 약물, 검사 결과 등)와 비구조화된 임상 기록 또는 첨부 파일을 포함한 광범위한 환자 정보를 추출합니다.
- MCP 서버(본 프로젝트): 추출된 EHR 데이터를 모델 컨텍스트 프로토콜(Model Context Protocol)을 통해 접근 가능한 강력한 도구 세트를 통해 제공합니다. 이러한 도구를 통해 AI 모델과 같은 외부 시스템은 EHR 자체에 직접 접근하지 않고도 데이터를 쿼리하고 분석할 수 있습니다.
- AI/LLM 인터페이스(외부 소비자): AI 에이전트 또는 대규모 언어 모델이 MCP 서버에 연결하고 제공된 도구를 사용하여 환자 기록에 대한 "질문"을 하고, 검색을 수행하거나 사용자 정의 분석을 실행합니다.
사용 가능한 도구
MCP 서버는 로드된 EHR 데이터와 상호 작용하기 위한 여러 도구를 제공합니다.
grep_record
: 가져온 레코드의 모든 부분(구조화된 FHIR 데이터 + 메모/첨부 파일의 텍스트)에 대해 텍스트 또는 정규 표현식 검색을 수행합니다. 키워드나 특정 멘션(예: "당뇨병", "아스피린")을 찾는 데 적합합니다.query_record
: 구조화된 FHIR 데이터에 대해 읽기 전용 SQLSELECT
쿼리를 직접 실행합니다. 알려진 FHIR 리소스 구조를 기반으로 정밀한 조회(예: LOINC 코드로 특정 검사 결과 찾기)에 유용합니다.eval_record
: 가져온 데이터(FHIR 리소스 + 첨부 파일)에 대해 사용자 지정 JavaScript 코드를 직접 실행합니다. 복잡한 계산, 여러 소스의 데이터 결합 또는 사용자 지정 형식 지정에 대한 최대의 유연성을 제공합니다.
이러한 설정을 통해 AI 도구는 표준화되고 안전한 인터페이스를 통해 포괄적인 EHR 데이터를 활용할 수 있습니다.
(개발자 설정 및 사용 세부 사항은 코드베이스와 특정 모듈 문서에서 확인할 수 있습니다.)
구성 요소 및 사용법
이 프로젝트에서는 EHR 데이터를 가져오고 MCP 도구를 통해 공개하는 다양한 방법을 제공합니다.
1. FHIR 웹 클라이언트의 독립형 SMART
이 프로젝트에는 사용자가 SMART on FHIR을 통해 자신의 EHR에 연결하고 데이터를 가져올 수 있는 독립형 웹 애플리케이션이 포함되어 있습니다.
- 호스팅 버전: 다음에서 공개적으로 호스팅된 버전을 사용할 수 있습니다.
https://mcp.fhir.me/ehr-connect#deliver-to-opener:$origin
($origin
이 링크를 여는 창의 실제 원점으로 바꾸세요). - 작동 방식: 이 페이지가 열리면 사용자에게 EHR 제공업체를 선택하라는 메시지가 표시됩니다. 그런 다음 표준 SMART 앱 실행 흐름이 시작되어 사용자를 EHR 로그인 페이지로 리디렉션합니다. 인증 및 권한 부여가 완료되면 클라이언트는 포괄적인 FHIR 리소스(환자, 상태, 관찰 결과, 약물, 문서 등)를 가져오고, 관련 첨부 파일(
DocumentReference
에서 찾은 PDF, RTF, HTML 등)에서 일반 텍스트를 추출합니다. - 데이터 출력(
ClientFullEHR
): 가져오기가 완료되면 클라이언트는 모든 데이터를ClientFullEHR
JSON 객체로 수집합니다. 이 객체에는 다음이 포함됩니다.fhir
: 키가 FHIR 리소스 유형(예: "환자")이고 값이 해당 FHIR 리소스의 배열인 사전입니다.attachments
: 처리된 첨부 파일 객체의 배열로, 각각 메타데이터(소스 리소스, 경로, 콘텐츠 유형)와 콘텐츠 자체(원시 데이터의 경우contentBase64
, 추출된 텍스트의 경우contentPlaintext
)를 포함합니다.
- 데이터 전달:
#deliver-to-opener:$origin
해시로 열면 클라이언트는 사용자에게 확인을 요청한 다음window.opener.postMessage(data, targetOrigin)
사용하여ClientFullEHR
객체를 해당 객체를 연 창으로 다시 보냅니다.
2. Stdio를 통한 로컬 MCP 서버( src/cli.ts
)
이 모드는 MCP 서버를 로컬에서 실행하는 데 이상적이며, 커서나 다른 명령줄 AI 클라이언트와 같은 도구와 함께 사용되는 경우가 많습니다.
- 2단계 프로세스:
- 데이터베이스로 데이터 가져오기: 먼저
--create-db
및--db
플래그를 사용하여 명령줄 인터페이스를 실행합니다. 이렇게 하면 임시 웹 서버가 시작되고 위에서 설명한 SMART on FHIR 웹 클라이언트 로직을 사용하여 데이터를 가져옵니다.postMessage
통해 데이터를 전송하는 대신,ClientFullEHR
데이터를 로컬 SQLite 데이터베이스 파일에 저장합니다.지엑스피1브라우저에서 링크를 열어 메시지를 따라 EHR에 연결합니다. - MCP 서버 실행: 데이터베이스 파일이 생성되면 데이터베이스 파일만 지정하여 CLI를 다시 실행하세요. 그러면 데이터가 메모리에 로드되고 MCP 서버가 시작되어 표준 입출력(SIO)을 통해 명령을 수신합니다.Copy
- 데이터베이스로 데이터 가져오기: 먼저
- 클라이언트 구성(예: 커서): 이 명령을 실행하도록 MCP 클라이언트를 구성하세요.
src/cli.ts
과 데이터베이스 파일 모두 절대 경로를 사용하는 것이 중요합니다 .Copy
3. SSE를 통한 전체 MCP 서버( src/sse.ts
/ index.ts
)
이 모드는 여러 클라이언트가 네트워크를 통해 연결하는 상황에 적합한 영구 서버를 실행합니다. MCP 통신 채널에는 SSE(Server-Sent Events)를 사용합니다.
- 인증: 클라이언트 인증은 모델 컨텍스트 프로토콜(Model Context Protocol)에 명시된 대로 OAuth 2.1을 사용합니다. 서버는 표준 엔드포인트(
/authorize
,/token
,/register
등)를 제공합니다. - 데이터 가져오기: 클라이언트가 OAuth 연결을 시작하면 서버는 SMART on FHIR 흐름을 직접 처리하고, 인증 프로세스 중에
ClientFullEHR
데이터를 가져오고, 클라이언트의 연결 기간 동안 메모리(또는 지속형 세션)에 보관합니다. - 상태: OAuth 2.1 클라이언트 상호작용을 위한 MCP 사양은 기능적으로는 정상 작동하지만, 아직 발전 중입니다. 현재 이 인증 방식에 대한 클라이언트 지원은 매우 제한적 이어서 전문 개발자 도구나 디버깅 도구가 아닌 일반 클라이언트에서 이 모드를 테스트하기 어렵습니다. 이 SSE 모드는 실험적인 것으로 간주해야 합니다.
This server cannot be installed
SMART on FHIR을 사용하여 AI 도구를 전자 건강 기록에 연결하는 모델 컨텍스트 프로토콜 서버로, 호환되는 EHR에서 환자 데이터를 안전하게 검색, 쿼리 및 분석할 수 있습니다.