关于 DICOM MCP Server for Medical Imaging Systems 🏥
dicom-mcp 是一个 MCP 服务,让 AI 助手能够查询、读取和转发 DICOM 服务器(如 PACS、VNA)上的数据。它面向医学影像相关的开发与研究场景,并明确说明不用于临床及含患者敏感数据的环境。
主要功能
- 01按患者、检查、序列、实例查询元数据
- 02提取封装在 DICOM 中的 PDF 报告文本
- 03通过 C-MOVE 将序列或检查发送到其他节点
- 04管理多个 DICOM 节点并测试连接(C-ECHO)
- 05提供属性详细程度预设(minimal、standard、extended)
适用场景
- 01查询患者过往 CT 报告并提取其中的文字内容
- 02将影像序列发送到 AI 分割或分类服务进行处理
- 03在本地 Orthanc 测试环境中开发和验证 DICOM 工作流
MCP 相关
该项目作为 MCP 服务运行,向 MCP 客户端暴露查询、PDF 文本提取、影像转发、节点管理等工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
面向医学影像系统的 DICOM MCP 服务 🏥
dicom-mcp 服务可让 AI 助手查询、读取和传输 DICOM 服务(PACS、VNA 等)上的数据。
---------------------------------------------------------------------
🧑⚕️ 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³"
---------------------------------------------------------------------
✨ 核心功能
dicom-mcp 提供以下工具:
- 🔍 查询元数据:根据各种条件搜索患者、检查、序列和实例。
- 📄 读取 DICOM 报告(PDF):检索包含封装 PDF(例如临床报告)的 DICOM 实例,并提取文本内容。
- ➡️ 发送 DICOM 图像:将序列或检查发送到其他 DICOM 目标,例如用于图像分割、分类等的 AI 端点。
- ⚙️ 实用工具:管理连接并了解查询选项。
🚀 快速开始
📥 安装
使用 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 需要一个 YAML 配置文件(config.yaml 或类似文件),用于定义 DICOM 节点和调用 AE 标题。可调整配置,也可保持原样以兼容示例 ORTHANC 服务。
nodes:
main:
host: "localhost"
port: 4242
ae_title: "ORTHANC"
description: "Local Orthanc DICOM server"
current_node: "main"
calling_aet: "MCPSCU"
警告
DICOM-MCP 并非用于临床用途,不应连接到医院实时数据库或包含患者敏感数据的数据库。这样做可能导致患者数据丢失,也可能导致患者数据泄露到互联网上。DICOM-MCP 可与本地托管的开放权重 LLM 搭配使用,从而充分保护数据隐私。
(可选)示例 ORTHANC 服务
如果没有可用的 DICOM 服务,可以使用 Docker 运行本地 ORTHANC 服务:
克隆仓库并安装测试依赖 pip install -e ".[dev]
cd tests
docker compose up -d
cd ..
pytest # uploads dummy pdf data to ORTHANC server
UI 位于 http://localhost:8042
🔌 MCP 集成
添加到客户端配置中(例如 claude_desktop_config.json):
{
"mcpServers": {
"dicom": {
"command": "uvx",
"args": ["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 数据交互。
🔍 查询元数据
query_patients:根据姓名、ID 或出生日期等条件搜索患者。query_studies:根据患者 ID、日期、模态、描述、登记号或 Study UID 查找检查。query_series:根据模态、序列编号/描述或 Series UID,在指定检查中查找序列。query_instances:根据实例编号或 SOP Instance 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:列出元数据查询结果可用的详细程度级别(最简、标准、扩展)。
示例交互
这些工具可以串联起来,回答复杂问题:
📈 贡献
运行测试
测试需要运行中的 Orthanc DICOM 服务。你可以使用 Docker:
# Navigate to the directory containing docker-compose.yml (e.g., tests/)
cd tests
docker-compose up -d
使用 pytest 运行测试:
# From the project root directory
pytest
停止 Orthanc 容器:
cd tests
docker-compose down
调试
使用 MCP Inspector 调试服务通信:
npx @modelcontextprotocol/inspector uv run dicom-mcp /path/to/your_config.yaml --transport stdio
🙏 致谢
- 基于 pynetdicom 构建
- 使用 PyPDF2 提取 PDF 文本
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。