dcmclient¶
One static binary, 55 DICOM tools — first-class for people and for agents.
dcmclient is a complete command-line DICOM toolbox: query and move studies over
DICOMweb and DIMSE, and inspect, convert, author, extract, edit, de-identify
and validate Part-10 files. The very same tools are a self-describing agent
surface — a built-in MCP server and a machine-readable manifest with
per-tool JSON schemas — so an LLM drives the whole roster with zero glue. One
registry, two ways to run it.
# drive it yourself
$ dcmclient search https://pacs.example.com --patient-id 42 --json
$ dcmclient dcm2nii ct_series/ ct.nii.gz
# …or hand it to an agent
$ dcmclient mcp # serve every tool to an MCP client over stdio
$ dcmclient manifest # per-tool inputSchema + outputSchema as JSON
Not a medical device
Not intended or cleared for clinical or diagnostic use — outputs are for research and engineering only.
A complete command-line toolbox¶
One binary covers the whole job — no SDK, no per-tool glue, no runtime dependencies:
- Networking — QIDO / WADO / STOW / DELETE over DICOMweb, the full C-ECHO / C-STORE / C-FIND / C-GET / C-MOVE DIMSE set plus a Storage SCP, and pull→push migration between archives.
- Local file tools — inspect (dump / JSON / XML / semantic content), render & extract (raw pixels / PNG / video / waveforms / NIfTI), convert & transcode (every codec, including JPEG-XL and HTJ2K), author (SEG / parametric map / SR / KOS), and edit / de-identify / validate.
$ dcmclient store-scu PACS 11112 ./*.dcm --aec PACS
$ dcmclient dcmdeident study/*.dcm --out-dir deid/
$ dcmclient dcmvalidate ct.dcm --json
Prefer per-tool commands? One symlink gives each tool its own name —
ln -s dcmclient dcmdump makes dcmdump scan.dcm work, with no extra binary to
ship.
A self-describing agent surface¶
Every tool is declared once in a single registry. That one declaration is the
command-line parser, the manifest self-description, and the mcp
tools/list reply — so the agent surface can never drift from what the binary
actually does:
mcp— a live Model Context Protocol server over stdio; any MCP client (Claude Desktop, Claude Code, your own runtime) discovers and calls all 55 tools with zero per-tool wiring.manifest— each tool'sinputSchema+outputSchemaas JSON, ready to drop into a function-calling tool definition. Filter byreadOnly/network/writesFilesto expose only a safe subset.- JSON envelope —
{tool, ok, exit_code, result, error}on--json;stdoutis machine output,stderris human diagnostics; graduated exit codes separate bad input from runtime failure.
→ See Agent integration for MCP client config and an end-to-end run.
Where to go¶
- Install — download the binary, or run the container (agents / CI)
- Quickstart — networking, local tools, the agent surface
- Agent integration — MCP config,
manifest, an end-to-end run - Tool reference — every flag of every tool, generated from
manifestso it cannot drift from the binary