# ChristianHinge/dicom-mcp [Health: Active]

**Category:** 🧬 Biology & Bioinformatics  
**Repository:** https://github.com/ChristianHinge/dicom-mcp  
**GitHub Stars:** 106  
**Views:** 6  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/christianhinge-dicom-mcp

## Description
DICOM integration to query, read, and move medical images and reports from PACS and other DICOM compliant systems.

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `uvx` (confidence: high):

```json
"mcpServers": {
  "dicom-mcp": {
    "command": "uvx",
    "args": ["dicom-mcp"]
  }
}
```

## Documentation

## What ChristianHinge/dicom-mcp MCP server does

ChristianHinge/dicom-mcp MCP server exposes DICOM query, retrieval, report-reading, and routing operations to MCP-compatible AI clients. It connects to PACS, VNA, Orthanc, and other DICOM-compliant systems, allowing an assistant to search imaging metadata and coordinate follow-up operations through tool calls.

The server supports searches across four levels of DICOM data: patients, studies, series, and individual instances. It can also extract text from DICOM instances that contain encapsulated PDF files, such as clinical reports. For routing workflows, it sends a selected series or complete study to another configured DICOM node using C-MOVE.

## How it works

A YAML configuration identifies one or more DICOM nodes, including each node’s host, port, AE title, and description. The configuration also selects the active node and defines the calling AE title used by the server. Operations run against the active node, which can be changed through an MCP utility tool.

The normal launch mode uses stdio, with the MCP client starting the process. The server also supports streamable HTTP and legacy SSE transport. Streamable HTTP uses the `/mcp` endpoint and can run as a standalone process on a selected host and port. Its HTTP and SSE endpoints do not provide authentication.

Tools can be chained for multi-step workflows. For example, an assistant can locate a patient, narrow the results to a study and series, move that series to another DICOM destination, then inspect a returned PDF report.

## Setup and configuration

Install the package with `uv tool install dicom-mcp`, or install a cloned checkout with its development dependencies using `uv pip install -e ".[dev]"`. Python 3.12 or newer is required.

Create a YAML configuration file and pass its path when launching the server. A typical configuration defines a `nodes` map, a `current_node`, and a `calling_aet`. The sample setup targets an Orthanc server on `localhost:4242` with the AE title `ORTHANC`.

For MCP clients that launch stdio servers, the command can use `uvx dicom-mcp /path/to/your_config.yaml`. A standalone HTTP process can be started with `--transport http`, `--host`, and `--port`; clients can connect through `http://host:port/mcp`. Claude Desktop can connect to the HTTP mode through `mcp-remote`.

## Tools and capabilities

- `query_patients` searches by patient attributes such as name, ID, or birth date.
- `query_studies` filters studies by patient ID, date, modality, description, accession number, or Study UID.
- `query_series` finds series within a study using modality, series number or description, and Series UID.
- `query_instances` locates objects within a series by instance number or SOP Instance UID.
- `extract_pdf_text_from_dicom` extracts text from an encapsulated PDF DICOM instance.
- `move_series` and `move_study` send DICOM data to another configured node with C-MOVE.
- `list_dicom_nodes`, `switch_dicom_node`, and `verify_connection` manage nodes and test connectivity with C-ECHO.
- `get_attribute_presets` lists the available metadata detail levels: minimal, standard, and extended.

## Limitations and notes

The project is intended for testing and development rather than clinical use. It should not be connected to live hospital databases or systems containing patient-sensitive data. The HTTP and SSE transports have no authentication; binding beyond `127.0.0.1` can expose the endpoint to reachable hosts, so deployment requires network controls or an authenticating reverse proxy. A locally hosted open-weight model can be used when keeping DICOM data within a private environment is important.

_Full upstream README: https://allmcps.com/mcp/christianhinge-dicom-mcp/readme_

