DICOM MCP Server

Permite a los asistentes de IA consultar, leer y mover datos en servidores DICOM como PACS y VNA para imágenes médicas.

Documentación

DICOM MCP Server para Sistemas de Imágenes Médicas 🏥

License: MIT Python Version PyPI Version PyPI Downloads

El servidor dicom-mcp permite a los asistentes de IA consultar, leer y mover datos en servidores DICOM (PACS, VNA, etc.).

---------------------------------------------------------------------
🧑‍⚕️ 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)

💬 LLM Response: "last year 2024-03-26: 412cm³, today 2025-04-10: 350cm³"
---------------------------------------------------------------------

✨ Capacidades Principales

dicom-mcp proporciona herramientas para:

  • 🔍 Consultar Metadatos: Buscar pacientes, estudios, series e instancias usando varios criterios.
  • 📄 Leer Informes DICOM (PDF): Recuperar instancias DICOM que contengan PDFs encapsulados (por ejemplo, informes clínicos) y extraer el contenido de texto.
  • ➡️ Enviar Imágenes DICOM: Enviar series o estudios a otros destinos DICOM, por ejemplo, endpoints de IA para segmentación de imágenes, clasificación, etc.
  • ⚙️ Utilidades: Gestionar conexiones y comprender las opciones de consulta.

🚀 Inicio Rápido

📥 Instalación

Instale usando uv o pip:

uv tool install dicom-mcp

O clonando el repositorio:

# Clone and set up development environment
git clone https://github.com/ChristianHinge/dicom-mcp
cd dicom mcp

# Create and activate virtual environment
uv venv
source .venv/bin/activate

# Install with test dependencies
uv pip install -e ".[dev]"

⚙️ Configuración

dicom-mcp requiere un archivo de configuración YAML (config.yaml o similar) que defina nodos DICOM y títulos AE de llamada. Adapte la configuración o manténgala tal cual para compatibilidad con el servidor ORTHANC de muestra.

nodes:
  main:
    host: "localhost"
    port: 4242 
    ae_title: "ORTHANC"
    description: "Local Orthanc DICOM server"

current_node: "main"
calling_aet: "MCPSCU" 

[!WARNING] DICOM-MCP no está destinado para uso clínico y no debe conectarse con bases de datos hospitalarias en vivo o bases de datos con datos sensibles de pacientes. Hacerlo podría provocar tanto la pérdida de datos de pacientes como la filtración de datos de pacientes a Internet. DICOM-MCP se puede usar con LLMs de peso abierto alojados localmente para una privacidad total de los datos.

(Opcional) Servidor ORTHANC de muestra

Si no tiene un servidor DICOM disponible, puede ejecutar un servidor ORTHANC local usando Docker:

Clone el repositorio e instale las dependencias de prueba pip install -e ".[dev]

cd tests
docker ocmpose up -d
cd ..
pytest # uploads dummy pdf data to ORTHANC server

Interfaz de usuario en http://localhost:8042

🔌 Integración MCP

Agregue a su configuración de cliente (por ejemplo, claude_desktop_config.json):

{
  "mcpServers": {
    "dicom": {
      "command": "uvx",
      "args": ["dicom-mcp", "/path/to/your_config.yaml"]
    }
  }
}

Para desarrollo:

{
    "mcpServers": {
        "arxiv-mcp-server": {
            "command": "uv",
            "args": [
                "--directory",
                "path/to/cloned/dicom-mcp",
                "run",
                "dicom-mcp",
                "/path/to/your_config.yaml"
            ]
        }
    }
}

🛠️ Resumen de Herramientas

dicom-mcp proporciona cuatro categorías de herramientas para la interacción con servidores DICOM y datos DICOM.

🔍 Consultar Metadatos

  • query_patients: Buscar pacientes según criterios como nombre, ID o fecha de nacimiento.
  • query_studies: Encontrar estudios usando ID de paciente, fecha, modalidad, descripción, número de acceso o UID de estudio.
  • query_series: Localizar series dentro de un estudio específico usando modalidad, número/descripción de serie o UID de serie.
  • query_instances: Encontrar instancias individuales (imágenes/objetos) dentro de una serie usando número de instancia o UID de instancia SOP

📄 Leer Informes DICOM (PDF)

  • extract_pdf_text_from_dicom: Recuperar una instancia DICOM específica que contenga un PDF encapsulado y extraer su contenido de texto.

➡️ Enviar Imágenes DICOM

  • move_series: Enviar una serie DICOM específica a otro nodo DICOM configurado usando C-MOVE.
  • move_study: Enviar un estudio DICOM completo a otro nodo DICOM configurado usando C-MOVE.

⚙️ Utilidades

  • list_dicom_nodes: Mostrar el nodo DICOM activo actualmente y listar todos los nodos configurados.
  • switch_dicom_node: Cambiar el nodo DICOM activo para operaciones posteriores.
  • verify_connection: Probar la conexión de red DICOM al nodo activo actualmente usando C-ECHO.
  • get_attribute_presets: Listar los niveles de detalle disponibles (mínimo, estándar, extendido) para los resultados de consulta de metadatos.

Ejemplo de interacción

Las herramientas se pueden encadenar para responder preguntas complejas:

My Awesome Diagram

📈 Contribuciones

Ejecutar Pruebas

Las pruebas requieren un servidor DICOM Orthanc en ejecución. Puede usar Docker:

# Navigate to the directory containing docker-compose.yml (e.g., tests/)
cd tests
docker-compose up -d

Ejecute las pruebas usando pytest:

# From the project root directory
pytest

Detenga el contenedor Orthanc:

cd tests
docker-compose down

Depuración

Use el Inspector MCP para depurar la comunicación del servidor:

npx @modelcontextprotocol/inspector uv run dicom-mcp /path/to/your_config.yaml --transport stdio

🙏 Agradecimientos