Skip to content

mcp: create_deploy gains private + allowed_ips for Pro-tier private deploys (v0.10.0)#5

Merged
mastermanas805 merged 1 commit into
masterfrom
feat/private-deploy-mcp-fresh
May 12, 2026
Merged

mcp: create_deploy gains private + allowed_ips for Pro-tier private deploys (v0.10.0)#5
mastermanas805 merged 1 commit into
masterfrom
feat/private-deploy-mcp-fresh

Conversation

@mastermanas805
Copy link
Copy Markdown
Member

Summary

Track C of the private-deploys feature (pairs with Track A's backend on
api/internal/handlers/deploy.go). Extends the MCP create_deploy tool
with two optional fields so AI coding agents can spin up private apps
without touching the dashboard.

  • private: boolean — restrict the deploy to IPs in allowed_ips
  • allowed_ips: string[] — IP / CIDR allowlist (["1.2.3.4", "10.0.0.0/8"])
  • Forwarded to POST /deploy/new as multipart form fields
  • get_deployment + list_deployments surface private + allowed_ips
    back to the agent
  • Tier-gate copy in the tool description: Pro+ required; hobby returns 402
    with agent_action

Bumps version to 0.10.0 (additive feature, no breaking changes).

Test plan

  • npm test — all 10 tests pass (7 pre-existing + 3 new):
    • tools/list advertises private (boolean) + allowed_ips (array)
    • create_deploy description includes the Pro-tier gate note
    • create_deploy accepts { private: true, allowed_ips: [...] } and forwards through (no Zod rejection)
  • npm run build — clean TypeScript compile
  • Wire-level smoke test against Track A's /deploy/new once that PR lands

Coordination with Track A

Track A is shipping the backend in parallel. The shared contract is:

POST /deploy/new
  private?: boolean
  allowed_ips?: string[]
  → 402 on hobby with agent_action
  → 400 on validation failures

If Track A renames allowed_ipsallowed_cidrs, reconcile post-merge
with a one-line schema rename in src/index.ts and the
form.append("allowed_ips", …) line in src/client.ts. The MCP tool
description references "IPs" not "CIDRs"; minor copy fix accompanies that
rename. This assumption is documented in the inline JSDoc on both
CreateDeployParams and Deployment.

Out of scope (flagged for the operator)

Lockfile note

package-lock.json also refreshed — it was stale (carried the old
@instant/mcp name from before the instanode-mcp rename landed). The
diff is a metadata correction, not a dep change.

Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com

…eploys (v0.10.0)

Track C of the private-deploys feature — pairs with Track A (backend
api/internal/handlers/deploy.go) which is shipping in parallel.

Adds two optional fields to the create_deploy MCP tool:
  - private: boolean — restrict deploy to IPs in allowed_ips
  - allowed_ips: string[] — IP / CIDR allowlist enforced at the Ingress

Forwarded to POST /deploy/new as multipart form fields. The tool
description carries the tier-gate note (Pro+ required; hobby returns
402 with agent_action). get_deployment + list_deployments surface
private + allowed_ips back to the agent.

Lockfile also refreshed (was stale from the @instant/mcp → instanode-mcp
package rename in a prior commit).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@mastermanas805 mastermanas805 merged commit b072154 into master May 12, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant