返回市场
dicom-mcp服务器

dicom-mcp服务器

作者:ChristianHinge74 星标更新:2025-05-06

项目介绍

医学影像系统中的DICOM MCP服务器 🏥

MIT 许可证 Python 版本 PyPI 版本 PyPI 下载量

dicom-mcp服务器使AI助手能够查询、读取和移动DICOM服务器(如PACS、VNA等)上的数据。

<div align="center">

🤝 贡献 • 📝 报告错误 • 📝 博客文章 1

</div>
---------------------------------------------------------------------
🧑‍⚕️ 用户: "John Doe之前的CT报告中有什么重要的发现吗?"

🧠 LLM → ⚙️ 工具:
   query_patients → query_studies → query_series → extract_pdf_text_from_dicom

💬 LLM 响应: "2025年3月26日的报告提到有脾肿大的病史(脾脏增大)"

🧑‍⚕️ 用户: "他上次扫描和今天的扫描中脾脏的体积是多少?"

🧠 LLM → ⚙️ 工具:
   (query_studies → query_series → move_series → query_series → extract_pdf_text_from_dicom) x2
   (move_series工具将最新的CT发送到DICOM分割节点,该节点返回体积PDF报告)

💬 LLM 响应: "去年2024年3月26日:412cm³,今天22025年4月10日:350cm³"
---------------------------------------------------------------------

✨ 核心能力

dicom-mcp提供了以下工具:

  • 🔍 查询元数据:根据各种标准搜索患者、研究、系列和实例。
  • 📄 读取DICOM报告(PDF):检索包含封装PDF(例如临床报告)的DICOM实例,并提取文本内容。
  • ➡️ 发送DICOM图像:将系列或研究发送到其他DICOM目的地,例如用于图像分割、分类等的AI端点。
  • ⚙️ 实用工具:管理连接并理解查询选项。

🚀 快速开始

📥 安装

使用uv或pip安装:

uv tool install dicom-mcp

或者通过克隆仓库:

# 克隆并设置开发环境
git clone https://github.com/ChristianHinge/dicom-mcp
cd dicom mcp

# 创建并激活虚拟环境
uv venv
source .venv/bin/activate

# 使用测试依赖项安装
uv pip install -e ".[dev]"

⚙️ 配置

dicom-mcp需要一个YAML配置文件(如config.yaml),定义DICOM节点和调用AE标题。可以调整配置以与示例ORTHANC服务器兼容。

nodes:
  main:
    host: "localhost"
    port: 4242 
    ae_title: "ORTHANC"
    description: "本地Orthanc DICOM服务器"

current_node: "main"
calling_aet: "MCPSCU" 

[!WARNING] DICOM-MCP不适用于临床用途,不应连接到实时医院数据库或包含患者敏感数据的数据库。这样做可能导致患者数据丢失,并泄露患者数据到互联网。DICOM-MCP可以与本地托管的开放权重LLM一起使用,以确保完全的数据隐私。

(可选)示例ORTHANC服务器

如果没有可用的DICOM服务器,可以使用Docker运行本地ORTHANC服务器:

克隆仓库并安装测试依赖项 pip install -e ".[dev]

cd tests
docker ocmpose up -d
cd ..
pytest # 将模拟pdf数据上传到ORTHANC服务器

UI在 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数据交互。

🔍 查询元数据

  • query_patients:基于姓名、ID或出生日期等标准搜索患者。
  • query_studies:使用患者ID、日期、模式、描述、访问号或Study UID查找研究。
  • query_series:使用模式、系列编号/描述或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:列出元数据查询结果的可用详细级别(最小、标准、扩展)。

示例交互

这些工具可以串联起来回答复杂的问题:

<div align="center"> <img src="images/example.png" alt="我的精彩图表" width="700"> </div>

📈 贡献

运行测试

测试需要运行的Orthanc DICOM服务器。可以使用Docker:

# 导航到包含docker-compose.yml的目录(例如tests/)
cd tests
docker-compose up -d

使用pytest运行测试:

# 从项目根目录
pytest

停止Orthanc容器:

cd tests
docker-compose down

调试

使用MCP Inspector调试服务器通信:

npx @modelcontextprotocol/inspector uv run dicom-mcp /path/to/your_config.yaml --transport stdio

🙏 致谢