🚀 FHIR MCP Server
FHIR MCP Server は、完全なモデルコンテキストプロトコル(MCP)サーバーを実装しており、LLMベースのエージェントとFHIR準拠のバックエンドとのシームレスな相互作用を促進するように設計されています。これにより、FHIRリソースに対する完全なCRUD操作が可能な標準化されたインターフェースが提供され、Claude DesktopなどのMCP互換クライアントからアクセスでき、ユーザーは自然言語のプロンプトを使用して臨床データを照会および操作することができます。
🚀 クイックスタート
このセクションでは、FHIR MCP Serverを環境にセットアップする手順を説明します。
前提条件
- Docker(推奨)またはuv:依存関係の管理に使用します。
👉 uvインストールガイド
- FHIRサーバーアカウント:FHIR APIへのアクセス権が必要です(例:Medplum)。
- Pinecone APIキー(ドキュメント検索に必要):処理されたドキュメントに対するベクトルベースの検索を可能にします。これがないと、セマンティック検索機能は利用できません。
👉 Pineconeアカウントを作成
- LOINCアカウント(オプション):公式APIから最新のLOINCコードを取得できます。これがないと、システムは静的または言語モデルによって推測されたコードに依存するため、古いまたは不正確な場合があります。
👉LOINCアカウントを作成
インストールとセットアップ
-
リポジトリをクローンする:
git clone https://github.com/the-momentum/fhir-mcp-server
cd fhir-mcp-server
-
環境変数を設定する:
cp config/.env.example config/.env
config/.env
ファイルを編集して、資格情報と設定を入力します。環境変数を参照してください。
-
依存関係をインストールする
Dockerベースの実行の場合は、次のコマンドを実行します:
make build
uvベースの実行の場合は、次のコマンドを実行します:
make uv
-
MCPクライアントの設定を更新する
例:Claude Desktop -> claude_desktop_config.json
を編集します。
- Docker
{
"mcpServers": {
"docker-mcp-server": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--init",
"--mount",
"type=bind,source=<your-project-path>/app,target=/root_project/app",
"--mount",
"type=bind,source=<your-project-path>/config/.env,target=/root_project/config/.env",
"mcp-server:latest"
]
}
}
}
<your-project-path>
を実際のインストールパスに置き換えてください。
- uv
まず、ターミナルからuvのパスを取得します:
- Windows:
(Get-Command uv).Path
- MacOS/Linux:
which uv
次に、設定ファイルを更新します:{
"mcpServers": {
"uv-mcp-server": {
"command": "uv",
"args": [
"run",
"--frozen",
"--directory",
"<your-project-path>",
"start"
],
"env": {
"PATH": "<uv-bin-folder-path>"
}
}
}
}
<uv-bin-folder-path>
を実際のuvのパス(バイナリフォルダ)に置き換えてください。
- MCPクライアントを再起動する
上記のすべての手順を完了したら、MCPクライアントを再起動して変更を適用します。場合によっては、タスクマネージャーまたはシステムのプロセスマネージャーを使用して、すべての関連プロセスを終了する必要があります。これにより、以下のことが保証されます:
- 更新された設定が適切に読み込まれます。
- 環境変数が正しく適用されます。
- FHIR MCPクライアントが正しい設定で初期化されます。
✨ 主な機能
- 🚀 FastMCPフレームワーク:高性能なMCPサーバー機能を実現するためにFastMCPに基づいて構築されています。
- 🏥 FHIRリソース管理:主要なすべてのFHIRリソースに対する完全なCRUD操作をサポートします。
- 📄 インテリジェントドキュメント処理:AIによるドキュメントの取り込みとチャンク分割をサポートし、TXT、CSV、JSON、PDFなどの複数の形式に対応しています。
- 🔍 セマンティック検索:ベクトル埋め込みを使用した高度なドキュメント検索(Pinecone経由)。
- 🧠 RAG対応:コンテキストを考慮したドキュメントクエリを行うRetrieval-Augmented Generationパイプライン。
- 🔐 セキュアな認証:FHIR API統合のためのOAuth2トークン管理。
- 📊 LOINC統合:標準化された医療用語の検索と検証。
- 🐳 コンテナ対応:簡単なデプロイとスケーリングのためのDockerサポート。
- 🔧 設定可能:広範な
.env
ベースの設定オプション。
📦 インストール
このセクションでは、FHIR MCP Serverを環境にセットアップする手順を説明します。具体的な手順は「クイックスタート」セクションに記載されています。
💻 使用例
基本的な使用法
このデモでは、Claudeが fhir-mcp-server
を使用してFHIRサーバー(この場合はMedplum)と通信し、質問に答える方法を示します。以下のようなことが確認できます:
request_patient_resource
ツールを使用して、患者の基本情報を取得する。
request_condition_resource
ツールを使用して、以前に診断された疾患のいずれかが患者が現在訴えている症状を引き起こす可能性があるかどうかの質問に答える。
request_medication_resource
、request_encounter_resource
、request_generic_resource
ツールを使用して、患者が高血圧の治療を受けたことがあるかどうかの質問に答える。
Claudeがユーザーのクエリに基づいて、質問に答えるために使用する価値のあるツールを自動的に選択する様子を観察することができます。
https://github.com/user-attachments/assets/3a3a8ed3-f881-447d-af03-5f24432a2cdd
検査履歴分析
ここでは、Claudeが最初に脂質パネルの特定のコードに対するLOINCコードを検索するツールを使用するが、FHIRサーバーに関連する観察結果が見つからないため、そのようなパネルを構成する個々のバイオマーカーの検索を繰り返す様子を観察できます。
https://github.com/user-attachments/assets/2fb39801-d5d6-4461-bedd-9f58ab4d52ec
FHIR合成データ生成器
FHIRを使用する開発者は、FHIRサーバーの機能(検索機能やデータ関係など)を検証するために、特定のテストデータを生成する必要があることがよくあります。通常はSyntheaを使用して合成データを生成し、結果のバンドルを手動でサーバーにインポートすることができますが、fhir-mcp-serverはClaudeを通じて直接テストデータを生成してデプロイできるようにすることで、このプロセスを合理化します。
これにより、syntheaを別々に実行し、バンドルをダウンロードし、手動でFHIRサーバーにインポートするという典型的なワークフローが不要になります。代わりに、Claudeのインターフェース内でターゲットとなるテストシナリオを作成し、適切な合成データを生成し、サーバーをポピュレートすることができます。
https://github.com/user-attachments/assets/d87da1d8-6401-4a9e-a6f0-50ba23396e12
注意:fhir-mcp-serverはこのユースケースを念頭に設計されたものではないため、デモで見られるように、完全には機能しません。ただし、LLMが試行錯誤を使用して誤った選択を修正する能力を確認することができます。
📚 ドキュメント
🔧 設定
環境変数
変数 |
説明 |
例の値 |
FHIR_SERVER_HOST |
FHIR APIのホストURL |
https://api.medplum.com |
FHIR_BASE_URL |
FHIRのベースパス |
/fhir/R4 |
FHIR_SERVER_CLIENT_ID |
FHIRのOAuth2クライアントID |
019720e7... |
FHIR_SERVER_CLIENT_SECRET |
FHIRのOAuth2クライアントシークレット |
9e2ee73... |
LOINC_ENDPOINT |
LOINC APIの検索エンドポイント |
https://loinc.regenstrief.org/searchapi/loincs |
LOINC_USERNAME |
LOINCアカウントのユーザー名 |
loinc-user |
LOINC_PASSWORD |
LOINCアカウントのパスワード |
my-loinc-password |
PINECONE_API_KEY |
Pinecone APIキー |
pcsk_... |
EMBEDDING_MODEL |
Hugging Faceの埋め込みモデル名 |
NeuML/pubmedbert-base-embeddings |
🛠️ MCPツール
FHIR MCP Serverは、FHIRリソースとドキュメント管理とのやり取りのための包括的なツールセットを提供します。
FHIRリソースツール
ツール |
リソースタイプ |
説明 |
request_patient_resource |
Patient |
患者の人口統計情報と管理情報を管理します。 |
request_observation_resource |
Observation |
臨床測定値と評価を処理します。 |
request_condition_resource |
Condition |
患者の問題と診断を管理します。 |
request_medication_resource |
Medication |
薬剤情報と注文を処理します。 |
request_immunization_resource |
Immunization |
予防接種記録を管理します。 |
request_encounter_resource |
Encounter |
患者の訪問と相互作用を処理します。 |
request_allergy_intolerance_resource |
AllergyIntolerance |
患者のアレルギー情報を管理します。 |
request_family_member_history_resource |
FamilyMemberHistory |
家族の健康履歴を処理します。 |
request_generic_resource |
任意のFHIRリソース |
特定のツールでカバーされていない任意のFHIRリソースに対して操作します。 |
ドキュメント管理ツール
ツール |
説明 |
request_document_reference_resource |
FHIR DocumentReferenceリソースを管理します。 |
add_document_to_pinecone |
ドキュメントをベクトルデータベースに取り込み、セマンティック検索を行うために使用します。 |
search_pinecone |
ベクトル埋め込みを使用して、インデックスされたドキュメント全体でセマンティック検索を実行します。 |
LOINC用語ツール
ツール |
説明 |
get_loinc_codes |
医療観察と検査室検査のための標準化されたLOINCコードを取得します。 |
ツールの機能
- 完全なリソース管理:すべてのFHIRリソースツールが作成、読み取り、更新、削除操作をサポートしています。
- データ検証:ツールはFHIRリソースの検証を強制し、データの破損を防止します。
- エラー処理:詳細な失敗情報を含む包括的なエラー応答。
- セキュリティ:すべての操作に対するOAuth2認証と適切なアクセス制御。
- セマンティック検索:ベクトル埋め込みを使用したAIによるドキュメント検索。
- 複数形式のサポート:ドキュメントの取り込みがTXT、PDF、CSV、JSON形式をサポートしています。
🗺️ ロードマップ
私たちは、FHIR MCP Serverに新しい機能を継続的に追加しています。これからの予定は以下の通りです:
- [ ] 拡張認証オプション:既にサポートされているOAuth2に加えて、FHIRサーバーへの接続のための他の認証方法のサポートを追加する予定です。
- [ ] RAGのための拡張ファイル形式サポート:ドキュメントの取り込み機能を拡張して、追加の形式をサポートする予定です。
- [ ] 表を考慮したドキュメントチャンク分割:ドキュメント内の表を検出し、それを個別の原子的なチャンクとして扱うことで、ドキュメントのチャンク分割パイプラインを改善する予定です。
- [ ] スキャンドキュメントのOCRサポート:光学文字認識機能を実装して、チャンク分割とインデックス化の前にスキャンされたPDFおよび画像ファイルからテキストを抽出できるようにする予定です。
提案があれば、お気軽にご連絡ください!直接貢献することもできます。
👥 貢献者
📄 ライセンス
このプロジェクトはMITライセンスの下で配布されています。詳細については、MITライセンスを参照してください。
❤️によって構築されました Momentum • AIによる医療データ管理の変革