项目简介
SlicerAgent 是一个旨在增强 3D Slicer 功能的代理项目,它通过 Model Context Protocol (MCP) 实现了一个应用后端。该后端将 3D Slicer 的原生功能封装为可由外部 LLM 客户端调用的工具,并提供访问 Slicer 状态的能力。项目包含 MCP 服务器实现和利用这些工具与用户交互的代理实现。
主要功能点
- Slicer 功能工具化: 将 3D Slicer 中的特定 Python 函数或扩展功能封装成可以通过 MCP 调用的工具。
- Slicer 状态查询: 允许连接的 LLM 代理或客户端查询 3D Slicer 当前的状态信息,例如场景中的节点列表。
- MCP 服务器实现: 使用 FastMCP 库构建一个符合 MCP 协议的服务器,负责托管和执行 Slicer 相关的工具,并通过 SSE (Server-Sent Events) 等协议与客户端通信。
- 内置 MCP 客户端代理: 项目提供一个内置的代理实现,该代理本身作为 MCP 客户端连接到项目启动的 MCP 服务器,并利用服务器提供的工具来处理用户请求。
安装步骤
请注意: 当前版本可能不稳定,且与 3D Slicer 的 Python 版本兼容性存在问题,以下步骤可能需要根据实际情况调整。
- 克隆仓库:
git clone https://github.com/DingSJ101/SlicerAgent.git cd SlicerAgent - 安装 Python 环境(需要 Python 3.12):
uv sync - 根据 README 提示,如果要在 3D Slicer 外运行 SlicerAgent 进程(作为 MCP 服务器和客户端),可能需要手动修改 'app/slicer/process.py' 中的 Python 可执行路径。
服务器配置
本项目的 MCP 服务器组件基于 FastMCP 实现,默认配置为监听 'http://localhost:6666' 端口,并使用 'sse' 作为传输协议。
MCP 客户端连接到此服务器时,通常需要以下信息:
- 服务器名称 (server name): 'SlicerWebServer' (由 MCP 服务器在其能力声明中提供)
- 传输协议类型 (transport type): 'sse'
- 服务器地址 (server address): 'http://localhost:6666/sse' (客户端连接的具体端点)
MCP 客户端会通过协议标准自动发现服务器提供的工具列表及其详细信息(包括名称、描述、参数 schema 等)。
基本使用方法
项目提供了两种运行模式:
- 在 Slicer 外运行 (作为独立进程):
- 确保已完成安装步骤。
- 运行主程序:
uv run python main.py - 程序启动 MCP 服务器并在同一进程中启动一个 MCP 客户端代理。您可以在终端输入 JSON 格式的消息与代理交互(例如 '{"content": "who are you?", "type": "message"}')。
- 在 Slicer 内运行 (作为扩展):
- 将项目中的 'SlicerExtensionDemo' 目录作为 Slicer 的一个扩展添加。
- 启动 3D Slicer。
- 在 Slicer 中启动 "Web Server" 扩展(如果项目依赖该扩展)。
- 切换到 "AgentUI" 扩展,在界面中输入问题与代理交互。此模式下,AgentUI 扩展会启动 SlicerAgent 进程(包含 MCP 服务器和客户端代理)并通过 Stdio 与其通信。
信息
分类
桌面与硬件