The dicom-mcp
server enables AI assistants to query, read, and move data on DICOM servers (PACS, VNA, etc.).
š¤ Contribute ⢠š Report Bug ⢠š Blog Post 1
š§āāļø User: "Any significant findings in John Doe's previous CT report?"
š§ LLM ā āļø Tools: query_patients ā query_studies ā query_series ā extract_pdf_text_from_dicom
š¬ LLM Response: "The report from 2025-03-26 mentions a history of splenomegaly (enlarged spleen)"
š§āāļø User: "What's the volume of his spleen at the last scan and the scan today?"
š§ LLM ā āļø Tools: (query_studies ā query_series ā move_series ā query_series ā extract_pdf_text_from_dicom) x2 (The move_series tool sends the latest CT to a DICOM segmentation node, which returns volume PDF report)
## ⨠Core Capabilities
`dicom-mcp` provides tools to:
* **š Query Metadata**: Search for patients, studies, series, and instances using various criteria.
* **š Read DICOM Reports (PDF)**: Retrieve DICOM instances containing encapsulated PDFs (e.g., clinical reports) and extract the text content.
* **ā”ļø Send DICOM Images**: Send series or studies to other DICOM destinations, e.g. AI endpoints for image segmentation, classification, etc.
* **āļø Utilities**: Manage connections and understand query options.
## š Quick Start
### š„ Installation
Install using uv or pip:
```bash
uv tool install dicom-mcp
Or by cloning the repository:
git clone https://github.com/ChristianHinge/dicom-mcp
cd dicom mcp
uv venv
source .venv/bin/activate
uv pip install -e ".[dev]"
āļø Configuration
dicom-mcp
requires a YAML configuration file (config.yaml
or similar) defining DICOM nodes and calling AE titles. Adapt the configuration or keep as is for compatibility with the sample ORTHANC Server.
nodes:
main:
host: "localhost"
port: 4242
ae_title: "ORTHANC"
description: "Local Orthanc DICOM server"
current_node: "main"
calling_aet: "MCPSCU"
[!WARNING] DICOM-MCP is not meant for clinical use, and should not be connected with live hospital databases or databases with patient-sensitive data. Doing so could lead to both loss of patient data, and leakage of patient data onto the internet. DICOM-MCP can be used with locally hosted open-weight LLMs for complete data privacy.
(Optional) Sample ORTHANC server
If you don't have a DICOM server available, you can run a local ORTHANC server using Docker:
Clone the repository and install test dependencies pip install -e ".[dev]
cd tests
docker ocmpose up -d
cd ..
pytest # uploads dummy pdf data to ORTHANC server
UI at http://localhost:8042
š MCP Integration
Add to your client configuration (e.g. claude_desktop_config.json
):
{
"mcpServers": {
"dicom": {
"command": "uv",
"args": ["tool","dicom-mcp", "/path/to/your_config.yaml"]
}
}
}
For development:
{
"mcpServers": {
"arxiv-mcp-server": {
"command": "uv",
"args": [
"--directory",
"path/to/cloned/dicom-mcp",
"run",
"dicom-mcp",
"/path/to/your_config.yaml"
]
}
}
}
š ļø Tools Overview
dicom-mcp
provides four categories of tools for interaction with DICOM servers and DICOM data.
š Query Metadata
query_patients
: Search for patients based on criteria like name, ID, or birth date.query_studies
: Find studies using patient ID, date, modality, description, accession number, or Study UID.query_series
: Locate series within a specific study using modality, series number/description, or Series UID.query_instances
: Find individual instances (images/objects) within a series using instance number or SOP Instance UID
š Read DICOM Reports (PDF)
extract_pdf_text_from_dicom
: Retrieve a specific DICOM instance containing an encapsulated PDF and extract its text content.
ā”ļø Send DICOM Images
move_series
: Send a specific DICOM series to another configured DICOM node using C-MOVE.move_study
: Send an entire DICOM study to another configured DICOM node using C-MOVE.
āļø Utilities
list_dicom_nodes
: Show the currently active DICOM node and list all configured nodes.switch_dicom_node
: Change the active DICOM node for subsequent operations.verify_connection
: Test the DICOM network connection to the currently active node using C-ECHO.get_attribute_presets
: List the available levels of detail (minimal, standard, extended) for metadata query results.
Example interaction
The tools can be chained together to answer complex questions:
š Contributing
Running Tests
Tests require a running Orthanc DICOM server. You can use Docker:
cd tests
docker-compose up -d
Run tests using pytest:
pytest
Stop the Orthanc container:
cd tests
docker-compose down
Debugging
Use the MCP Inspector for debugging the server communication:
npx @modelcontextprotocol/inspector uv run dicom-mcp /path/to/your_config.yaml --transport stdio
š Acknowledgments
- Built using pynetdicom
- Uses PyPDF2 for PDF text extraction