ForenZX MCP Hub
Allows registering, health-checking, and discovering tools for a remote GitHub MCP server within the hub registry.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ForenZX MCP Hubstart a forensic analysis job on evidence.img and show status"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ForenZX MCP Hub v5
A low-maintenance forensic MCP control plane built on the original ForenZX v4 core.
It combines:
a forensic MCP endpoint at
POST /mcpbackward-compatible
POST /mcp/jsonrpcpersistent SQLite job metadata/results
a remote MCP server registry
encrypted remote MCP credentials
background health checks and
tools/listdiscoveryan operations dashboard at
/dashboardforensic pack registry with fail-closed digest validation
Ed25519 execution-record signing
safe maintenance actions (backup, VACUUM, audit pruning, pack reload)
Docker sandbox hardening for local forensic packs
1. Fastest VPS start
unzip forenzx-mcp-hub-v5.zip
cd forenzx-mcp-hub-v5
./scripts/first_run.sh
nano .env # set ALLOWED_ORIGINS and review paths
docker compose up -d --buildOpen:
http://YOUR_SERVER:8000/dashboardUse the admin key generated in .env under ADMIN_API_KEYS.
Put the service behind HTTPS (Caddy/nginx/Traefik) before exposing it publicly.
Related MCP server: agentropix-mcp
2. Local development
python -m venv .venv
source .venv/bin/activate
pip install -e .
ENVIRONMENT=development python -m core.mainDevelopment defaults when no .env exists:
admin key:
dev-admin-keyanalyst key:
dev-analyst-key
These values are rejected as production credentials.
3. Dashboard
The dashboard has six small operational surfaces:
Overview
Service counters, remote MCP health, packs and recent jobs.
MCP Servers
Add/edit/delete a remote MCP server with:
name and type
MCP URL
Streamable HTTP or legacy JSON-RPC transport
bearer or
X-API-Keyauthenticationencrypted secret at rest
tags and notes
optional maintenance URL
enable/disable
health probe
tools/listdiscoveryoptional restart request
The browser never receives stored remote MCP secrets.
Forensic Packs
Shows image pins and pack registry errors. Placeholder image digests are disabled automatically. A verified RepoDigest can be added from the dashboard; it is stored as a SQLite override while packs/ stays read-only.
Jobs
Persistent analysis job history. If the process is restarted while a local async job is active, the job is marked FAILED / INTERRUPTED_BY_RESTART instead of pretending it is still executing.
Maintenance
Allowlisted actions only:
SQLite backup
SQLite
VACUUMaudit event pruning
registry JSON export without secrets
There is no arbitrary shell console in the dashboard.
Audit
Tracks registry changes, probes, restarts, pack changes and maintenance actions.
4. MCP endpoint
New clients should use:
POST /mcp
MCP-Protocol-Version: 2026-07-28
Authorization: Bearer ...or:
X-API-Key: ...Core tools:
forenzx_healthforenzx_capabilitiesforenzx_packs_listforenzx_analysis_startforenzx_analysis_statusforenzx_analysis_cancelforenzx_analysis_results
Legacy v4 tool aliases remain accepted so an older client does not break immediately.
5. Remote MCP registry
The hub can supervise many different MCP servers without merging their code into ForenZX.
Typical examples:
ForenZX forensic MCP
filesystem MCP
GitHub MCP
database MCP
browser MCP
custom internal MCPThe registry stores operational metadata in SQLite. Bearer/API-key values are encrypted with a Fernet key derived from SERVER_HMAC_SIGNING_KEY and are never returned by the management API.
Changing SERVER_HMAC_SIGNING_KEY without migrating the registry will make previously stored remote credentials undecryptable. Treat that key as persistent infrastructure state.
6. Forensic Docker execution
For local forensic pack execution, the host needs Docker and the application needs Docker access.
The provided docker-compose.yml intentionally does not mount /var/run/docker.sock by default. This lets the hub/dashboard run safely even when forensic execution is hosted elsewhere or not yet enabled.
If you deliberately enable local Docker pack execution, review docs/security/SECURITY-BOUNDARIES.md first. A separate worker host remains the preferred production model.
7. MVT pack digest
The original project shipped an obvious placeholder digest for the MVT image. v5 detects it and disables that pack.
To enable the pack:
Pull/inspect the exact approved MVT image on your trusted worker.
Obtain its canonical RepoDigest:
sha256:<64 hex>.In Dashboard → Forensic Packs, choose Set real digest.
Re-run readiness and a controlled smoke test.
The system no longer accepts short Docker image IDs as a substitute for a RepoDigest.
8. Health endpoints
GET /health/live
GET /health/ready
GET /api/system/capabilities
GET /api/keys/health/live means the process answers.
/health/ready reports pack/signing/database readiness separately and can return BLOCKED in production when no usable forensic pack is enabled.
9. Storage
Default persistent state:
/data/forenzx.db
/data/ed25519-private.pem
/data/backups/Mount /data persistently in production.
10. Verification
Recommended release gate:
python -m compileall core packs workers
ruff check core packs workers tests
mypy core packs workers
pytest -qDocker-dependent tests should run on a machine with the Docker SDK and a Docker daemon. Never label them PASS when they were skipped because the infrastructure was unavailable.
11. Google AI Studio / Gemini
See docs/architecture/GOOGLE-AI-STUDIO.md.
The normal architecture is:
Gemini / AI Studio
↓
remote MCP over HTTPS
↓
ForenZX MCP Hub
↓
policy + registry + audit + jobs
↓
trusted forensic worker / Docker packsKeep deterministic forensic evidence separate from model interpretation.
12. Repository structure
.github/ CI workflow, Dependabot, CODEOWNERS, issue templates
core/ control plane: API, MCP server, registry, ACL, jobs, audit, maintenance
packs/ deterministic forensic packs (evidence plane)
workers/ worker pool and forensic isolation (evidence plane)
tests/ unit / integration / security / e2e test suites
scripts/ first-run, security scan, import matrix verification
docs/
├── architecture/ ARCHITECTURE, COMPONENTS, DATA_FLOW, ADRs 0001–0006
├── security/ TRUST_BOUNDARIES, THREAT_MODEL, AI_EVIDENCE_BOUNDARY, AUDIT_MODEL
├── operations/ RUNBOOK, BACKUP_RESTORE
├── deployment/ PRODUCTION
├── audit/ ENTERPRISE_BASELINE, PHASE2_BACKLOG, PHASE1_RESULT
└── archive/v4/ historical v4 documentsRoot files: README.md, SECURITY.md, CONTRIBUTING.md, CHANGELOG.md,
LICENSE-TODO.md (license unresolved — manual blocker), Makefile,
.env.example, .pre-commit-config.yaml, .editorconfig, .gitattributes,
.gitignore, .dockerignore, .secrets.baseline.
13. Developer commands
make install # poetry install (run 'make lock' first to create poetry.lock)
make lint # ruff check
make format # ruff format
make format-check # ruff format --check
make typecheck # mypy core
make test # pytest -q
make security # repository security scan
make verify # local CI-equivalent quality gates
make run # start the API locally
make docker-build # build the production image
make compose-check # validate docker compose config
make backup # consistent SQLite backup with SHA-256 manifest
make db-check # database integrity + schema version checkmake verify is the local equivalent of CI. If Docker is unavailable,
compose/docker checks report NOT_VERIFIED — they never silently pass.
14. Security & architecture docs
Architecture & planes:
docs/architecture/ARCHITECTURE.mdADRs (incl. AI-not-evidence, SQLite default, no Docker socket, MCP trust model):
docs/architecture/adr/Trust boundaries & threat model:
docs/security/TRUST_BOUNDARIES.mdAI / evidence boundary:
docs/security/AI_EVIDENCE_BOUNDARY.mdReporting vulnerabilities:
SECURITY.md
15. Remote MCP trust model
Every new remote MCP server is registered as UNVERIFIED. Health probes
show liveness only — HEALTHY is not TRUSTED. Trust is granted explicitly
by an admin via PUT /api/v1/mcp-servers/{id}/trust (states: UNVERIFIED,
TRUSTED, QUARANTINED, DISABLED) and every transition is audited with a
trace id. See
docs/architecture/adr/0006-remote-mcp-trust-model.md.
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for mandates, delegation, policy-gated execution, credential grants, and audit.
Evidence-readiness MCP server: validate, audit, and score briefs, memos, and evidence packs.
A paid remote MCP for ClawManager, built to return verdicts, receipts, usage logs, and audit-ready J
A paid remote MCP for hosted MCP server, built to return verdicts, receipts, usage logs, and audit-r
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that exposes tools for issuing scoped agent credentials, delegating narrower child credentials, handling approvals, revoking task trees, and retrieving audit trails and evidence packets.141Apache 2.0
- AlicenseNot gradedqualityCmaintenanceA governed MCP server for digital-forensics and incident-response (DFIR) work, exposing curated forensic tools (Volatility 3, Plaso, RegRipper, etc.) through a single FastMCP HTTP endpoint with bearer-token authentication and tamper-evident audit logging.MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that provides programmatic access to the SOLVE-IT digital forensics knowledge base, enabling LLMs to query, navigate, and search forensic techniques, weaknesses, mitigations, objectives, and citations.2MIT
- FlicenseNot gradedqualityCmaintenanceMCP server that evaluates agent actions against a Policy State Machine, emits a tamper-evident audit trail, and dispatches approved transitions to internal or federated handlers.-