
OpenHCS
io.github.OpenHCSDevPublished by GitHub account OpenHCSDevv0.8.6Updated Oct 24, 2026
Inspect, author, validate, and run high-content microscopy workflows.
Overview
Local MCP server for OpenHCS that lets an assistant inspect, author, validate and run high-content microscopy image-analysis pipelines.
- What you can do
- Inspect the connected execution server's available functions and capability profiles
- Build and validate typed microscopy pipelines from a folder or plate and an analysis goal
- Run pipelines and inspect results, including viewer review in Napari or Fiji
- Author and revise generated Python, and register custom functions under governance
- Inspect and report on benchmark and measured-run receipts (read-only)
- When to use it
- Useful for imaging scientists and research software teams running high-content studies across many wells, sites, channels, Z planes or time points, who want an agent to build, validate, run and review a pipeline that stays editable in the GUI and as Python.
- Requirements
- Runs as a local stdio process on the desktop (desktop only, no web executable). Installed from PyPI as openhcs with the mcp extra, launched via openhcs-mcp or uvx; the graphical installers bundle it. Python 3.11 or 3.12; GPU extras need CUDA 12 on supported NVIDIA hardware. No authentication or environment variables declared.
Installation
In SourceWeft
- Open OpenHCS in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
OpenHCS
Turn high-content microscopy images into reproducible measurements
One reviewable workflow across the GUI, Python, CellProfiler, and local agents
[PyPI version] [License: MIT] [Python 3.11-3.13] [GPU Accelerated] [Documentation]
OpenHCS is designed for imaging scientists and research software teams running high-content studies where many wells, sites, channels, Z planes, or time points must be analysed consistently. Source selection, processing steps, and result definitions stay together in one validated pipeline instead of being split across interface-only state, scripts, and automation.
It is a good fit when a workflow must remain reviewable across visual editing,
code, and automation. The same pipeline can be edited in the desktop GUI or as
Python, imported from supported CellProfiler .cppipe files, and built or
reviewed through the local MCP surface.
Install
Windows installer · macOS installer · Installation options
The graphical installers set up an isolated CPU-safe desktop environment with the OpenHCS GUI, CellProfiler compatibility, local MCP server, Napari, Fiji/ImageJ, and Bio-Formats. GPU libraries remain optional.
See OpenHCS in use
[OpenHCS desktop application with several assay plates]
Browse the UI and viewer gallery · Watch an agent build, debug, run, and inspect a workflow
OpenHCS processes large microscopy datasets with a compile-then-execute architecture. Pipelines are validated across the selected execution axes before processing starts, preventing late failures after expensive work. Design pipelines in the GUI, export to Python, edit as code, and re-import — switching between visual and programmatic workflows. The local MCP exposes that same workflow model to supported agents, so agent-authored pipelines remain visible, editable, and reviewable in the GUI and generated Python.
⚡ Key Capabilities
🧩 The OpenHCS Ecosystem
OpenHCS is built on 8 purpose-extracted, separately published libraries — each solving a general problem and all composed into one platform:
🔬 Microscope & Function Support
Processing domains: image preprocessing · segmentation · cell counting · stitching (MIST + Ashlar GPU) · neurite tracing · morphology · measurements
Dimensionality is function-defined rather than a global mode: true volumetric segmentation and measurement routes coexist with plane-local functions, whose labels are not silently stitched across Z. See the dimensionality and measurement capability reference.
🚀 Quick Start
For most desktop users, download the Windows installer or macOS installer. Neither download requires ZIP extraction or an existing Python installation. When upgrading OpenHCS 0.7.23 or earlier, follow the one-time installer migration.
If macOS blocks the official bootstrap because it is unsigned and not notarised, try to open OpenHCS Installer.app, then go to System Settings > Privacy & Security, scroll to Security, click Open Anyway, authenticate, and confirm Open. Only override Gatekeeper for the disk image downloaded from the official OpenHCS GitHub release. Apple documents the current recovery steps here.
For a manual installation, create a virtual environment and install the same CPU-safe desktop surface as the graphical installers:
Smaller environments can select only the required features:
The GUI and execution services consume the same list[FunctionStep],
PipelineConfig, and typed execution bundle. See the
API orientation for the explicit
low-level execution call and progress lifecycle.
Maintainers running CellProfiler/OpenHCS comparisons can use the packaged
openhcs-benchmark command. openhcs-benchmark list-cases --manifest PATH
checks declared case sources without acquiring data or starting a run; the
expert openhcs_list_benchmark_cases MCP tool exposes the same selection.
Each comparison run records a typed receipt with
its lifecycle state, exact rerun command, declared work, and structured result
artifacts. Use a new or empty output directory; an occupied one is rejected
before the run loads its manifest. On the expert full MCP surface,
openhcs_inspect_benchmark_run
can inspect an existing result directory allowed by the local read-path policy.
openhcs-benchmark inspect-run --output-dir PATH reads the same typed inspection;
both routes page structured artifacts through artifact_limit and
artifact_offset instead of returning an unbounded inventory.
openhcs_report_benchmark_run and openhcs-benchmark inspect-run --output-dir PATH --report render bounded case outcomes from the typed receipt and
observations. These MCP routes are read-only: they do not launch, resume, cancel, or rerun a
benchmark, and a recorded receipt is provenance rather than a scientific parity
claim.
For a single ordinary measured pipeline, openhcs-benchmark inspect-measured --output-dir PATH
and the expert MCP inspection/report tools read the same
validated-run receipt and check retained source, observation, and summary
digests. Archived receipts without the latter two digests remain readable but
cannot verify those files. These routes do not create a
second pipeline runner or job-status system.
openhcs-benchmark run-measured --plate PLATE --pipeline-source-file PIPELINE.py --output-dir EVIDENCE --run-id ID --wait-timeout-ms 120000 submits that
pipeline through ordinary headless job control, then calls the same receipt
finalizer as MCP. Use --execution-plate PREPARED_PLATE when the input workspace
has been prepared separately; the evidence directory must be empty.
Use --observation-scope outcomes to retain per-axis success and provenance
without transferring runtime arrays; this does not compare output values.
After an ordinary headless job completes, the expert
openhcs_finalize_measured_pipeline_run tool can validate its runtime
observation and retain that receipt from the exact submitted pipeline and
server completion record. It does not submit another job.
📦 All installation options
The gpu extra requires a compatible CUDA 12 environment on a supported
NVIDIA platform. For a CPU-only
desktop installation, install openhcs[gui] without the gpu extra.
🗄️ OMERO integration
OMERO requires zeroc-ice, whose compatible wheels are not published through
the normal project metadata. Install the helper requirements before the extra:
Equivalent requirements-file installation:
Supported on Python 3.11 and 3.12. See Glencoe Software for manual installation.
📖 Documentation
⚙️ Architecture Highlights
Resolved, typed pipeline compilation — catch errors before execution starts
The authoring surface remains an ordered linear step list. ObjectState inheritance keeps defaulted configuration sparse, while compilation derives and exposes the exact source and artifact dependencies required for execution; the derived dependency graph is not a second workflow the user must author.
Pipelines are compiled for every selected execution axis before processing begins. Runtime workers consume the compiled bundle rather than reinterpreting mutable declaration objects. Read more →
Dual-Axis Configuration — context hierarchy × class MRO
Resolution walks two axes simultaneously: the context stack (Global → Pipeline → Step) and the class MRO (inheritance chain). Built on contextvars for thread-safe, scope-isolated resolution. Preserves None vs concrete value distinction for proper field-level inheritance. Powered by ObjectState. Read more →
Bidirectional GUI ↔ Code — code generation at any scope level
Any window holding ObjectState objects can generate and re-import executable Python:
Each scope encapsulates all lower-scope imports. Generated code is fully executable without additional setup. Edit in your IDE or external editor, save, and the GUI re-imports via AST parsing. Powered by pycodify + python-introspect. Read more →
Cross-Window Live Updates — class-level registry + Qt signals
A class-level registry tracks all active form managers. When a value changes in any config window, Qt signals propagate the change to every affected window with debounced, scope-isolated refreshes. Global → Pipeline → Step cascading with per-orchestrator isolation. Powered by PyQT-reactive. Read more →
More patterns — storage, viewer integration, function discovery, memory types
- Storage and viewer streaming: PolyStore owns generic storage and streaming payload primitives; ZMQRuntime owns process, transport, readiness, acknowledgment, and lifecycle protocols; OpenHCS
StreamingConfigdeclarations plus the Napari/Fiji adapters own viewer identity, display, and application policy. - Automatic Function Discovery: registry-discovered functions with contract analysis and type-safe integration via
python-introspect+metaclass-registry - Memory Type Management: Compile-time validation of array type compatibility with zero-copy conversion via
ArrayBridge - Custom Function Registration: Any Python function decorated with
@numpy,@cupy,@pyclesperanto, etc. is auto-integrated with contracts, UI forms, and the function registry - Evolution-Proof UI: Type-based form generation from Python annotations — adapts automatically when signatures change
🤝 Contributing
Contribution areas: microscope formats · processing functions · GPU backends · documentation
📄 License
MIT — see LICENSE.
🙏 Acknowledgments
OpenHCS evolved from EZStitcher and builds on Ashlar (stitching), MIST (phase correlation), pyclesperanto (GPU image processing), and scikit-image (image analysis).
OpenHCS's CellProfiler interoperability and parity validation build on the CellProfiler project's open-source software, documentation, and public example, tutorial, and benchmark materials. We thank the CellProfiler authors and contributors and the authors of the biological datasets they distribute. Please cite CellProfiler following its official citation guidance, including Stirling et al., CellProfiler 4: improvements in speed, utility and usability (2021).
Third-party project names and logos identify supported integrations, compatible clients, or software used by OpenHCS. They remain the property of their respective projects or owners; their appearance does not imply affiliation or endorsement.
Source: README.md at commit 6845c3a
Tools
0Version history
2- v0.8.6LatestSep 20, 2026
- v0.8.5Sep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts