dicomweb-mcp-server 是一个 Model Context Protocol(MCP)服务器,用于把符合 DICOMweb 标准的 DICOM 归档暴露给 AI 助手。任何具备 MCP 能力的客户端都可以通过自然语言搜索检查(studies)、序列(series)和实例(instances),检查元数据,读取结构化报告(Structured Reports)与封装式 PDF 报告(Encapsulated PDF Reports),以及渲染图像帧。
使用前提:
- Node.js 20 或更高版本。
- 一个正在运行的 DICOMweb 服务器,支持 QIDO-RS 和 WADO-RS(例如 orthanc)。
- DICOMweb 服务器必须支持文档中列出的相关端点。
安装与运行: 推荐使用 npx 方式,无需本地安装。服务器会从脚本所在目录读取 .env 文件中的配置。需要创建一个 .env 文件,填入所连接 DICOMweb 服务器的连接信息,文件放在服务器执行位置旁边,或放在 MCP 客户端中配置的工作目录。
MCP 客户端配置: 可将服务器加入 claude_desktop_config.json,也可以在 env 块中直接提供所有环境变量,而不使用 .env 文件。VS Code(GitHub Copilot Agent Mode)可添加到 VS Code 的 settings.json 或工作区 .vscode/mcp.json。Cursor 可添加到项目根目录的 .cursor/mcp.json,或全局的 ~/.cursor/mcp.json。
可用工具:
- 搜索 DICOM 检查(studies):在配置的 DICOMweb 服务器上搜索检查,结果按检查日期排序,最新在前。示例提示:“Find all CT studies for patient John Doe”“Search for studies from January 2024”。
- 搜索 DICOM 序列(series):在单个检查内搜索序列,结果按序列日期排序,最新在前。
- 搜索 DICOM 实例(instances):在单个序列内搜索实例,结果按 Instance Number 升序排列。
- find-encapsulated-pdf-reports:通过查找 DOC 模态序列并按封装 PDF SOP Class UID(1.2.840.10008.5.1.4.1.1.104.1)过滤,找出检查中所有封装 PDF 实例。示例提示:“Find all PDF reports in study 1.2.3.4”“Are there any encapsulated PDF documents in this study?”。
- get-encapsulated-pdf-report-text:获取封装 PDF 的 DICOM 实例并提取其文本内容。注意:文本提取仅适用于可搜索(基于文本)的 PDF;完全由扫描页面图像组成、没有嵌入文本层的 PDF 将得到很少或没有文本,这种情况下不会执行 OCR。示例提示:“Read the PDF report for SOP instance 1.2.3.4.5”“What does the encapsulated PDF document say?”。
- find-structured-reports:通过查找 SR 模态序列并按已知的 SR SOP Class UID 过滤,找出检查中所有结构化报告(SR)实例。
- get-structured-report-text:获取结构化报告实例并将其转换为人类可读的文本。
- get-instance-metadata:以人类可读文本检索并格式化单个实例的全部 DICOM 属性,不检索像素数据。
- render-instance-frame:渲染 DICOM 实例中的指定帧,并以内嵌图像(JPEG 或 PNG)返回。示例提示:“Show me the first frame of SOP instance 1.2.3.4.5 as a JPEG”。
查询参数说明: 搜索工具接受的 query 参数是以空格分隔的 key=value 列表。在 DICOMweb 服务器允许的情况下,字符串值中支持通配符 *。
典型工作流: 与 MCP 服务器的自然对话序列通常如下:
- 搜索检查——使用 find-studies,配合患者姓名或日期范围。
- 浏览序列——使用第 1 步返回的 Study Instance UID 调用 find-series。
- 列出实例——使用第 1–2 步的 Study 和 Series UID 调用 find-instances。
- 检查或渲染——用 get-instance-metadata 查看 DICOM 属性,或用 render-instance-frame 查看像素数据。
- 读取 SR 报告——先 find-structured-reports,再 get-structured-report-text 获取 SR 文档。
- 读取 PDF 报告——先 find-encapsulated-pdf-reports,再 get-encapsulated-pdf-report-text 获取封装 PDF 文档。
许可证:dicomweb-mcp-server 基于 MIT License 发布。