DICOM MCP服务器-医学成像AI集成🏥
   
此版本使用 MCP堵塞 专门用于开发、测试和LLM集成。请注意,如果您使用的是Cursor IDE或其他IDE,则可以在某些情况下配置IDE以访问服务器,例如 ~/.cursor/mcp.json等等。看 了解详情。
使AI助手能够使用标准模型上下文协议(MCP)在PACS上查询、读取和移动数据,Orthanc作为参考实现。您可以使用自己的APIKEY(例如用于ChatGPT),并在本地运行它,以使用ChatGPT作为LLM进行开发。还集成了kubectl和迷你RIS数据库。
✨ 核心能力
dicom-mcp 提供工具以:
- 🔍 查询DICOM:使用各种标准搜索患者、研究、系列和实例
- 📄 阅读DICOM报告(PDF):检索包含封装PDF的DICOM实例(如临床报告)并提取文本内容
- 📄 创建放射学报告:生成PDF格式的放射学报告并附加到PACS
- ➡️ 发送DICOM图像:将系列或研究发送到其他DICOM目的地,例如用于图像分割、分类等的AI端点。
- ⚙️ Contoso集成:查询和管理Contoso资源(患者、影像研究、服务请求等)
- ⚙️ 迷你RIS:管理放射科医嘱、工作列表和报告工作流
- ⚙️ MWL/MPPS:模态工作表和模态执行程序步骤服务
- ⚙️ 公用事业:管理连接、切换服务器并了解查询选项
🚀 快速开始
📥 安装
通过克隆存储库使用pip进行安装:
# Clone and set up development environment
gh repo clone sscotti/dicom-mcp
cd dicom-mcp
# Create and activate virtual environment
python3 -m venv venv
source venv/bin/activate
# Install with dependencies
pip install -e ".[dev]"⚙️ 配置
dicom-mcp 需要一个YAML配置文件(configuration.yaml 或类似)定义DICOM节点并调用AE标题。调整配置或保持原样,以与示例Orthanc服务器兼容。
# DICOM nodes configuration
nodes:
main:
host: "localhost"
port: 4242
ae_title: "ORTHANC"
description: "Local Orthanc DICOM server (Primary)"
secondary:
host: "localhost"
port: 4243
ae_title: "ORTHANC2"
description: "Local Orthanc DICOM server (Secondary)"
current_node: "main"
calling_aet: "MCPSCU"
# FHIR server configuration (optional)
# You can configure multiple FHIR servers and switch between them
fhir_servers:
firely:
base_url: "https://server.fire.ly"
description: "Firely FHIR Test Server (public, no API key needed)"
siim:
base_url: "https://hackathon.siim.org/fhir"
api_key: "${SIIM_API_KEY}" # Set in .env file
description: "SIIM Hackathon FHIR server"
# Uncomment to use a local HAPI FHIR server
hapi_local:
base_url: "http://localhost:8080/fhir"
description: "Local HAPI FHIR server"
current_fhir: "hapi_local" # Active FHIR server: firely, siim, or hapi_local, make sure to start the local hapi fhir server before starting the MCP server
# The server will expose all DICOM tools and FHIR tools via standard MCP protocol
# Mini-RIS MySQL database configuration (optional)
mini_ris:
host: "localhost"
port: 3306
user: "orthanc_ris_app"
password: "${MINI_RIS_DB_PASSWORD}"
database: "orthanc_ris"
pool_size: 5\[!警告\] DICOM-MCP不适用于临床使用,也不应与实时医院数据库或包含患者敏感数据的数据库连接。这样做可能会导致患者数据丢失,以及患者数据泄露到互联网上。DICOM-MCP可以与本地托管的开放权重LLM一起使用,以实现完全的数据隐私。 \[!注意\] 此项目使用 MCP堵塞 用于开发、测试和LLM集成需求。这 mcp-config.example.json 文件以模板的形式提供,其中包含可以根据设置进行调整的相对路径。可以将其作为JSON导入MCPJAM以配置接口。Docker容器设置(Orthancs、kubectl、PostGres和MySQL)
docker-compose up -d
dotenv run -- pytest # uploads dummy pdf data to ORTHANC serverUI位于 https://localhost:8042 和 https://localhost:8043,请注意,仓库配置了TLS证书,因此是https。
HAPI kubectl将在 http://localhost:8080/fhir
看 Contoso服务器指南 详细的配置选项,包括Firely测试服务器和SIIM集成。
🔌 与MCP Jam一起使用(推荐)
MCP堵塞 是测试和探索DICOM MCP服务器的替代工具。它提供了一个web界面 访客模式 无需任何设置即可立即进行测试。对于自包含的解决方案,请使用上面的自定义Web UI!
备注:MCP Jam Guest Mode可能对某些功能(如资源面板)有限制。资源仍然可以通过list_saved_resources和get_saved_resource在访客模式下工作的工具。要获得完整的资源面板支持,您可能需要使用一个帐户。
启动MCP堵塞:
# Navigate to your dicom-mcp directory
cd /path/to/dicom-mcp
# Activate your virtual environment
source venv/bin/activate
# Start MCP Jam (use latest or beta)
npx -y @mcpjam/inspector@latest
# or
npx -y @mcpjam/inspector@beta在MCP Jam中设置服务器:
- 点击“访客模式” 在MCP Jam界面中(无需帐户)
- 手动添加服务器 使用这些设置,或导入
mcp-config.example.json作为模板:
- 服务器名称: DICOM MCP - 命令: {path_to_venv}/bin/python (例如。, venv/bin/python 或绝对路径) - 参数: -m dicom_mcp configuration.yaml --transport stdio - 环境变量: - 姓名: PYTHONPATH - 价值: src (相对)或绝对路径 src 目录 - 工作目录:指向dicom mcp项目根目录的路径
示例配置(macOS/Linux):
- 命令:
/absolute/path/to/dicom-mcp/venv/bin/python - 参数:
-m dicom_mcp configuration.yaml --transport stdio - 环境变量:
PYTHONPATH=/absolute/path/to/dicom-mcp/src
MCP干扰接口:
在MCP Jam中配置LLM:
- 去 设置 标签
- 为LLM提供程序添加API密钥:
- 开放人工智能 -适用于GPT-4、GPT-4o、o1等。 - Anthropic -克劳德3.5十四行诗、克劳德·奥普等。 - 谷歌双子座 -适用于Gemini 2.5 Pro、Flash等。 - 深度求索 -对于Deepseek聊天,Reasoner - 奥拉玛 -自动检测本地模型(不需要API密钥)
- 去 操场 选项卡开始与DICOM服务器聊天
在光标IDE中使用OpenAI API键:
备注:对于MCP服务器的开发和测试, 建议使用MCP堵塞Cursor更适合使用上下文中可用的MCP工具进行通用代码开发。
如果您想将Cursor IDE与ChatGPT一起用于编码任务:
- 从获取API密钥
.env(如果存储在那里):
grep OPENAI_API_KEY .env- 在游标中配置:
- 打开光标设置(Cmd+Shift+J/Ctrl+Shift+J) - 引导到 模型 部分 - 粘贴您的OpenAI API密钥并验证 - 选择您喜欢的GPT型号(GPT-4、GPT-4 Turbo等)
备注:Cursor要求在其设置UI中输入API键-它不会自动从.env文件夹。从您的.env文件并将其粘贴到Cursor的设置中。
这为Cursor中的ChatGPT驱动的AI提供了持久的系统提示和完整的代码库集成。看 CURSOR_SETUP.md 有关完整的设置说明。
系统提示:
为了更好的LLM交互,您可以配置系统提示:
- 在MCP堵塞中:从以下位置复制内容
system_prompt.txt在启动新会话时,将其添加到Playground选项卡中的系统提示字段中。 - 在游标IDE中:在Cursor的设置中设置系统提示(在会话之间持续)-请参阅 CURSOR_SETUP.md 了解详情。
- 通过工具:使用
get_system_prompt工具在任一界面中自动检索提示文本。
备注:MCP Jam Guest模式可能无法在会话之间持续显示系统提示。游标IDE设置保持不变。保持system_prompt.txt方便或使用get_system_prompt快速访问工具。
MCP堵塞特征:
- ✅ 访客模式:无需帐户-立即开始测试
- ✅ 漂亮的UI:带有AI提供商徽标的现代界面
- ✅ 轻松设置:简单的服务器配置,表单清晰
- ✅ 实时测试:交互式工具执行,立即见效
- ✅ 全部功能:访问所有DICOM、Contoso、RIS和报告工具
- ✅ LLM 游乐场:使用各种LLM测试DICOM服务器
- ✅ 社区驱动:积极开发,定期更新
资源说明:资源已在FastMCP注册,可通过以下方式访问:
- 工具 (在访客模式下工作):使用
list_saved_resources和get_saved_resource访问资源的工具 - 资源面板 (可能需要帐户):本机MCP资源协议-如果您的MCP Jam模式支持,则在资源选项卡中可见
MCP堵塞选项卡:
- 服务器选项卡:管理并连接到DICOM MCP服务器
- 工具选项卡:以交互方式浏览和测试所有可用工具
- 游乐场选项卡:使用配置的LLM与DICOM服务器聊天
- 设置标签:配置API密钥和LLM提供程序
可用的DICOM工具:
verify_connection-测试DICOM连接list_dicom_nodes-显示已配置的服务器query_patients-寻找患者query_studies-按标准查找研究query_series-在研究中查找系列query_instances-查找单个DICOM图像extract_pdf_text_from_dicom-从DICOM PDF中提取文本move_series/move_study-传输DICOM数据switch_dicom_node-更改活动服务器get_attribute_presets-显示查询详细级别
可用的kubectl工具(当配置了kubectl时):
verify_fhir_connection-测试Contoso服务器连接list_fhir_servers-列出已配置的Contoso服务器switch_fhir_server-在不重新启动的情况下切换到不同的Contoso服务器fhir_search_patient-搜索患者资源fhir_search_imaging_study-搜索Imaging学习资源fhir_read_resource-按类型和ID读取任何Contoso资源fhir_create_resource-创建新的Contoso资源(患者、想象研究、服务请求等)fhir_update_resource-更新现有的Contoso资源
看 FHIR_SERVERS.md 有关配置详细信息。
迷你RIS工具(配置MySQL时):
list_mini_ris_patients-浏览存储在迷你RIS模式中的患者人口统计信息(按MRN或姓名过滤)create_mwl_from_order-从现有的迷你RIS订单创建DICOM模态工作表条目create_synthetic_cr_study-生成合成CR DICOM图像并发送到PACS(虚拟模态)
放射科报告工具(配置MySQL时):
get_study_for_report-检索放射学报告的完整研究信息list_radiologists-列出有资质的放射科医生create_radiology_report-创建包含发现和印象的结构化放射学报告generate_report_pdf-从报告生成专业PDF(base64编码)attach_report_to_pacs-将报告PDF作为DICOM封装PDF上传到PACS
迷你RIS数据库架构:
这 mini_ris.sql schema提供了一个完整的放射学信息系统,包括:
- 核心实体:患者、提供者、遭遇、订单、影像学研究、报告
- 参考表格:
- dicom_tags -用于MWL/MPPS验证的50个基本DICOM标签定义 - procedures -14个CR/XR程序代码,带有典型视图和图像计数 - modalities -标准DICOM模态代码 - body_parts -用于成像的解剖区域
- MWL/MPPS支持:模态工作表和模态执行程序步骤跟踪表
MCP命名方案:
迷你RIS中的所有数据都使用一致的“MCP-”前缀/后缀命名方案,以清楚地将其标记为 开发/合成数据:
- MRN:
MCP-MRN-0001 - 登录号:
MCP-ACC-2025-0001 - 患者姓名:
Johnson-MCP^Alex(DICOM格式) - 医生姓名:
MCP-Emily^Chen(DICOM格式)
看 MCP_NAMING_SCHEME.md 了解完整细节。
设置:
- 启动MySQL服务:
docker compose up -d mysql- 初始化数据库(首次启动时自动或手动):
docker exec -i dicom-mcp-mysql-1 mysql -uorthanc_ris_app -porthanc_ris_app orthanc_ris **
**特征:**
- ✅ **LLM技术聊天** -与OpenAI集成的智能聊天,用于自然语言查询
- ✅ **工具浏览器** -浏览并探索所有28个可用的DICOM/QUIPL/RIS工具
- ✅ **及时管理** -编辑并保存针对医学成像优化的系统提示
- ✅ **工具执行** -直接从聊天或UI执行工具
- ✅ **医学影像焦点** -为DICOM和Contoso工作流程定制
- ✅ **独立** -存储库中的所有内容,无需外部服务
- ✅ **深色主题** -美观、现代的深色用户界面
- ✅ **节省的资源** -整理好的参考文件(例如Orthanc OpenAPI)位于 `resources/manifest.yaml`,可通过资源面板访问或新建 `list_saved_resources` / `get_saved_resource` MCP工具。
**LLM集成:**
通过设置API密钥启用OpenAI支持的聊天:
export OPENAI_API_KEY="your-api-key-here"
法学硕士将:
- 了解有关医学影像的自然语言查询
- 自动选择并执行适当的DICOM/QUE工具
- 将结果格式化为临床可读格式
- 使用医学成像系统提示进行上下文感知响应
**查询示例:**
- “列出所有可用的DICOM节点”
- “找到姓史密斯的病人”
- “给我看看上周的学习”
- “验证与PACS的连接”
- “有哪些工具可用于Contoso?”
## 🙏 致谢
- 使用 [FastMCP](https://github.com/jlowin/fastmcp) -构建MCP服务器的快速Python方法
- 使用 [Pynetdicom](https://github.com/pydicom/pynetdicom) 用于DICOM网络通信
- 用途 [pypdf](https://pypi.org/project/pypdf/) 用于PDF文本提取
