mcpField
D
DICOMweb MCP Server

DICOMweb MCP Server

ローカル
github.comヘルスケア41 週間前に更新

DICOMweb MCP Server について

DICOMweb MCP Serverは、AIアシスタントをDICOMweb準拠のアーカイブに接続します。医用画像データを扱うユーザーや開発者向けで、検査の検索から画像フレームの表示、レポートテキストの取得まで行えます。

主な機能

  1. 01検査、シリーズ、インスタンスの検索
  2. 02DICOMクエリーキーによる結果の絞り込み
  3. 03インスタンスメタデータの取得
  4. 04構造化レポートテキストの抽出
  5. 05検索可能なPDFレポートテキストの抽出
  6. 06フレームをJPEGまたはPNGでレンダリング

活用シーン

  1. 01患者名や日付で画像検査を検索
  2. 02ピクセルデータを取得せずにDICOM属性を確認
  3. 03構造化レポートや検索可能なPDFレポートを読む
  4. 04指定したDICOM画像フレームを表示

MCP 対応

QIDO-RSによるDICOMwebアーカイブ検索と、WADO-RSによるメタデータ、レポートテキスト、レンダリング済みフレームの取得をMCPツールとして提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"pantelisgeorgiadis-dicomweb": {
"command": "npx",
"args": [
"-y",
"dicomweb-mcp-server"
],
"env": {
"DICOMWEB_HOST": "<DICOMWEB_HOST>",
"DICOMWEB_AUTH": "<DICOMWEB_AUTH>",
"DICOMWEB_USER": "<DICOMWEB_USER>",
"DICOMWEB_PASS": "<DICOMWEB_PASS>",
"DICOMWEB_TOKEN": "<DICOMWEB_TOKEN>",
"DICOMWEB_TIMEOUT": "<DICOMWEB_TIMEOUT>"
}
}
}
}
起動コマンドnpx -y dicomweb-mcp-server
設定が必要な環境変数
DICOMWEB_HOSTBase URL of the DICOMweb server (used for both QIDO-RS and WADO-RS requests).
DICOMWEB_AUTHシークレットAuthentication type: 'basic' or 'bearer'. Omit for unauthenticated access.
DICOMWEB_USERUsername for Basic authentication. Required when DICOMWEB_AUTH=basic.
DICOMWEB_PASSシークレットPassword for Basic authentication. Required when DICOMWEB_AUTH=basic.
DICOMWEB_TOKENシークレットBearer token for authentication. Required when DICOMWEB_AUTH=bearer.
DICOMWEB_TIMEOUTFetch request timeout in milliseconds. Omit to disable timeout.

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmdicomweb-mcp-server0.0.4

ツール

9

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
querystringはいスペース区切りの DICOM key=value 検索フィルター。キーには DICOM キーワード名または 8 桁の 16 進数タグを指定します(例:PatientName=Doe* StudyDate=20200101-20201231 ModalitiesInStudy=CT 00100020=12345)。特殊キー:fuzzymatching=true、limit=N、offset=N。空文字列を渡すと、すべての検査を返します。

詳細

NPM version NPM downloads build MIT License dicomweb-mcp-server MCP server dicomweb-mcp-server on MCP ServerList

dicomweb-mcp-server

DICOMweb準拠のDICOMアーカイブをAIアシスタントに公開する、Model Context Protocol(MCP)サーバーです。MCP対応クライアントを使って、自然言語で検査、シリーズ、インスタンスを検索したり、メタデータを調べたり、構造化レポートやカプセル化PDFレポートを読み取ったり、画像フレームをレンダリングしたりできます。

要件

  • Node.js 20以降
  • QIDO-RSおよびWADO-RSに対応した稼働中のDICOMwebサーバー(例:orthanc)

DICOMwebサーバーは、以下のエンドポイントに対応している必要があります。

エンドポイントサービス用途
GET /studiesQIDO-RS検査の検索
GET /studies/{study}/seriesQIDO-RSシリーズの検索
GET /studies/{study}/series/{series}/instancesQIDO-RSインスタンス、構造化レポート、カプセル化PDFレポートの検索
GET /studies/{study}/series/{series}/instances/{instance}/metadataWADO-RSインスタンスのメタデータ、構造化レポートのテキスト、カプセル化PDFレポートのテキストの取得
GET /studies/{study}/series/{series}/instances/{instance}/frames/{frame}/renderedWADO-RSインスタンスフレームのレンダリング

インストール

npxを使用する(推奨 — ローカルへのインストールは不要)
npx dicomweb-mcp-server

サーバーは、スクリプトと同じディレクトリにある.envファイルから設定を読み込みます(以下の設定を参照)。

グローバルインストール
npm install -g dicomweb-mcp-server
dicomweb-mcp-server

設定

DICOMwebサーバーへの接続情報を記載した.envファイルを作成します。サーバーの実行場所の隣(またはMCPクライアントで設定した作業ディレクトリ)にファイルを配置します。

# Required
DICOMWEB_HOST=https://your-dicomweb-server/dicomweb

# Optional — authentication
DICOMWEB_AUTH=basic        # basic | bearer
DICOMWEB_USER=username     # required when DICOMWEB_AUTH=basic
DICOMWEB_PASS=password     # required when DICOMWEB_AUTH=basic
DICOMWEB_TOKEN=your-token  # required when DICOMWEB_AUTH=bearer

# Optional — request timeout (milliseconds)
DICOMWEB_TIMEOUT=30000
変数必須説明
DICOMWEB_HOSTはいDICOMwebサーバーのベースURL(QIDO-RSおよびWADO-RSの両方のリクエストで使用)
DICOMWEB_AUTHいいえ認証方式:basicまたはbearer
DICOMWEB_USER条件付きユーザー名 — DICOMWEB_AUTH=basicの場合に必須
DICOMWEB_PASS条件付きパスワード — DICOMWEB_AUTH=basicの場合に必須
DICOMWEB_TOKEN条件付きベアラートークン — DICOMWEB_AUTH=bearerの場合に必須
DICOMWEB_TIMEOUTいいえフェッチのタイムアウト時間(ミリ秒)。無効にする場合は省略します。

MCPクライアントの設定

Claude Desktop

claude_desktop_config.jsonにサーバーを追加します。

{
  "mcpServers": {
    "dicomweb": {
      "command": "npx",
      "args": ["-y", "dicomweb-mcp-server"],
      "env": {
        "DICOMWEB_HOST": "https://your-dicomweb-server/dicomweb"
      }
    }
  }
}

.envファイルを使わず、すべての環境変数をenvブロックに直接指定することもできます。

VS Code(GitHub Copilot Agent Mode)

VS Codeのsettings.jsonまたはワークスペースの.vscode/mcp.jsonに追加します。

{
  "servers": {
    "dicomweb": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "dicomweb-mcp-server"],
      "env": {
        "DICOMWEB_HOST": "https://your-dicomweb-server/dicomweb"
      }
    }
  }
}
Cursor

プロジェクトルートの.cursor/mcp.json、またはグローバル設定の~/.cursor/mcp.jsonに追加します。

{
  "mcpServers": {
    "dicomweb": {
      "command": "npx",
      "args": ["-y", "dicomweb-mcp-server"],
      "env": {
        "DICOMWEB_HOST": "https://your-dicomweb-server/dicomweb"
      }
    }
  }
}

利用可能なツール

find-studies

設定済みのDICOMwebサーバー上のDICOM検査を検索します。結果は検査日順に新しいものから表示されます。

パラメーター型説明
querystringスペース区切りのkey=valueフィルター文字列(クエリ構文を参照)。すべての検査を返すには""を渡します。

プロンプトの例

  • 「患者John DoeのCT検査をすべて検索して」
  • 「2024年1月の検査を検索して」

find-series

単一の検査内のDICOMシリーズを検索します。結果はシリーズ日付順に新しいものから表示されます。

パラメーター型説明
studyInstanceUidstring検査インスタンスUID — find-studiesから取得します
querystringスペース区切りのkey=valueフィルター文字列。すべてのシリーズを返すには""を渡します。

find-instances

単一のシリーズ内にある DICOM インスタンスを検索します。結果は Instance Number の昇順で並べ替えられます。

ParameterTypeDescription
studyInstanceUidstringStudy Instance UID — find-studies で取得します
seriesInstanceUidstringSeries Instance UID — find-series で取得します
querystringスペース区切りの key=value フィルター文字列です。すべてのインスタンスを返すには "" を渡します。

find-encapsulated-pdf-reports

DOC モダリティのシリーズを検索し、Encapsulated PDF SOP Class UID(1.2.840.10008.5.1.4.1.1.104.1)で絞り込むことで、検査内のすべての Encapsulated PDF インスタンスを検索します。

ParameterTypeDescription
studyInstanceUidstringStudy Instance UID — find-studies で取得します

プロンプトの例

  • 「検査 1.2.3.4 内の PDF レポートをすべて検索してください」
  • 「この検査に Encapsulated PDF ドキュメントはありますか?」

get-encapsulated-pdf-report-text

Encapsulated PDF DICOM インスタンスを取得し、テキストコンテンツを抽出します。

ParameterTypeDescription
studyInstanceUidstringStudy Instance UID
seriesInstanceUidstringSeries Instance UID
sopInstanceUidstringSOP Instance UID — find-encapsulated-pdf-reports で取得します

注: テキスト抽出が機能するのは、検索可能な(テキストベースの)PDF のみです。埋め込みテキストレイヤーのないスキャン画像だけで構成された PDF では、テキストがほとんど、またはまったく抽出されません。そのような場合、OCR は実行されません。

プロンプトの例

  • 「SOP インスタンス 1.2.3.4.5 の PDF レポートを読んでください」
  • 「Encapsulated PDF ドキュメントには何と書かれていますか?」

find-structured-reports

SR モダリティのシリーズを検索し、既知の SR SOP Class UID で絞り込むことで、検査内のすべての Structured Report(SR)インスタンスを検索します。

ParameterTypeDescription
studyInstanceUidstringStudy Instance UID — find-studies で取得します

get-structured-report-text

Structured Report インスタンスを取得し、人が読めるテキストに変換します。

ParameterTypeDescription
studyInstanceUidstringStudy Instance UID
seriesInstanceUidstringSeries Instance UID
sopInstanceUidstringSOP Instance UID — find-structured-reports で取得します

get-instance-metadata

単一インスタンスの DICOM 属性をすべて取得し、人が読めるテキストとして整形します。ピクセルデータは取得しません。

ParameterTypeDescription
studyInstanceUidstringStudy Instance UID
seriesInstanceUidstringSeries Instance UID
sopInstanceUidstringSOP Instance UID — find-instances で取得します

render-instance-frame

DICOM インスタンスから指定したフレームをレンダリングし、インライン画像(JPEG または PNG)として返します。

ParameterTypeDescription
studyInstanceUidstringStudy Instance UID
seriesInstanceUidstringSeries Instance UID
sopInstanceUidstringSOP Instance UID — find-instances で取得します
frameinteger1 始まりのフレームインデックスです(単一フレームのインスタンスでは 1 を使用します)
outputFormatenumimage/jpeg または image/png

プロンプトの例

  • 「SOP インスタンス 1.2.3.4.5 の最初のフレームを JPEG で表示してください」

クエリ構文

検索ツールが受け付ける query パラメーターは、スペース区切りの key=value ペアのリストです。

キーの形式

FormatExample
DICOM キーワード名PatientName=DOE*
8 桁の 16 進数タグ00100020=12345

特殊キー

KeyDescription
limit=N返す結果の最大数
offset=Nページネーション用に先頭から N 件をスキップします
fuzzymatching=trueあいまい(音声)名前照合を有効にします
includefield=all利用可能な DICOM 属性をすべて要求します

例

PatientName=DOE*
StudyDate=20240101-20241231 ModalitiesInStudy=CT
00100020=ABC123 limit=10
fuzzymatching=true PatientName=Smith

DICOMweb サーバーが許可する場合、文字列値ではワイルドカード * を使用できます。

一般的なワークフロー

MCP サーバーとの自然な会話の流れは次のとおりです。

  1. 検査を検索する — 患者名または日付範囲を指定して find-studies を実行します。
  2. シリーズを参照する — 手順 1 で返された Study Instance UID を指定して find-series を実行します。
  3. インスタンスを一覧表示する — 手順 1~2 の Study UID と Series UID を指定して find-instances を実行します。
  4. 確認またはレンダリングする — DICOM 属性を確認するには get-instance-metadata を、ピクセルデータを表示するには render-instance-frame を実行します。
  5. SR レポートを読む — SR 文書には find-structured-reports を実行してから get-structured-report-text を実行します。
  6. PDF レポートを読む — Encapsulated PDF 文書には find-encapsulated-pdf-reports を実行してから get-encapsulated-pdf-report-text を実行します。

ライセンス

dicomweb-mcp-server は MIT License の下で公開されています。

dicomweb-mcp-server MCP サーバー

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。