项目简介
DICOM MCP Server 是一个实现了 Model Context Protocol (MCP) 的服务器,专注于医学影像领域。它允许大型语言模型(LLM)通过标准化的 MCP 协议,安全、高效地访问和查询 DICOM (医学数字成像和通信) 服务器中的医学影像数据和元数据。此服务器提供了一系列工具,使 LLM 能够理解和利用医学影像信息,从而在医疗 AI 应用中发挥更大的作用。
主要功能点
- DICOM 节点管理: 支持配置和管理多个 DICOM 服务器节点,允许 LLM 客户端切换连接不同的 DICOM 资源。
- 调用 AE 标题管理: 支持配置和切换不同的 DICOM 调用应用实体标题 (Calling AE Title),以适应不同的 DICOM 通信场景。
- 连接验证: 提供工具验证与配置的 DICOM 节点的连接性,确保服务可用。
- 患者信息查询: 允许 LLM 客户端根据多种条件(如姓名、ID、出生日期等)查询患者信息。
- 研究信息查询: 支持根据患者 ID、研究日期、影像模态等条件查询医学研究 (Study) 信息。
- 序列信息查询: 支持在特定研究下,根据模态、序列号等条件查询影像序列 (Series) 信息。
- 实例信息查询: 支持在特定序列下,根据实例号等条件查询影像实例 (Instance) 信息。
- 属性预设: 提供多种预设的 DICOM 属性级别(minimal, standard, extended),方便用户控制查询结果的详细程度。
- 自定义属性: 允许用户在查询时指定额外的 DICOM 属性,或排除不需要的属性,以定制化查询结果。
安装步骤
- 环境准备: 确保已安装 Python 3.12 或更高版本,并可以访问目标 DICOM 服务器。
- 安装 dicom-mcp: 使用 pip 包管理器进行安装:
pip install dicom-mcp
服务器配置
DICOM MCP Server 需要一个 YAML 配置文件来定义 DICOM 节点和调用 AE 标题等信息。以下是一个配置示例,您需要根据您的 DICOM 服务器环境修改配置文件路径。
MCP 客户端配置 (JSON 格式)
为了让 MCP 客户端(例如 Claude Desktop, Zed 等)连接到 DICOM MCP Server,您需要在客户端的配置文件中添加服务器配置信息。以下是针对不同客户端的配置示例:
Claude Desktop 配置示例 (claude_desktop_config.json):
"mcpServers": { "dicom": { "command": "uv", "args": ["--directory", "/path/to/dicom-mcp", "run", "dicom-mcp", "/path/to/configuration.yaml"] } }
Zed 配置示例 (settings.json):
"context_servers": [ "dicom-mcp": { "command": { "path": "uv", "args": ["--directory", "/path/to/dicom-mcp", "run", "dicom-mcp", "/path/to/configuration.yaml"] } } ],
配置参数说明:
- '"server name":' 您可以自定义服务器名称,例如 "dicom"。
- '"command":' 启动 DICOM MCP Server 的命令,通常是您安装 Python 包后的可执行脚本 'dicom-mcp'。
- '"args":' 传递给 'dicom-mcp' 命令的参数列表:
- '"--directory", "/path/to/dicom-mcp"': 如果您的配置文件不在当前工作目录,需要指定 dicom-mcp 包所在的目录。通常在安装后可以省略此参数。
- '"run", "dicom-mcp"': 固定参数,用于运行 dicom-mcp 服务。
- '"/path/to/configuration.yaml"': 请务必替换为您的实际配置文件路径,指向您创建的 YAML 配置文件。
YAML 配置文件 (configuration.yaml 示例):
您需要创建类似以下的 YAML 配置文件,并根据您的 DICOM 服务器信息进行修改。
# DICOM 节点配置 nodes: orthanc: # 节点名称,可以自定义 host: "localhost" # DICOM 服务器主机名或 IP 地址 port: 4242 # DICOM 服务器端口 ae_title: "ORTHANC" # DICOM 服务器应用实体标题 (AE Title) description: "本地 Orthanc DICOM 服务器" # 节点描述,可选 clinical: # 另一个 DICOM 节点配置示例 host: "pacs.hospital.org" port: 11112 ae_title: "CLIN_PACS" description: "临床 PACS 服务器" # 本地调用 AE 标题配置 calling_aets: default: # 调用 AE 标题名称,可以自定义 ae_title: "MCPSCU" # 本地 DICOM 客户端的应用实体标题 (AE Title) description: "默认调用 AE 标题" # 标题描述,可选 modality: # 另一个调用 AE 标题配置示例 ae_title: "MODALITY" description: "模拟模态设备" # 当前选定的节点 current_node: "orthanc" # 默认使用的 DICOM 节点名称,需与 nodes 下的节点名称一致 # 当前选定的调用 AE 标题 current_calling_aet: "default" # 默认使用的调用 AE 标题名称,需与 calling_aets 下的标题名称一致
基本使用方法
启动 DICOM MCP Server 后,您可以使用 MCP 客户端(如 Claude Desktop, Zed 等)通过工具调用来与 DICOM 服务器进行交互。
常用工具调用示例:
-
列出可用 DICOM 节点:
list_dicom_nodes() -
切换 DICOM 节点:
switch_dicom_node(node_name="clinical") -
查询患者信息 (按姓名模式):
patients = query_patients(name_pattern="SMITH*") -
查询研究信息 (按患者 ID 和研究日期范围):
studies = query_studies(patient_id="12345678", study_date="20230101-20231231") -
查询序列信息 (按研究 UID 和模态):
series = query_series(study_instance_uid="1.2.840.10008.5.1.4.1.1.2.1.1", modality="CT") -
查询实例信息 (按序列 UID):
instances = query_instances(series_instance_uid="1.2.840.10008.5.1.4.1.1.2.1.2")
更多工具和参数的详细信息,请参考仓库的 README 文档或工具的 docstring。
信息
分类
数据库与文件