Skip to content

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's inputSchema + outputSchema as JSON, ready to drop into a function-calling tool definition. Filter by readOnly / network / writesFiles to expose only a safe subset.
  • JSON envelope{tool, ok, exit_code, result, error} on --json; stdout is machine output, stderr is 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 manifest so it cannot drift from the binary