DICOM MCP Server
by fluxinc
GNU Lesser General Public License v2.1 only
2
# DICOM MCP Server
A Model Context Protocol (MCP) server for DICOM connectivity testing.
## Prerequisites
1. Install UV (required):
```bash
pip install uv
```
Make sure `uv` is available in your system PATH as it's required for Claude to properly execute the server.
## Installation
There are two ways to set up the server:
### 1. Traditional Setup
Install the required dependencies:
```bash
uv pip install mcp[cli]
```
### 2. MCP Installation (Recommended)
To use this server with Claude's Model Context Protocol:
```bash
mcp install server.py
```
This will register the server with Claude for DICOM operations.
## Running the Server
### Direct Execution
```bash
uv run server.py
```
### Through Claude
Once installed via MCP, the server will be automatically managed by Claude when needed.
The server will start on 0.0.0.0:8080 by default.
## Node Configuration
The server uses a `nodes.yaml` file to store DICOM node configurations. This allows you to:
1. List all configured DICOM nodes
2. Perform C-ECHO operations using node names instead of explicit AE titles, IPs, and ports
3. Use different local AE titles for C-ECHO operations
### nodes.yaml Format
```yaml
nodes:
# Example node configuration
main_pacs:
ae_title: DESTINATION
ip: 192.168.1.100
port: 104
description: "Main hospital PACS system"
local_ae_titles:
- name: default
ae_title: MCP_DICOM
description: "Default AE title for MCP DICOM server"
- name: pacs_gateway
ae_title: PACS_GATEWAY
description: "PACS Gateway AE title"
```
## Troubleshooting
If you encounter the "spawn uv ENOENT" error, it typically means one of the following:
1. UV is not installed or not in your PATH
2. The Python executable cannot be found by the MCP client
### Solutions:
1. Make sure UV is properly installed and in your PATH:
```bash
which uv # Should show the path to UV
```
2. Ensure you're using a Python environment that's accessible to the system:
- If using a virtual environment, make sure it's activated
- Check that Python is in your PATH
3. Try running the server with explicit UV path:
```bash
/full/path/to/uv run server.py
```
4. Add more debugging by checking the stderr output in the logs
## Usage
The server provides several DICOM tools that can be used through the MCP interface:
### List DICOM Nodes
List all configured DICOM nodes from the nodes.yaml file:
```
list_dicom_nodes()
```
### C-ECHO by Node Name
Perform a C-ECHO operation using a node name from the configuration:
```
dicom_cecho_by_name(node_name="main_pacs", local_ae_name="default")
```
### Direct C-ECHO
Perform a C-ECHO operation with explicit parameters:
```
dicom_cecho(remote_ae_title="REMOTE_AE", ip="192.168.1.100", port=104, local_ae_title="MCP_DICOM")
```