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 システムから患者データに安全にアクセスして分析できるようにする、安全なゲートウェイおよびツールキットと考えてください。
核となるアイデア
このシステムは主に 3 つの段階で動作します。
- **SMART on FHIR クライアント(本プロジェクト内で実装):**標準の SMART App Launch フレームワークを使用して EHR に安全に接続します。構造化データ(病状、投薬情報、検査結果など)と非構造化臨床記録や添付ファイルの両方を含む、幅広い患者情報を抽出します。
- **MCPサーバー(本プロジェクト):**抽出されたEHRデータを取得し、モデルコンテキストプロトコル(MCP)を介してアクセスできる強力なツールセットを通じて利用できるようにします。これらのツールにより、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. スタンドアロンSMART on FHIR Webクライアント
このプロジェクトには、ユーザーが SMART on FHIR を介して EHR に接続し、データを取得できるようにする自己完結型の Web アプリケーションが含まれています。
- **ホストバージョン:**次の場所で公開ホストバージョンを使用できます。
https://mcp.fhir.me/ehr-connect#deliver-to-opener:$origin
($origin
このリンクを開くウィンドウの実際のオリジンに置き換えます)。 - **動作原理:**このページを開くと、ユーザーはEHRプロバイダーを選択するよう求められます。その後、標準のSMART App Launchフローが開始され、ユーザーは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 サーバーをローカルで実行するのに最適で、Cursor やその他のコマンドライン AI クライアントなどのツールでよく使用されます。
- 2段階のプロセス:
- **データベースへのデータ取得:**まず、コマンドラインインターフェースを
--create-db
および--db
フラグ付きで実行します。これにより一時的なウェブサーバーが起動し、上記と同じSMART on FHIR ウェブクライアントロジックを使用してデータを取得しpostMessage
。postMessage 経由でデータを送信する代わりに、ClientFullEHR
データはローカルのSQLiteデータベースファイルに保存されます。指示に従って(ブラウザでリンクを開いて)EHR に接続します。Copy - **MCPサーバーの実行:**データベースファイルが作成されたら、データベースファイルのみを指定してCLIを再度実行します。これにより、データがメモリにロードされ、MCPサーバーが起動し、標準入出力でコマンドを待機します。Copy
- **データベースへのデータ取得:**まず、コマンドラインインターフェースを
- クライアント設定(例:カーソル):このコマンドを実行するようにMCPクライアントを設定します。重要なのは、
src/cli.ts
とデータベースファイルの両方に絶対パスを使用することです。Copy
3. SSE経由の完全なMCPサーバー( src/sse.ts
/ index.ts
)
このモードでは、複数のクライアントがネットワーク経由で接続するシナリオに適した永続サーバーを実行します。MCP通信チャネルにはServer-Sent Events(SSE)を使用します。
- **認証:**クライアント認証は、モデルコンテキストプロトコルで規定されている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 からの患者データの安全な検索、クエリ、分析を可能にするモデル コンテキスト プロトコル サーバー。