hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Integrations
dicom-mcp: un servidor de protocolo de contexto de modelo DICOM
Este repositorio es parte de una publicación de blog: LLM de Agentic Healthcare
Descripción general
Un servidor de Protocolo de Contexto de Modelo para interacciones DICOM (Imágenes Digitales y Comunicaciones en Medicina). Este servidor proporciona herramientas para consultar e interactuar con servidores DICOM, lo que permite que los Modelos de Lenguaje Grandes accedan y analicen metadatos de imágenes médicas.
dicom-mcp permite a los asistentes de IA consultar información de pacientes, estudios, series e instancias desde servidores DICOM mediante protocolos de red DICOM estándar. También permite extraer texto de documentos PDF encapsulados en formato DICOM, lo que permite analizar informes clínicos. Está basado en pynetdicom y sigue la especificación del Protocolo de Contexto de Modelo.
Herramientas
list_dicom_nodes
- Enumera todos los nodos DICOM configurados y los títulos AE que los llaman
- Entradas: Ninguna
- Devuelve: nodo actual, nodos disponibles, título de AE que realiza la llamada actual y títulos de AE que realizan la llamada disponibles
switch_dicom_node
- Cambia a un nodo DICOM configurado diferente
- Entradas:
node_name
(cadena): Nombre del nodo al que cambiar
- Devoluciones: Mensaje de éxito
switch_calling_aet
- Cambia a un título de AE de llamada configurado diferente
- Entradas:
aet_name
(cadena): Nombre del título AE que llama al que se cambiará
- Devoluciones: Mensaje de éxito
verify_connection
- Prueba la conectividad con el nodo DICOM configurado mediante C-ECHO
- Entradas: Ninguna
- Devuelve: Mensaje de éxito o fracaso con detalles
query_patients
- Búsqueda de pacientes que coincidan con los criterios especificados
- Entradas:
name_pattern
(cadena, opcional): Patrón de nombre del paciente (puede incluir comodines)patient_id
(cadena, opcional): ID del pacientebirth_date
(cadena, opcional): Fecha de nacimiento del paciente (AAAAMMDD)attribute_preset
(cadena, opcional): nivel de detalle preestablecido (mínimo, estándar, extendido)additional_attributes
(string[], opcional): atributos DICOM adicionales para incluirexclude_attributes
(string[], opcional): atributos DICOM a excluir
- Devuelve: Matriz de registros de pacientes coincidentes
query_studies
- Búsqueda de estudios que coincidan con los criterios especificados
- Entradas:
patient_id
(cadena, opcional): ID del pacientestudy_date
(cadena, opcional): Fecha o rango del estudio (AAAAMMDD o AAAAMMDD-AAAAMMDD)modality_in_study
(cadena, opcional): Modalidades en estudiostudy_description
(cadena, opcional): Descripción del estudio (puede incluir comodines)accession_number
(cadena, opcional): Número de accesostudy_instance_uid
(cadena, opcional): UID de la instancia de estudioattribute_preset
(cadena, opcional): Nivel de detalle preestablecidoadditional_attributes
(string[], opcional): atributos DICOM adicionales para incluirexclude_attributes
(string[], opcional): atributos DICOM a excluir
- Devuelve: Matriz de registros de estudio coincidentes
query_series
- Búsqueda de series dentro de un estudio
- Entradas:
study_instance_uid
(cadena): UID de la instancia de estudio (obligatorio)modality
(cadena, opcional): Modalidad (p. ej., "CT", "MR")series_number
(cadena, opcional): Número de serieseries_description
(cadena, opcional): Descripción de la serieseries_instance_uid
(cadena, opcional): UID de instancia de serieattribute_preset
(cadena, opcional): Nivel de detalle preestablecidoadditional_attributes
(string[], opcional): atributos DICOM adicionales para incluirexclude_attributes
(string[], opcional): atributos DICOM a excluir
- Devuelve: Matriz de registros de series coincidentes
query_instances
- Buscar instancias dentro de una serie
- Entradas:
series_instance_uid
(cadena): UID de instancia de serie (obligatorio)instance_number
(cadena, opcional): Número de instanciasop_instance_uid
(cadena, opcional): UID de instancia de SOPattribute_preset
(cadena, opcional): Nivel de detalle preestablecidoadditional_attributes
(string[], opcional): atributos DICOM adicionales para incluirexclude_attributes
(string[], opcional): atributos DICOM a excluir
- Devuelve: Matriz de registros de instancia coincidentes
get_attribute_presets
- Enumera los ajustes preestablecidos de atributos disponibles para las consultas
- Entradas: Ninguna
- Devuelve: Diccionario de ajustes preestablecidos disponibles y sus atributos por nivel
retrieve_instance
- Recupera una instancia DICOM específica y la guarda en el sistema de archivos local
- Entradas:
study_instance_uid
(cadena): UID de la instancia de estudioseries_instance_uid
(cadena): UID de instancia de seriesop_instance_uid
(cadena): UID de instancia de SOPoutput_directory
(cadena, opcional): Directorio donde guardar la instancia recuperada (predeterminado: "./retrieved_files")
- Devuelve: Diccionario con información sobre la operación de recuperación
extract_pdf_text_from_dicom
- Recupera una instancia DICOM que contiene un PDF encapsulado y extrae su contenido de texto
- Entradas:
study_instance_uid
(cadena): UID de la instancia de estudioseries_instance_uid
(cadena): UID de instancia de seriesop_instance_uid
(cadena): UID de instancia de SOP
- Devuelve: Diccionario con información de texto extraída y estado
Instalación
Prerrequisitos
- Python 3.12 o superior
- Un servidor DICOM al que conectarse (por ejemplo, Orthanc, dcm4chee, etc.)
Usando pip
Instalar mediante pip:
Configuración
dicom-mcp requiere un archivo de configuración YAML que define los nodos DICOM y los títulos de AE de llamada. Cree un archivo de configuración con la siguiente estructura:
Uso
Línea de comandos
Ejecute el servidor utilizando el punto de entrada del script:
Si utiliza uv:
Configuración con Claude Desktop
Agregue esto a su claude_desktop_config.json
:
Uso con Zed
Añade a tu configuración Zed settings.json:
Consultas de ejemplo
Lista de nodos DICOM disponibles
Cambiar a un nodo diferente
Cambiar a un título de AE de llamada diferente
Verificar la conexión
Búsqueda de pacientes
Búsqueda de estudios
Búsqueda de series en un estudio
Buscar instancias en una serie
Recuperar una instancia DICOM
Extraer texto de un PDF encapsulado DICOM
Depuración
Puede utilizar el inspector MCP para depurar el servidor:
Desarrollo
Configurar el entorno de desarrollo
- Clonar el repositorio:Copy
- Crear un entorno virtual:Copy
- Instalar dependencias:Copy
Ejecución de pruebas
Las pruebas requieren un servidor Orthanc en ejecución. Puedes iniciar uno usando Docker:
A continuación ejecute las pruebas:
Para probar la funcionalidad de extracción de PDF:
Estructura del proyecto
src/dicom_mcp/
: Paquete principal__init__.py
: Inicialización del paquete__main__.py
: Punto de entradaserver.py
: implementación del servidor MCPdicom_client.py
: implementación del cliente DICOMattributes.py
: ajustes preestablecidos de atributos DICOMconfig.py
: Gestión de configuración con Pydantic
Licencia
Este proyecto está licenciado bajo la licencia MIT: consulte el archivo de LICENCIA para obtener más detalles.
Expresiones de gratitud
- Construido en pynetdicom
- Sigue la especificación del Protocolo de Contexto de Modelo
- Utiliza PyPDF2 para la extracción de texto PDF
This server cannot be installed
Permite a los asistentes de IA consultar y analizar metadatos de imágenes médicas de servidores DICOM, incluida información de pacientes, estudios, series e instancias, así como extraer texto de documentos PDF encapsulados.
Appeared in Searches
- A tool or method for searching PDF documents
- Research on Patient-Disease-Gene-Drug Relationships and Pharmacogenomics Using Digital Imaging Data
- Developing a FHIR-Based Digital Health Application with EHR, PHR, and Phenotyping Frameworks
- A search for information about PDFs or related content
- A server for finding botanic data