deploy-mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited deploy-mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Deploying more than just the MCP server? Start from thedeploy-to-stagingskill (repo root.claude/skills/) — it routes a change through every layer of the stack in dependency order. This skill owns only the MCP layer.
gh workflow run "Deploy MCP Server" -f branch=main -f deploy_staging=truegh workflow run "Deploy MCP Server" -f branch=main -f deploy_production=truegh workflow run "Deploy MCP Server" -f branch=main -f deploy_staging=true -f deploy_production=truegh workflow run "Deploy MCP Server" -f branch=feat/my-branch -f deploy_staging=true# Watch the workflow run
gh run list --workflow="Deploy MCP Server" --limit 3
gh run watch <run-id>
# Check pod rollout
kubectl rollout status deploy/futuresearch-mcp-staging -n futuresearch-mcp-staging --timeout=5m
# Verify pods are running
kubectl get pods -n futuresearch-mcp-staging -o wideThe GitHub Actions workflow (.github/workflows/deploy-mcp.yaml) does:
latest on main)values.yaml — base configvalues.staging.yaml — staging overrides (MCP_SERVER_URL, REDIS_DB, replicaCount, host)values.secrets.staging.yaml — SOPS-decrypted secrets (Supabase, API keys)The deploy uses --atomic so it auto-rolls back on failure.
Edit futuresearch-mcp/deploy/chart/values.staging.yaml:
replicaCount: 2 # Change thisCommit, push, and redeploy.
# Staging
kubectl scale deploy futuresearch-mcp-staging -n futuresearch-mcp-staging --replicas=3
# Take offline
kubectl scale deploy futuresearch-mcp-staging -n futuresearch-mcp-staging --replicas=0| Environment | Namespace | Host | Upstream FutureSearch API | Redis DB |
|---|---|---|---|---|
| Staging | futuresearch-mcp-staging | mcp-staging.futuresearch.ai | engine-staging.futuresearch.ai/api/v0 (staging engine) | 14 |
| Production | futuresearch-mcp | mcp.futuresearch.ai | futuresearch.ai/api/v0 (prod engine) | (default in values.yaml) |
The two environments are fully separated, including their upstream engine. Staging MCP calls the staging engine API (FUTURESEARCH_API_URL in values.staging.yaml), not prod — so everyrow-cc-staging → mcp-staging → engine-staging (cohort-staging) is a self-contained pure staging route end to end. Production has its own matching chain. This means a branch that changes both the engine API and the MCP tools can be exercised entirely on staging, provided you deploy each piece from your branch (see below).
Because the chain is cc-staging → mcp-staging → engine-staging, a full staging test of a feature branch needs each layer the branch touches deployed from that branch:
models.py/tools.py/ops.py):deploy the MCP server from your branch (-f branch=<your-branch> -f deploy_staging=true), or the staging MCP keeps serving the old tool schema and rejects the new arg.
your branch too — see the manage-engine-staging skill — since staging MCP calls engine-staging.
manage-web-staging.A change confined to one layer only needs that layer redeployed.
# View current secrets
sops -d futuresearch-mcp/deploy/chart/secrets.staging.enc.yaml
# Update a value
sops --set '["secrets"]["data"]["KEY_NAME"] "new-value"' futuresearch-mcp/deploy/chart/secrets.staging.enc.yamlCommit the encrypted file and redeploy.
| File | Purpose |
|---|---|
.github/workflows/deploy-mcp.yaml | CI/CD workflow (checks → build → deploy) |
futuresearch-mcp/deploy/chart/values.yaml | Base Helm values |
futuresearch-mcp/deploy/chart/values.staging.yaml | Staging overrides |
futuresearch-mcp/deploy/chart/secrets.enc.yaml | Production secrets (SOPS) |
futuresearch-mcp/deploy/chart/secrets.staging.enc.yaml | Staging secrets (SOPS) |
futuresearch-mcp/deploy/Dockerfile | Server container image |
gcloud auth application-default login if decryption fails.cancel-in-progress: false — if a deploy is running, the next one queues.--atomic means a failed deploy auto-reverts to the previous release. Check helm history if this happens.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.