MCP DICOM服务器
用于处理DICOM(医学数字成像和通信)文件的模型上下文协议(MCP)服务器。该服务器为AI助手提供了读取、分析、操作和转换医学成像文件的工具。
特性
- 元数据抽取:从DICOM文件中提取患者信息、研究细节和图像参数
- 标签管理:查看和搜索所有DICOM标签及其值
- 图像转换:通过适当的窗口/级别调整将DICOM图像转换为PNG格式
- 多框架支撑:从多帧DICOM文件中提取特定帧
- 匿名化:从DICOM文件中删除患者识别信息
- 批处理:处理目录中的多个DICOM文件
- 结构化输出:以结构化格式返回带有推理、项目数组和文本的数据\[\[内存:2966621\]\]
安装
- 克隆存储库:
git clone https://github.com/berkdurmus/mcp-dicom-server.git
cd mcp-dicom-server- 安装依赖项:
npm install- 构建TypeScript代码:
npm run build用法
运行服务器
MCP DICOM服务器可以在stdio模式下运行,以便与AI助手集成:
npm start对于自动重新加载的开发:
npm run dev可用工具
服务器提供以下工具:
1. dicom_extract_metadata
从DICOM文件中提取全面的元数据,包括患者信息、研究细节和图像参数。
参数:
filePath(string):DICOM文件的路径
退货: 患者姓名、ID、研究日期/时间、模态、图像尺寸、像素间距、窗口设置等。
2. dicom_get_all_tags
从文件中检索所有DICOM标签及其值。
参数:
filePath(string):DICOM文件的路径
退货: 所有DICOM标签及其值和描述的数组。
3. dicom_search_tags
按关键字搜索特定的DICOM标签。
参数:
filePath(string):DICOM文件的路径keyword(string):标签中要搜索的关键字
退货: 匹配DICOM标签的过滤阵列。
4. dicom_convert_to_png
通过适当的窗口/级别调整将DICOM图像转换为PNG格式。
参数:
dicomPath(string):输入DICOM文件的路径outputPath(string):输出PNG文件的路径
退货: 输出文件路径的成功状态。
5. dicom_extract_frame
从多帧DICOM文件中提取特定帧。
参数:
dicomPath(string):多帧DICOM文件的路径frameNumber(number):要提取的帧号(从0开始)outputPath(string):输出PNG文件的路径
退货: 已提取帧详细信息的成功状态。
6. dicom_anonymize
通过删除患者标识信息来匿名DICOM文件。
参数:
inputPath(string):输入DICOM文件的路径outputPath(string):匿名DICOM文件的路径
退货: 匿名文件路径的成功状态。
7. dicom_list_files
递归列出目录中的所有DICOM文件。
参数:
directory(string):用于搜索DICOM文件的目录路径
退货: 找到DICOM文件路径数组。
8. dicom_batch_extract_metadata
从目录中的所有DICOM文件中提取元数据。
参数:
directory(string):包含DICOM文件的目录路径
退货: 每个文件的元数据提取结果数组。
与Claude Desktop集成
要将此MCP服务器与Claude Desktop一起使用,请将以下内容添加到您的Claude Desktop配置中:
- 打开克劳德桌面设置
- 导航到开发人员->MCP设置
- 添加服务器配置:
{
"mcpServers": {
"dicom": {
"command": "node",
"args": ["/path/to/mcp-dicom-server/dist/index.js"],
"env": {
"LOG_LEVEL": "info"
}
}
}
}项目结构
mcp-dicom-server/
├── src/
│ ├── index.ts # MCP server implementation
│ └── services/
│ └── dicom.service.ts # DICOM processing service [[memory:2966615]]
├── dist/ # Compiled JavaScript output
├── package.json # Project dependencies
├── tsconfig.json # TypeScript configuration
└── README.md # This file输出格式
所有工具都按照以下格式返回结构化输出\[\[memory:2966621\]\]:
{
"reasoning": "Explanation of what was done",
"items": [
// Array of result items
],
"text": "Human-readable summary"
}依赖项
- @模型上下文协议/sdk:用于服务器实现的MCP SDK
- dicom解析器:低级DICOM文件解析
- dcmjs:高级DICOM操作
- 锋利:用于PNG转换的图像处理
- 皮诺:结构化日志记录
环境变量
LOG_LEVEL:设置日志记录级别(调试、信息、警告、错误)
安全考虑
- 匿名化功能会删除常见的患者标识符,但可能不会删除所有PHI
- 在共享DICOM文件之前,始终验证匿名化结果
- 处理来自不可信来源的文件时要小心
- 服务器仅在本地文件上运行,不公开网络端点
局限性
- PNG转换应用基本的窗口/级别调整,可能无法完全复制DICOM查看器渲染
- 多帧提取目前支持基本帧提取
- 某些专有DICOM标签可能不完全支持
贡献
欢迎投稿!请提交pull请求或bug和功能请求的开放问题。
许可证
麻省理工学院
