医用画像システム向け DICOM MCP サーバー 🏥
dicom-mcpサーバーにより、AI アシスタントは DICOM サーバー (PACS、VNA など) 上のデータを照会、読み取り、移動できるようになります。
✨ コア機能
dicom-mcp次のツールを提供します:
🔍 クエリメタデータ: さまざまな基準を使用して、患者、研究、シリーズ、インスタンスを検索します。
📄 DICOM レポート (PDF) の読み取り: カプセル化された PDF (臨床レポートなど) を含む DICOM インスタンスを取得し、テキスト コンテンツを抽出します。
➡️ DICOM 画像の送信: シリーズまたはスタディを他の DICOM の送信先 (画像セグメンテーション、分類などのための AI エンドポイントなど) に送信します。
⚙️ ユーティリティ: 接続を管理し、クエリ オプションを理解します。
Related MCP server: DICOM-MCP
🚀 クイックスタート
📥 インストール
uv または pip を使用してインストールします。
uv tool install dicom-mcpまたはリポジトリをクローンすることによって:
# Clone and set up development environment
git clone https://github.com/ChristianHinge/dicom-mcp
cd dicom mcp
# Create and activate virtual environment
uv venv
source .venv/bin/activate
# Install with test dependencies
uv pip install -e ".[dev]"⚙️ 構成
dicom-mcpは、DICOM ノードを定義し、AE タイトルを呼び出すための YAML 設定ファイル( config.yamlなど)が必要です。サンプルの ORTHANC サーバーとの互換性を保つために、設定を適宜変更するか、そのまま使用してください。
nodes:
main:
host: "localhost"
port: 4242
ae_title: "ORTHANC"
description: "Local Orthanc DICOM server"
current_node: "main"
calling_aet: "MCPSCU" DICOM-MCPはオープンソースプロジェクトであり、臨床利用を目的としたものではありません。そのため、病院の稼働中のデータベースや患者の機密データを含むデータベースに接続しないでください。接続すると、患者データの損失やインターネットへの漏洩につながる可能性があります。
(オプション) サンプルORTHANCサーバー
DICOM サーバーが利用できない場合は、Docker を使用してローカル ORTHANC サーバーを実行できます。
リポジトリをクローンし、テストの依存関係をインストールしますpip install -e ".[dev]
cd tests
docker ocmpose up -d
cd ..
pytest # uploads dummy pdf data to ORTHANC server
sh upload_dummy_data.shUI はhttp://localhost:8042にあります
🔌 MCP統合
クライアント構成に追加します (例: claude_desktop_config.json ):
{
"mcpServers": {
"dicom": {
"command": "uv",
"args": ["tool","dicom-mcp", "/path/to/your_config.yaml"]
}
}
}開発の場合:
{
"mcpServers": {
"arxiv-mcp-server": {
"command": "uv",
"args": [
"--directory",
"path/to/cloned/dicom-mcp",
"run",
"dicom-mcp",
"/path/to/your_config.yaml"
]
}
}
}🛠️ ツールの概要
dicom-mcp DICOM サーバーおよび DICOM データと対話するための 4 つのカテゴリのツールを提供します。
🔍 クエリメタデータ
query_patients: 名前、ID、生年月日などの条件に基づいて患者を検索します。query_studies: 患者 ID、日付、モダリティ、説明、アクセス番号、または研究 UID を使用して研究を検索します。query_series: モダリティ、シリーズ番号/説明、またはシリーズ UID を使用して、特定の研究内のシリーズを検索します。query_instances: インスタンス番号または SOP インスタンス UID を使用して、シリーズ内の個々のインスタンス (画像/オブジェクト) を検索します。
📄 DICOM レポートを読む(PDF)
extract_pdf_text_from_dicom: カプセル化された PDF を含む特定の DICOM インスタンスを取得し、そのテキスト コンテンツを抽出します。
➡️ DICOM画像を送信する
move_series: C-MOVE を使用して、特定の DICOM シリーズを別の構成済み DICOM ノードに送信します。move_study: C-MOVE を使用して、DICOM スタディ全体を別の構成済み DICOM ノードに送信します。
⚙️ ユーティリティ
list_dicom_nodes: 現在アクティブな DICOM ノードを表示し、構成されているすべてのノードを一覧表示します。switch_dicom_node: 後続の操作のアクティブな DICOM ノードを変更します。verify_connection: C-ECHO を使用して、現在アクティブなノードへの DICOM ネットワーク接続をテストします。get_attribute_presets: メタデータ クエリ結果で使用可能な詳細レベル (最小、標準、拡張) を一覧表示します。
やり取りの例
ツールを連結することで、複雑な質問に答えることができます。
---------------------------------------------------------------------
🧑⚕️ User: "Any significant findings in John Doe's previous CT report?"
🧠 LLM → ⚙️ Tools:
query_patients → query_studies → query_series → extract_pdf_text_from_dicom
💬 LLM Response: "The report from 2025-03-26 mentions a history of splenomegaly (enlarged spleen)"
🧑⚕️ User: "What's the volume of his spleen at the last scan and the scan today?"
🧠 LLM → ⚙️ Tools:
(query_studies → query_series → move_series → query_series → extract_pdf_text_from_dicom) x2
(The move_series tool sends the latest CT to a DICOM segmentation node, which returns volume PDF report)
💬 LLM Response: "last year 2024-03-26: 412cm³, today 2025-04-10: 350cm³"
---------------------------------------------------------------------📈 貢献する
テストの実行
テストにはOrthanc DICOMサーバーが必要です。Dockerをご利用ください。
# Navigate to the directory containing docker-compose.yml (e.g., tests/)
cd tests
docker-compose up -dpytest を使用してテストを実行します。
# From the project root directory
pytestOrthanc コンテナを停止します。
cd tests
docker-compose downデバッグ
サーバー通信をデバッグするには、MCP インスペクターを使用します。
npx @modelcontextprotocol/inspector uv run dicom-mcp /path/to/your_config.yaml --transport stdio🙏 謝辞
pynetdicomを使用して構築
PDFテキスト抽出にPyPDF2を使用する