Сервер DICOM MCP для систем медицинской визуализации 🏥
Сервер dicom-mcp позволяет помощникам на базе искусственного интеллекта запрашивать, считывать и перемещать данные на серверах DICOM (PACS, VNA и т. д.).
🤝 Внести свой вклад • 📝 Сообщить об ошибке • 📝 Запись в блоге 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)
💬 LLM Response: "last year 2024-03-26: 412cm³, today 2025-04-10: 350cm³"
---------------------------------------------------------------------✨ Основные возможности
dicom-mcp предоставляет инструменты для:
🔍 Запрос метаданных : поиск пациентов, исследований, серий и случаев с использованием различных критериев.
📄 Чтение отчетов DICOM (PDF) : извлечение экземпляров DICOM, содержащих инкапсулированные PDF-файлы (например, клинические отчеты), и извлечение текстового содержимого.
➡️ Отправка изображений DICOM : отправка серий или исследований в другие пункты назначения DICOM, например, в конечные точки ИИ для сегментации изображений, классификации и т. д.
⚙️ Утилиты : управление подключениями и понимание параметров запросов.
Related MCP server: DICOM-MCP
🚀 Быстрый старт
📥 Установка
Установка с помощью uv или pip:
uv tool install dicom-mcpИли клонировав репозиторий:
# 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]"⚙️ Конфигурация
dicom-mcp требует файл конфигурации YAML ( config.yaml или аналогичный), определяющий узлы DICOM и вызывающий заголовки AE. Адаптируйте конфигурацию или оставьте как есть для совместимости с образцом сервера ORTHANC.
nodes:
main:
host: "localhost"
port: 4242
ae_title: "ORTHANC"
description: "Local Orthanc DICOM server"
current_node: "main"
calling_aet: "MCPSCU" [!ВНИМАНИЕ] DICOM-MCP не предназначен для клинического использования и не должен быть связан с реальными больничными базами данных или базами данных с конфиденциальными данными пациентов. Это может привести как к потере данных пациентов, так и к утечке данных пациентов в Интернет. DICOM-MCP можно использовать с локально размещенными LLM с открытым весом для полной конфиденциальности данных.
(Необязательно) Пример сервера ORTHANC
Если у вас нет сервера DICOM, вы можете запустить локальный сервер ORTHANC с помощью Docker:
Клонируйте репозиторий и установите тестовые зависимости pip install -e ".[dev]
cd tests
docker ocmpose up -d
cd ..
pytest # uploads dummy pdf data to ORTHANC serverПользовательский интерфейс по адресу http://localhost:8042
🔌 Интеграция MCP
Добавьте в конфигурацию вашего клиента (например, claude_desktop_config.json ):
{
"mcpServers": {
"dicom": {
"command": "uv",
"args": ["tool","dicom-mcp", "/path/to/your_config.yaml"]
}
}
}Для разработки:
{
"mcpServers": {
"arxiv-mcp-server": {
"command": "uv",
"args": [
"--directory",
"path/to/cloned/dicom-mcp",
"run",
"dicom-mcp",
"/path/to/your_config.yaml"
]
}
}
}🛠️ Обзор инструментов
dicom-mcp предоставляет четыре категории инструментов для взаимодействия с серверами DICOM и данными DICOM.
🔍 Запрос метаданных
query_patients: Поиск пациентов по таким критериям, как имя, идентификатор или дата рождения.query_studies: поиск исследований по идентификатору пациента, дате, модальности, описанию, номеру доступа или уникальному идентификатору исследования.query_series: поиск серий в рамках определенного исследования с использованием модальности, номера/описания серии или уникального идентификатора серии.query_instances: поиск отдельных экземпляров (изображений/объектов) в серии с использованием номера экземпляра или UID экземпляра SOP
📄 Читать отчеты DICOM (PDF)
extract_pdf_text_from_dicom: извлечение определенного экземпляра DICOM, содержащего инкапсулированный PDF-файл, и извлечение его текстового содержимого.
➡️ Отправка изображений DICOM
move_series: отправка определенной серии DICOM на другой настроенный узел DICOM с помощью C-MOVE.move_study: отправка всего исследования DICOM на другой настроенный узел DICOM с помощью C-MOVE.
⚙️ Коммунальные услуги
list_dicom_nodes: Отображение текущего активного узла DICOM и списка всех настроенных узлов.switch_dicom_node: изменение активного узла DICOM для последующих операций.verify_connection: проверка сетевого подключения DICOM к текущему активному узлу с помощью C-ECHO.get_attribute_presets: список доступных уровней детализации (минимальный, стандартный, расширенный) для результатов запроса метаданных.
Пример взаимодействия
Инструменты можно объединять в цепочку для ответа на сложные вопросы:
📈 Вклад
Проведение тестов
Для тестов требуется работающий сервер Orthanc DICOM. Вы можете использовать Docker:
# Navigate to the directory containing docker-compose.yml (e.g., tests/)
cd tests
docker-compose up -dЗапустите тесты с помощью pytest:
# From the project root directory
pytestОстановите контейнер Orthanc:
cd tests
docker-compose downОтладка
Используйте MCP Inspector для отладки связи с сервером:
npx @modelcontextprotocol/inspector uv run dicom-mcp /path/to/your_config.yaml --transport stdio🙏 Благодарности
Создано с использованием pynetdicom
Использует PyPDF2 для извлечения текста из PDF-файлов