Hello everyone!
Try mcp-slicer and provide feedback~
Model Context Protocol (MCP) has become very popular recently, as it enables language models to extend their capabilities by using various tools, such as controlling web browsers, file systems, and more.
BlenderMCP, which “connects Blender to Claude AI through the Model Context Protocol (MCP), allowing Claude to directly interact with and control Blender. This integration enables prompt-assisted 3D modeling, scene creation, and manipulation,” has gained significant popularity, already accumulating 8.2k stars on GitHub.
I believe that Slicer should also have its own MCP server. Slicer has a flexible and user-friendly architecture, and large language models already have a decent understanding of it (and even if they don’t, we can simply provide them with documentation). This would allow us to write functional code and operate Slicer using natural language without significant overhead – which is really cool.
I’ve created a simple implementation called mcp-slicer that allows Claude, Cline, or other MCP-compatible clients to control a running instance of Slicer. You can check out this project on GitHub, try it out, and provide feedback.
Initially, I wanted to implement the server directly within Slicer using extensions and modules, but Slicer currently uses Python 3.9, while MCP Server development requires Python 3.10 or higher. Fortunately, I discovered the Slicer Web Server, which already implements many interfaces suitable for interaction with an MCP Server, so I utilized that approach.
Below is the README from the mcp-slicer project for your reference.
MCP-Slicer - 3D Slicer Model Context Protocol Integration
MCP-Slicer connects 3D Slicer with model clients like Claude Desktop or Cline through the Model Context Protocol (MCP), enabling direct interaction and control of 3D Slicer. This integration allows for medical image processing, scene creation, and manipulation using natural language.
Features
-
list_nodes: List and filter Slicer MRML nodes and view their properties
-
execute_python_code: Execute Python code in the Slicer environment
Installation
Prerequisites
- 3D Slicer 5.8 or newer
- Python 3.13 or newer
- uv package manager
If you’re on Mac, please install uv as
brew install uv
On Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
and then
set Path=C:\Users\nntra\.local\bin;%Path%
Otherwise installation instructions are on their website: Install uv
Please install UV first
Claude for Desktop Integration
Go to Claude > Settings > Developer > Edit Config > claude_desktop_config.json to include the following:
{
"mcpServers": {
"slicer": {
"command": "uvx",
"args": ["mcp-slicer"]
}
}
}
Cline Intergration
{
"mcpServers": {
"slicer": {
"command": "uvx",
"args": ["mcp-slicer"]
}
}
}
Usage
Check Claude Settings
Make sure you see the corresponding slicer tools added to the Claude Desktop App
Open Slicer Web Server
- Open the Slicer Web Server module,
- ensure the required interfaces are checked,
- then start the server
Examples
- list_nodes
What Markups nodes are in the Slicer scene now, list their names, what is their length if it is a line, and what is its angle if it is an angle
- execute python code
Draw a translucent green cube of 8 cm in the Slicer scene, mark its vertices, and then draw a red sphere inscribed in it.
Technical Details
Utilizes existing Slicer Web Server interfaces. For technical details, please see Slicer web server user guide
Limitations & Security Considerations
-
The
execute_python_code
tool allows running arbitrary Python code in 3D Slicer, which is powerful but potentially dangerous.Not recommended for production use.
-
Complex operations may need to be broken down into smaller steps.
Contributing
Contributions are welcome! Feel free to submit Pull Requests.
Disclaimer
This is a third-party integration project, not developed by the 3D Slicer team.