Skip to main content
Glama
NyxToolsDev

DICOM/HL7/FHIR Interoperability MCP Server

pacs_get_metadata

Retrieve DICOM metadata from PACS systems for studies or series, providing patient, study, series, and equipment details using DICOMweb or DIMSE protocols.

Instructions

[Premium] Retrieve detailed metadata for a study or series from PACS. Returns DICOM header information including patient, study, series, and equipment details. Uses WADO-RS metadata (DICOMweb) or series-level C-FIND (DIMSE).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
study_instance_uidYesStudy Instance UID to retrieve metadata for.
series_instance_uidNoOptional Series Instance UID for series-level metadata.

Implementation Reference

  • The actual implementation of the 'pacs_get_metadata' function, which dispatches requests to either a DIMSE or DICOMweb client based on configuration.
    def pacs_get_metadata(
        study_instance_uid: str,
        series_instance_uid: str = "",
    ) -> list[dict[str, Any]]:
        """Retrieve study/series metadata from PACS.
    
        For DIMSE: performs a detailed C-FIND at series level.
        For DICOMweb: uses WADO-RS metadata endpoint.
    
        Args:
            study_instance_uid: The study UID.
            series_instance_uid: Optional series UID.
    
        Returns:
            List of metadata objects (format depends on protocol).
        """
        protocol = get_pacs_protocol()
    
        if protocol == "dicomweb":
            client = _get_dicomweb_client()
            if client:
                return client.get_metadata(study_instance_uid, series_instance_uid)
            return []
    
        elif protocol == "dimse":
            # For DIMSE, do a series-level C-FIND to get detailed metadata
            client = _get_dimse_client()
            if client:
                filters = QueryFilters(
                    query_level="SERIES",
                    study_instance_uid=study_instance_uid,
                )
                if series_instance_uid:
                    filters.series_instance_uid = series_instance_uid
                results = client.find(filters)
                # Convert SeriesResult models to dicts for consistent return type
                return [r.model_dump() for r in results]
            return []
    
        return []
  • Tool handler wrapper that invokes the 'pacs_get_metadata' function.
    """Handle pacs_get_metadata tool call."""
    study_uid = arguments["study_instance_uid"]
    series_uid = arguments.get("series_instance_uid", "")
    
    metadata = pacs_get_metadata(study_uid, series_uid)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/NyxToolsDev/dicom-hl7-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server