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.
npm install
npm run devnpm test
HELIXMCP_TEST_DOCKER=1 npm testsamtools_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.
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.
Export and verify an offline audit bundle for a run (dir or deterministic .tar): see docs/bundle_export.md.
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).
- 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
Apache-2.0 (see LICENSE).
See SECURITY.md. Please report vulnerabilities via GitHub Security Advisories (private reporting).
See VERSIONING.md, TOOLPACK_ABI_V1.md, and EVENTS_V1.md for the stability contract.