DICOM MCP Server for Medical Imaging Systems ð¥
ããŒã«ã«DICOM MCP Server for Medical Imaging Systems ð¥ ã«ã€ããŠ
dicom-mcp ã¯ãAI ã¢ã·ã¹ã¿ã³ãã PACS ã VNA ãªã©ã® DICOM ãµãŒããŒäžã®ããŒã¿ãç §äŒãèªã¿åãã転éã§ããããã«ãã MCP ãµãŒããŒã§ããå»çšç»åãæ±ãéçºè ãç ç©¶è ã察象ãšããŠãããREADMEã§ã¯èšåºå©çšãæ£è ããŒã¿ãå«ãå®éçšããŒã¿ããŒã¹ãžã®æ¥ç¶ã¯æ³å®ãããŠããªããšæèšãããŠããŸãã
äž»ãªæ©èœ
- 01æ£è ãæ€æ»ãã·ãªãŒãºãã€ã³ã¹ã¿ã³ã¹ã®ç §äŒ
- 02DICOM ã«æ ŒçŽããã PDF ã¬ããŒãããã®ããã¹ãæœåº
- 03C-MOVE ã«ããã·ãªãŒãºãæ€æ»ã®å¥ããŒããžã®éä¿¡
- 04è€æ°ã® DICOM ããŒãã®ç®¡çãšæ¥ç¶ç¢ºèª
- 05ã¡ã¿ããŒã¿ã®è©³çŽ°åºŠããªã»ããïŒminimalãstandardãextendedïŒ
掻çšã·ãŒã³
- 01æ£è ã®éå»ã® CT ã¬ããŒããååŸãæ¬æãæœåº
- 02ç»åã·ãªãŒãºã AI ã®ã»ã°ã¡ã³ããŒã·ã§ã³ãåé¡ãšã³ããã€ã³ããžéä¿¡
- 03ããŒã«ã«ã® Orthanc ç°å¢ã§ DICOM ã¯ãŒã¯ãããŒãéçºã»æ€èšŒ
MCP 察å¿
æ¬ãããžã§ã¯ã㯠MCP ãµãŒããŒãšããŠåäœããç §äŒãPDF ããã¹ãæœåºãç»å転éãããŒã管çã®ããŒã«ã MCP ã¯ã©ã€ã¢ã³ãã«å ¬éããŸãã
èšå®
ããŒã«ã«ãµãŒããŒã®èšå®ã¯ã©ã®ã¯ã©ã€ã¢ã³ãã§ãå ±éã§ããã³ããŒããŠã¯ã©ã€ã¢ã³ãã® MCP èšå®ãã¡ã€ã«ã«è²Œãä»ããŠãã ããã
ãã®ãµãŒããŒã®ããã±ãŒãžããªã¢ãŒããšã³ããã€ã³ãã¯ãŸã ååŸã§ããŠããŸããããããžã§ã¯ãã® README ã®æé ã«åŸã£ãŠãã ããã
ããŒã«
ããŒã«ã«ãµãŒããŒã®ããŒã«ã¯ãã·ã³äžã§èµ·åããŠåããŠååŸã§ããŸããã¡ã³ãããŒã¯ãŸã ããŒã«äžèЧãæäŸããŠããŸããã
詳现
å»çšç»åã·ã¹ãã åã DICOM MCP ãµãŒã㌠ð¥
dicom-mcp ãµãŒããŒã䜿ããšãAI ã¢ã·ã¹ã¿ã³ããã 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ïŒã®èªã¿åãïŒã«ãã»ã«åããã PDFïŒèšåºã¬ããŒããªã©ïŒãå«ã DICOM ã€ã³ã¹ã¿ã³ã¹ãååŸããããã¹ããæœåºããŸãã
- â¡ïž DICOM ç»åã®éä¿¡ïŒã·ãªãŒãºãæ€æ»ããç»åã®ã»ã°ã¡ã³ããŒã·ã§ã³ãåé¡ãªã©ãè¡ã AI ãšã³ããã€ã³ããªã©ãã»ãã® DICOM éä¿¡å ã«éä¿¡ããŸãã
- âïž ãŠãŒãã£ãªãã£ïŒæ¥ç¶ã管çããæ€çŽ¢ãªãã·ã§ã³ã確èªããŸãã
ð ã¯ã€ãã¯ã¹ã¿ãŒã
ð¥ ã€ã³ã¹ããŒã«
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 ã§ã¯ã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 ã¯èšåºçšéãæ³å®ããŠãããã皌åäžã®ç é¢ããŒã¿ããŒã¹ãæ£è ã®æ©åŸ®ããŒã¿ãå«ãããŒã¿ããŒã¹ã«ã¯æ¥ç¶ããªãã§ãã ãããæ£è ããŒã¿ã®æå€±ããæ£è ããŒã¿ã®ã€ã³ã¿ãŒãããäžãžã®æµåºã«ã€ãªãããããããããŸããDICOM-MCP ã¯ãããŒã¿ã®ãã©ã€ãã·ãŒãå®å šã«ä¿ã€ãããããŒã«ã«ã§ãã¹ãããããªãŒãã³ãŠã§ã€ãã® LLM ãšãšãã«äœ¿çšã§ããŸãã
ïŒä»»æïŒãµã³ãã«ã® ORTHANC ãµãŒããŒ
å©çšã§ãã DICOM ãµãŒããŒããªãå Žåã¯ãDocker ã䜿ã£ãŠããŒã«ã«ã® ORTHANC ãµãŒããŒãèµ·åã§ããŸãã
ãªããžããªãã¯ããŒã³ãããã¹ãçšã®äŸåé¢ä¿ãã€ã³ã¹ããŒã«ããŸã pip install -e ".[dev]
cd tests
docker compose up -d
cd ..
pytest # uploads dummy pdf data to ORTHANC server
UI 㯠http://localhost:8042 ã«ãããŸãã
ð MCP çµ±å
ã¯ã©ã€ã¢ã³ãã®èšå®ïŒäŸïŒclaude_desktop_config.jsonïŒã«è¿œå ããŸãã
{
"mcpServers": {
"dicom": {
"command": "uvx",
"args": ["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ãæ¥ä»ãã¢ããªãã£ã説æãåä»çªå·ãStudy UID ã䜿ã£ãŠæ€æ»ãæ€çŽ¢ããŸããquery_seriesïŒã¢ããªãã£ãã·ãªãŒãºçªå·ïŒèª¬æãSeries UID ã䜿ã£ãŠãç¹å®ã®æ€æ»å ã®ã·ãªãŒãºãæ€çŽ¢ããŸããquery_instancesïŒã€ã³ã¹ã¿ã³ã¹çªå·ãŸã㯠SOP Instance 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ïŒã¡ã¿ããŒã¿æ€çŽ¢çµæã§äœ¿çšã§ãã詳现ã¬ãã«ïŒæå°ãæšæºãæ¡åŒµïŒãäžèŠ§è¡šç€ºããŸãã
察話äŸ
è€æ°ã®ããŒã«ã飿ºãããããšã§ãè€éãªè³ªåã«åçã§ããŸãã
ð ã³ã³ããªãã¥ãŒã·ã§ã³
ãã¹ãã®å®è¡
ãã¹ããå®è¡ããã«ã¯ã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 ã䜿çšããŠæ§ç¯ãããŠããŸã
- PDF ã®ããã¹ãæœåºã«ã¯ PyPDF2 ã䜿çšããŠããŸã
ã³ã¡ã³ã
MCP ã¯åããŠã§ããïŒ
ãããã³ã«ã®æŠèŠããæåã®ãµãŒããŒã®å°å ¥ãŸã§ãããããçåã«ãŸãšããŠçããŸãã
AI ã¢ããªã±ãŒã·ã§ã³ãå€éšã®ããŒã«ãããŒã¿ãœãŒã¹ã«çµ±äžçãªæ¹æ³ã§æ¥ç¶ããããã®ãªãŒãã³ãªãããã³ã«ã§ããã¯ã©ã€ã¢ã³ãã¯ã¢ãã«ãšã®å¯Ÿè©±ãæ ããMCP ãµãŒããŒã¯ããŒã«ã»ãªãœãŒã¹ã»ããã³ãããã³ãã¬ãŒããæäŸããŸããæšæºã¡ãã»ãŒãžã§ããåãããããã1 ã€ã®ãµãŒããŒãè€æ°ã®ã¯ã©ã€ã¢ã³ãã§åå©çšã§ããŸãã