{"id":"7d5e697a-6904-480b-87de-abe7817dedc0","slug":"dicomflow","kind":"mcp","name":"DICOMFlow","summary":"Native macOS DICOM toolbench & viewer — SwiftUI + Metal + in-process DCMTK. DIMSE/DICOMweb/FHIR/HL7 tester, GPU volume rendering, MCP server for AI agents.","owner":"Krasnov777","repoUrl":"https://github.com/Krasnov777/DICOMFlow","license":"MIT","licenseTier":"permissive","trust":"community","stars":2,"match":null,"fewStars":true,"format":"mcp","createdAt":"2026-01-12T20:37:04.000Z","addedAt":"2026-10-21T08:15:00.367Z","logoUrl":"https://avatars.githubusercontent.com/u/62969603?v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["cloud-infra"],"tags":["dcmtk","dicom","macos","medical-imaging","metal","pacs","swiftui"],"runtime":"binary","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-22T21:36:12.045Z","sample":false,"url":"https://conduits.dev/tools/dicomflow","language":"C","transports":["stdio"],"install":{},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"# DicomFlow\n\nA native macOS app for engineers to **test DICOM networking** and **view DICOM\nimages** — a developer's toolbench for PACS integration work, protocol debugging,\nand poking at datasets. **Not a medical product**: no diagnosis, no clinical use.\n\nFully native — SwiftUI + Metal, with **DCMTK statically linked in-process** via an\nObj-C++ bridge. No Python, no subprocesses, no runtime dependencies.\n\n## Install\n\nRequires **macOS 26+** (Apple Silicon). Grab the signed & notarized DMG from the\n[latest release](https://github.com/Krasnov777/DICOMFlow/releases/latest), or use\nHomebrew:\n\n```bash\nbrew install --cask krasnov777/tap/dicomflow\n```\n\n## Two modes\n\n### Tester / Toolbench\nA sidebar of DICOM tools:\n\n- **Networking** — C-ECHO, C-STORE, Query/Retrieve (C-FIND / C-MOVE / C-GET),\n  **Modality Worklist** (MWL C-FIND), **DICOMweb** (QIDO / WADO / STOW), **FHIR**\n  (ImagingStudy), **HL7 v2 over MLLP** (send + listener), a built-in **Test\n  SCP** / mini-PACS, a **Negotiation Probe** (which presentation contexts does a\n  peer accept?), and a **Protocol Inspector** — a decoded DICOM-traffic timeline\n  that also **imports .pcap/.pcapng** captures and dissects their PDUs.\n- **Files & tags** — tag **Inspector**, **Editor**, **Anonymizer** (PS3.15 Basic\n  Profile), **Redact Pixels** (burned-in text detection via Vision OCR),\n  a conformance **Validator** (full IOD validation), two-file **Compare** (tag\n  diff), **DICOMDIR** reader, **Dataset Dump**, and a **Synthetic Generator**.\n- **DICOM TLS** (BCP 195) on every outgoing connection; per-target toggle.\n\nSee **[docs/TESTER-TOOLS.md](docs/TESTER-TOOLS.md)** for the full tour.\n\n### Viewer\n2D slices (axial / coronal / sagittal, keyboard-driven, right-drag W/L),\nOrthanc-style **2×2 MPR** with a linked crosshair, and **GPU volume rendering**\nin Metal with five reconstruction modes (MIP, MinIP, X-Ray/DRR, Volume,\nIso-Surface) — arcball or turntable rotation, clip planes, transfer-function\ngallery, view presets. Persistent measurements (distance / ROI + HU histogram /\nangle), multi-frame stacks, Structured Reports rendered as text, PNG and movie\nexport. Codecs: uncompressed / JPEG / JPEG-LS / RLE / **JPEG 2000**.\n\nSee **[docs/VIEWER.md](docs/VIEWER.md)**.\n\n### MCP server\n`dicomflow-mcp` exposes the same native DICOM engine to AI agents as an\n[MCP](https://modelcontextprotocol.io) stdio server — echo, query, retrieve,\ninspect tags, render slices. It's a separate un-sandboxed command-line tool\n(built from this repo, distributed outside the app sandbox).\nSee **[docs/MCP.md](docs/MCP.md)**.\n\n## Build\n\nRequires **macOS 26**, Xcode 26+, and [XcodeGen](https://github.com/yonaskolb/XcodeGen)\n(`brew install xcodegen`). Apple Silicon only.\n\n```bash\n# One-time: build the DCMTK static framework (~2 min) and OpenJPEG (~1 min)\nbash native/build-dcmtk.sh        # → native/DCMTKit.xcframework\nbash native/build-openjpeg.sh     # → native/openjpeg-install\n\n# Generate the Xcode project and build\nxcodegen generate\nxcodebuild -project DicomFlow.xcodeproj -scheme DicomFlow -configuration Debug \\\n  -derivedDataPath build build\n\n# Run\nopen build/Build/Products/Debug/DicomFlow.app\n\n# Verify (unit tests + build + headless integration hooks; network peers auto-skip)\nbash scripts/verify.sh            # or --fast for unit tests only\n```\n\nBuilds are **unsigned by default** so anyone can compile without certificates\n(the App Sandbox stays on). Maintainers produce release DMGs with\n`scripts/notarize.sh`, which signs, notarizes, and staples both the app and the\nDMG container itself. OpenSSL static libs are vendored in `native/openssl/`.\n\nLive-PACS tests are opt-in: `TEST_RUNNER_ORTHANC_HOST=<host> xcodebuild … test`\n(xcodebuild forwards env vars to the test runner only with the `TEST_RUNNER_`\nprefix; optional `TEST_RUNNER_ORTHANC_PORT` / `TEST_RUNNER_ORTHANC_AE`) runs\nround-trip tests against a real Orthanc; unset, the suite is fully offline.\n\n## Layout\n\n```\nApp/         SwiftUI app target (DicomFlowApp, AppState, RootView, Settings)\nSources/     DicomNative (Obj-C++ ↔ DCMTK) · DicomEngine (+ DICOMweb/FHIR/HL7 clients)\n             DicomModel · MetalRender · DesignSystem · AppCore · TesterUI · ViewerUI\nmcp/         dicomflow-mcp — MCP stdio server target\nnative/      DCMTK + OpenJPEG build scripts (outputs git-ignored) · vendored\n             fmjpeg2k codec + OpenSSL static libs (committed)\nTests/       XCTest logic tests (offline; live tests gated by ORTHANC_HOST)\nproject.yml  XcodeGen spec — the .xcodeproj is generated, never committed\nscripts/     verify.sh · build-mcp.sh · notarize.sh · tls-proxy.py\ndocs/        ARCHITECTURE · TESTER-TOOLS · VIEWER · MCP · DECISIONS · PROGRESS · BACKLOG\n```\n\n## Docs\n\n- [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) — components, native engine, Metal pipeline\n- [docs/TESTER-TOOLS.md](docs/TESTER-TOOLS.md) — every Tester tool, key files, headless hooks\n- [docs/VIEWER.md](docs/VIEWER.md) — viewer layouts, tools, keyboard shortcuts, data support\n- [docs/MCP.md](docs/MCP.md) — use DicomFlow as an AI-agent tool\n- [docs/DECISIONS.md](docs/DECISIONS.md) — engineering decision log\n- [docs/PROGRESS.md](docs/PROGRESS.md) / [docs/BACKLOG.md](docs/BACKLOG.md) — status & roadmap\n\n## License\n\n[MIT](LICENSE). Bundles DCMTK (BSD-3), OpenJPEG (BSD-2), fmjpeg2koj\n(Apache-2.0), and OpenSSL (Apache-2.0) — see\n[THIRD-PARTY-NOTICES.md](THIRD-PARTY-NOTICES.md).\n\nDicomFlow is a testing and visualization tool for engineers. It is **not a\nmedical device** and must not be used for diagnosis or treatment.\n"}