mcpField
D
DICOMweb MCP Server

DICOMweb MCP Server

本地服务
github.com健康医疗41 周前更新

关于 DICOMweb MCP Server

DICOMweb MCP Server 将 AI 助手连接到符合 DICOMweb 标准的档案,面向处理医学影像数据的用户和开发者。它支持从检索检查到查看图像帧、读取报告文本的操作。

主要功能

  1. 01搜索检查、序列和实例
  2. 02使用 DICOM 查询键筛选结果
  3. 03读取实例元数据
  4. 04提取结构化报告文本
  5. 05提取可搜索 PDF 报告文本
  6. 06将图像帧渲染为 JPEG 或 PNG

适用场景

  1. 01按患者或日期查找影像检查
  2. 02在不读取像素数据时检查 DICOM 属性
  3. 03读取结构化报告或可搜索 PDF 报告
  4. 04查看指定的 DICOM 图像帧

MCP 相关

它向 MCP 客户端提供工具,通过 QIDO-RS 搜索 DICOMweb 档案,并通过 WADO-RS 获取元数据、报告文本和渲染后的图像帧。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 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 位十六进制标签(例如,PatientName=Doe* StudyDate=20200101-20201231 ModalitiesInStudy=CT 00100020=12345)。特殊键:fuzzymatching=true、limit=N、offset=N。传入空字符串可返回所有检查。

详细介绍

NPM 版本 NPM 下载量 构建 MIT 许可证 dicomweb-mcp-server MCP 服务 MCP ServerList 上的 dicomweb-mcp-server

dicomweb-mcp-server

一个符合 Model Context Protocol (MCP) 的 MCP 服务,可向 AI 助手提供 DICOMweb 兼容的 DICOM 归档。任何支持 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

配置

创建一个 .env 文件,填写 DICOMweb 服务的连接详情。将该文件放在运行服务的位置旁边(或放在你为 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有条件Bearer 令牌——当 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 升序排列。

参数类型描述
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 实例。

参数类型描述
studyInstanceUidstringStudy Instance UID — 从 find-studies 获取

提示词示例

  • “查找研究 1.2.3.4 中的所有 PDF 报告”
  • “此研究中是否有任何封装的 PDF 文档?”

get-encapsulated-pdf-report-text

检索 Encapsulated PDF DICOM 实例并提取其文本内容。

参数类型描述
studyInstanceUidstringStudy Instance UID
seriesInstanceUidstringSeries Instance UID
sopInstanceUidstringSOP Instance UID — 从 find-encapsulated-pdf-reports 获取

注意: 文本提取仅适用于可搜索(基于文本)的 PDF。完全由扫描页面图像组成且不含嵌入文本层的 PDF,提取出的文本很少或没有文本。在这些情况下,不会执行 OCR。

提示词示例

  • “读取 SOP 实例 1.2.3.4.5 的 PDF 报告”
  • “封装的 PDF 文档写了什么?”

find-structured-reports

通过查找 SR 模态序列并按已知的 SR SOP Class UID 筛选,查找研究中的所有结构化报告(SR)实例。

参数类型描述
studyInstanceUidstringStudy Instance UID — 从 find-studies 获取

get-structured-report-text

检索结构化报告实例并将其转换为便于阅读的文本。

参数类型描述
studyInstanceUidstringStudy Instance UID
seriesInstanceUidstringSeries Instance UID
sopInstanceUidstringSOP Instance UID — 从 find-structured-reports 获取

get-instance-metadata

检索单个实例的所有 DICOM 属性,并将其格式化为便于阅读的文本。不检索像素数据。

参数类型描述
studyInstanceUidstringStudy Instance UID
seriesInstanceUidstringSeries Instance UID
sopInstanceUidstringSOP Instance UID — 从 find-instances 获取

render-instance-frame

渲染 DICOM 实例中的指定帧,并以嵌入式图像(JPEG 或 PNG)形式返回。

参数类型描述
studyInstanceUidstringStudy Instance UID
seriesInstanceUidstringSeries Instance UID
sopInstanceUidstringSOP Instance UID — 从 find-instances 获取
frameinteger从 1 开始计数的帧索引(对于单帧实例,使用 1)
outputFormatenumimage/jpeg 或 image/png

提示词示例

  • “将 SOP 实例 1.2.3.4.5 的第一帧显示为 JPEG”

查询语法

搜索工具接受的 query 参数是以空格分隔的 key=value 键值对列表。

键格式

格式示例
DICOM 关键字名称PatientName=DOE*
8 位十六进制标签00100020=12345

特殊键

键描述
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. 浏览序列 — 使用 find-series 和步骤 1 返回的 Study Instance UID 进行搜索。
  3. 列出实例 — 使用 find-instances 和步骤 1–2 中的 Study 和 Series UID 进行搜索。
  4. 检查或渲染 — 使用 get-instance-metadata 查看 DICOM 属性,或使用 render-instance-frame 查看像素数据。
  5. 读取 SR 报告 — 使用 find-structured-reports 查找 SR 文档,然后使用 get-structured-report-text 读取。
  6. 读取 PDF 报告 — 使用 find-encapsulated-pdf-reports 查找 Encapsulated PDF 文档,然后使用 get-encapsulated-pdf-report-text 读取。

许可证

dicomweb-mcp-server 基于 MIT 许可证发布。

dicomweb-mcp-server MCP server

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。