의료 영상 시스템용 DICOM MCP 서버 🏥
dicom-mcp 서버는 AI 어시스턴트가 DICOM 서버(PACS, VNA 등)에서 데이터를 쿼리하고, 읽고, 이동할 수 있도록 합니다.
✨ 핵심 역량
dicom-mcp 다음 작업을 위한 도구를 제공합니다.
🔍 메타데이터 쿼리 : 다양한 기준을 사용하여 환자, 연구, 시리즈 및 인스턴스를 검색합니다.
📄 DICOM 보고서(PDF) 읽기 : 캡슐화된 PDF(예: 임상 보고서)가 포함된 DICOM 인스턴스를 검색하고 텍스트 콘텐츠를 추출합니다.
➡️ DICOM 이미지 보내기 : 시리즈나 연구를 다른 DICOM 대상지(예: 이미지 분할, 분류를 위한 AI 엔드포인트)로 보냅니다.
⚙️ 유틸리티 : 연결을 관리하고 쿼리 옵션을 이해합니다.
Related MCP server: DICOM-MCP
🚀 빠른 시작
📥 설치
uv 또는 pip를 사용하여 설치:
지엑스피1
또는 저장소를 복제합니다.
# 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 DICOM 노드를 정의하고 AE 제목을 호출하는 YAML 구성 파일( config.yaml 또는 유사 파일)이 필요합니다. 샘플 ORTHANC 서버와의 호환성을 위해 구성을 수정하거나 그대로 유지하세요.
nodes:
main:
host: "localhost"
port: 4242
ae_title: "ORTHANC"
description: "Local Orthanc DICOM server"
current_node: "main"
calling_aet: "MCPSCU" DICOM-MCP는 임상 용도로 제작되지 않은 오픈 소스 프로젝트이므로, 병원 데이터베이스나 환자 민감 데이터가 포함된 데이터베이스와 연결해서는 안 됩니다. 연결하지 않을 경우 환자 데이터가 손실되거나 인터넷으로 유출될 수 있습니다.
(선택 사항) ORTHANC 서버 샘플
DICOM 서버를 사용할 수 없는 경우 Docker를 사용하여 로컬 ORTHANC 서버를 실행할 수 있습니다.
저장소를 복제하고 테스트 종속성을 설치합니다 pip install -e ".[dev]
cd tests
docker ocmpose up -d
cd ..
pytest # uploads dummy pdf data to ORTHANC server
sh upload_dummy_data.sh🔌 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 데이터와의 상호작용을 위한 4가지 범주의 도구를 제공합니다.
🔍 쿼리 메타데이터
query_patients: 이름, ID, 생년월일 등의 기준으로 환자를 검색합니다.query_studies: 환자 ID, 날짜, 모달리티, 설명, 접근 번호 또는 연구 UID를 사용하여 연구를 찾습니다.query_series: 모달리티, 시리즈 번호/설명 또는 시리즈 UID를 사용하여 특정 연구 내의 시리즈를 찾습니다.query_instances: 인스턴스 번호 또는 SOP 인스턴스 UID를 사용하여 시리즈 내의 개별 인스턴스(이미지/객체)를 찾습니다.
📄 DICOM 보고서 읽기(PDF)
extract_pdf_text_from_dicom: 캡슐화된 PDF가 포함된 특정 DICOM 인스턴스를 검색하고 해당 텍스트 콘텐츠를 추출합니다.
➡️ DICOM 이미지 보내기
move_series: C-MOVE를 사용하여 특정 DICOM 시리즈를 구성된 다른 DICOM 노드로 보냅니다.move_study: C-MOVE를 사용하여 전체 DICOM 연구를 다른 구성된 DICOM 노드로 보냅니다.
⚙️ 유틸리티
list_dicom_nodes: 현재 활성화된 DICOM 노드를 표시하고 구성된 모든 노드를 나열합니다.switch_dicom_node: 후속 작업을 위해 활성 DICOM 노드를 변경합니다.verify_connection: C-ECHO를 사용하여 현재 활성화된 노드에 대한 DICOM 네트워크 연결을 테스트합니다.get_attribute_presets: 메타데이터 쿼리 결과에 대해 사용 가능한 세부 정보 수준(최소, 표준, 확장)을 나열합니다.
예시 상호작용
다음과 같은 도구를 연결하여 복잡한 질문에 답할 수 있습니다.
---------------------------------------------------------------------
🧑⚕️ 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³"
---------------------------------------------------------------------📈 기여하기
테스트 실행
테스트를 실행하려면 Orthanc DICOM 서버가 필요합니다. Docker를 사용할 수 있습니다.
# Navigate to the directory containing docker-compose.yml (e.g., tests/)
cd tests
docker-compose up -dpytest를 사용하여 테스트를 실행합니다.
# From the project root directory
pytestOrthanc 컨테이너를 중지하세요:
cd tests
docker-compose down디버깅
MCP Inspector를 사용하여 서버 통신을 디버깅하세요.
npx @modelcontextprotocol/inspector uv run dicom-mcp /path/to/your_config.yaml --transport stdio🙏 감사의 말
pynetdicom을 사용하여 빌드됨
PDF 텍스트 추출을 위해 PyPDF2를 사용합니다.