使用说明
HelixMCP (BioMCP Fabric Gateway)
Governed, reproducible MCP gateway skeleton for bioinformatics compute + database tooling:
- Artifact-first data model (handles, metadata, previews)
- PNG artifacts recognized as
image/pngwith deterministic header preview metadata - Policy-gated tool calls (allowlists + quotas)
- Run/provenance capture (inputs, outputs, logs, checksums)
- Docker execution backend (read-only rootfs, no network by default)
- MCP server surface for intent-level tools
This repository is intentionally in silico only: it focuses on deterministic execution, verification, and artifact/provenance handling as software.
Quickstart (dev)
npm install
npm run dev
Tests
npm test
HELIXMCP_TEST_DOCKER=1 npm test
Live Studio GUI testing
The existing gateway exposes Studio state, EVS loading, tab navigation, visualization edits, screenshots, and pilot reviewer tools. Pilot packages enter as ZIP artifacts; reviewer observations and screenshots leave as artifacts with run provenance. See the GUI testing guide for setup, tool arguments, and a live stdio MCP smoke using synthetic inputs.
Nix CI
nix flake check builds HelixMCP and runs the TypeScript typecheck plus the
default Vitest suite. .github/workflows/ci.yml calls the shared Omnis Nix CI
workflow on pushes to master and manual dispatch.
Hybrid toolpack example (Docker or Slurm)
samtools_flagstatsupportsbackend: "docker" | "slurm"(default via policy; falls back to"docker").- This is the same tool contract and deterministic
run_id, with the backend selecting the execution fabric (immediate Docker vs queued Slurm). - With
backend: "slurm", the tool checkpointsqueuedand returns arun_idplus Slurm metadata; useslurm_job_collectto ingest declaredout/outputs as artifacts. - Set
execution.default_backend: "slurm"in policy to make Slurm the default (requiresslurmpolicy config). - For a cluster smoke test see
docs/slurm_cluster_smoke.md.
FASTQ QC bundle (Slurm multi-step)
The qc_bundle_fastq tool is deterministic and audit-friendly. On backend: "slurm" it never polls; it advances only when run state and artifacts are visible in Postgres.
- Call
qc_bundle_fastq(returnsphase="fastqc_submitted"andexpected_collect_run_ids). - Collect each FastQC run: call
slurm_job_collectfor every run id listed. - Call
qc_bundle_fastqagain (returnsphase="multiqc_submitted"and the MultiQC run id to collect). - Collect the MultiQC run: call
slurm_job_collectfor that run id. - Call
qc_bundle_fastqa final time to getphase="complete"and the finalbundle_report_artifact_id.
Audit bundle export (CLI)
Export and verify an offline audit bundle for a run (dir or deterministic .tar): see docs/bundle_export.md.
Configuration
DATABASE_URL(optional): if unset, gateway uses in-memory Postgres (pg-mem) for dev.GATEWAY_POLICY_PATH(default:policies/default.policy.yaml)GATEWAY_IMPORT_ROOT(optional): expands${GATEWAY_IMPORT_ROOT}inlocal_path_prefix_allowlistforartifact_importwithlocal_path.OBJECT_STORE_DIR(default:var/objects)RUNS_DIR(default:var/runs): per-run workspaces for tool execution.AUTO_SCHEMA(default:true): applydb/schema.sqlon startup (recommended for dev).
Next steps
- Stand up Postgres + object store (see
instructions.md) - Implement real executors (Slurm/K8s adapters) behind the policy boundary
- For Slurm smoke test see
docs/slurm_cluster_smoke.md
License
Apache-2.0 (see LICENSE).
Security
See SECURITY.md. Please report vulnerabilities via GitHub Security Advisories (private reporting).
Stability
See VERSIONING.md, TOOLPACK_ABI_V1.md, and EVENTS_V1.md for the stability contract.
