hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Integrations
dicom-mcp:DICOM 模型上下文协议服务器
此 repo 是博客文章的一部分: Agentic Healthcare LLMs
概述
用于 DICOM(医学数字成像与通信)交互的模型上下文协议服务器。该服务器提供查询和与 DICOM 服务器交互的工具,使大型语言模型能够访问和分析医学成像元数据。
dicom-mcp 允许 AI 助手使用标准 DICOM 网络协议从 DICOM 服务器查询患者信息、研究、系列和实例。它还支持从以 DICOM 格式存储的封装 PDF 文档中提取文本,从而可以分析临床报告。它基于 pynetdicom 构建,并遵循模型上下文协议 (MCP) 规范。
工具
list_dicom_nodes
- 列出所有配置的 DICOM 节点和调用 AE 标题
- 输入:无
- 返回:当前节点、可用节点、当前调用 AE 标题和可用调用 AE 标题
switch_dicom_node
- 切换到不同的配置 DICOM 节点
- 输入:
node_name
(字符串):要切换到的节点的名称
- 返回:成功消息
switch_calling_aet
- 切换到不同的配置调用 AE 标题
- 输入:
aet_name
(字符串):要切换到的调用 AE 标题的名称
- 返回:成功消息
verify_connection
- 使用 C-ECHO 测试与配置的 DICOM 节点的连接
- 输入:无
- 返回:成功或失败的详细信息
query_patients
- 搜索符合指定条件的患者
- 输入:
name_pattern
(字符串,可选):患者姓名模式(可以包含通配符)patient_id
(字符串,可选):患者 IDbirth_date
(字符串,可选):患者出生日期(YYYYMMDD)attribute_preset
(字符串,可选):预设细节级别(最低、标准、扩展)additional_attributes
(string[],可选):要包含的其他 DICOM 属性exclude_attributes
(string[],可选):要排除的 DICOM 属性
- 返回:匹配的患者记录数组
query_studies
- 搜索符合指定条件的研究
- 输入:
patient_id
(字符串,可选):患者 IDstudy_date
(字符串,可选):学习日期或范围(YYYYMMDD 或 YYYYMMDD-YYYYMMDD)modality_in_study
(字符串,可选):研究中的模式study_description
(字符串,可选):研究描述(可以包含通配符)accession_number
(字符串,可选):接入号study_instance_uid
(字符串,可选):研究实例 UIDattribute_preset
(字符串,可选):预设详细程度additional_attributes
(string[],可选):要包含的其他 DICOM 属性exclude_attributes
(string[],可选):要排除的 DICOM 属性
- 返回:匹配的学习记录数组
query_series
- 在研究中搜索系列
- 输入:
study_instance_uid
(字符串):研究实例 UID(必需)modality
(字符串,可选):模态(例如,“CT”,“MR”)series_number
(字符串,可选):系列号series_description
(字符串,可选):系列描述series_instance_uid
(字符串,可选):系列实例 UIDattribute_preset
(字符串,可选):预设详细程度additional_attributes
(string[],可选):要包含的其他 DICOM 属性exclude_attributes
(string[],可选):要排除的 DICOM 属性
- 返回:匹配系列记录的数组
query_instances
- 搜索系列中的实例
- 输入:
series_instance_uid
(字符串):系列实例 UID(必需)instance_number
(字符串,可选):实例编号sop_instance_uid
(字符串,可选):SOP 实例 UIDattribute_preset
(字符串,可选):预设详细程度additional_attributes
(string[],可选):要包含的其他 DICOM 属性exclude_attributes
(string[],可选):要排除的 DICOM 属性
- 返回:匹配实例记录的数组
get_attribute_presets
- 列出查询可用的属性预设
- 输入:无
- 返回:按级别列出的可用预设及其属性的词典
retrieve_instance
- 检索特定的 DICOM 实例并将其保存到本地文件系统
- 输入:
study_instance_uid
(字符串):研究实例 UIDseries_instance_uid
(字符串):系列实例 UIDsop_instance_uid
(字符串):SOP 实例 UIDoutput_directory
(字符串,可选):保存检索到的实例的目录(默认值:“./retrieved_files”)
- 返回:包含有关检索操作的信息的字典
extract_pdf_text_from_dicom
- 检索包含封装 PDF 的 DICOM 实例并提取其文本内容
- 输入:
study_instance_uid
(字符串):研究实例 UIDseries_instance_uid
(字符串):系列实例 UIDsop_instance_uid
(字符串):SOP 实例 UID
- 返回:包含提取的文本信息和状态的字典
安装
先决条件
- Python 3.12 或更高版本
- 要连接的 DICOM 服务器(例如 Orthanc、dcm4chee 等)
使用 pip
通过 pip 安装:
配置
dicom-mcp 需要一个 YAML 配置文件,用于定义 DICOM 节点和调用 AE 标题。请创建一个具有以下结构的配置文件:
用法
命令行
使用脚本入口点运行服务器:
如果使用 uv:
使用 Claude Desktop 进行配置
将其添加到您的claude_desktop_config.json
中:
与 Zed 一起使用
添加到您的 Zed settings.json:
示例查询
列出可用的 DICOM 节点
切换到不同的节点
切换到不同的调用 AE 标题
验证连接
搜索患者
搜索研究
搜索研究中的系列
搜索系列中的实例
检索 DICOM 实例
从 DICOM 封装的 PDF 中提取文本
调试
您可以使用 MCP 检查器来调试服务器:
发展
设置开发环境
- 克隆存储库:Copy
- 创建虚拟环境:Copy
- 安装依赖项:Copy
运行测试
测试需要运行 Orthanc 服务器。你可以使用 Docker 启动一个:
然后运行测试:
要测试 PDF 提取功能:
项目结构
src/dicom_mcp/
:主包__init__.py
:包初始化__main__.py
:入口点server.py
:MCP 服务器实现dicom_client.py
:DICOM客户端实现attributes.py
:DICOM 属性预设config.py
:使用 Pydantic 进行配置管理
执照
该项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅 LICENSE 文件。
致谢
- 基于pynetdicom构建
- 遵循模型上下文协议规范
- 使用PyPDF2进行 PDF 文本提取
This server cannot be installed
使 AI 助手能够查询和分析来自 DICOM 服务器的医学成像元数据,包括患者信息、研究、系列和实例,以及从封装的 PDF 文档中提取文本。
Appeared in Searches
- A tool or method for searching PDF documents
- Research on Patient-Disease-Gene-Drug Relationships and Pharmacogenomics Using Digital Imaging Data
- Developing a FHIR-Based Digital Health Application with EHR, PHR, and Phenotyping Frameworks
- A search for information about PDFs or related content
- A server for finding botanic data