You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: package.json
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
{
2
2
"name": "instanode-mcp",
3
-
"version": "0.9.0",
3
+
"version": "0.10.0",
4
4
"description": "MCP server for instanode.dev \u2014 lets AI coding agents provision ephemeral Postgres, Redis, MongoDB, NATS queues, S3-compatible object storage, webhook receivers, and deploy containerized apps over HTTPS, with optional bearer-token auth for paid users.",
Copy file name to clipboardExpand all lines: src/index.ts
+36-1Lines changed: 36 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -614,7 +614,9 @@ rotating an expiring token.`,
614
614
615
615
server.tool(
616
616
"create_deploy",
617
-
`Deploy a containerized application on instanode.dev (POST /deploy/new).
617
+
`Create a new deploy. Optionally set \`private: true\` + \`allowed_ips: ['1.2.3.4', '10.0.0.0/8']\` to restrict access to specific IPs. Requires Pro tier or higher. Useful when an agent is asked to deploy a CRM, internal dashboard, or staging app that should only be reachable by the user.
618
+
619
+
Deploys a containerized application on instanode.dev (POST /deploy/new).
618
620
619
621
The agent base64-encodes a gzip tarball of the user's project (must contain a
620
622
Dockerfile at the root), passes it as 'tarball_base64', and the API builds +
@@ -642,6 +644,10 @@ vault is per-team, per-env; rotate without redeploying). 'env_vars' and
642
644
'resource_bindings' are merged before being sent to the API; on collision,
643
645
'resource_bindings' wins.
644
646
647
+
Private deploys: set 'private: true' and pass 'allowed_ips' (IPs or CIDR
648
+
blocks) to restrict access at the Ingress. Pro tier or higher is required —
649
+
hobby tier returns 402 with an agent_action prompting the user to upgrade.
"Map of env var name → resource token UUID (e.g. { DATABASE_URL: '<postgres token>' }). The API resolves each token to its connection URL server-side. DO NOT pass raw connection URLs here — use create_postgres/create_cache/etc. to get tokens, then bind them."
683
689
),
690
+
private: z
691
+
.boolean()
692
+
.optional()
693
+
.describe(
694
+
"When true, the deploy is only reachable from IPs in 'allowed_ips'. Requires Pro tier or higher — anonymous and hobby callers get HTTP 402 with an agent_action prompting the user to upgrade. Use for CRMs, internal dashboards, staging apps."
695
+
),
696
+
allowed_ips: z
697
+
.array(z.string().min(1))
698
+
.optional()
699
+
.describe(
700
+
"IP / CIDR allowlist enforced at the Ingress when 'private' is true. Examples: ['1.2.3.4', '10.0.0.0/8', '203.0.113.42/32']. Required when private=true; ignored otherwise. If Track A's backend lands with a renamed field (e.g. 'allowed_cidrs'), this MCP tool will surface the 400 verbatim — see PR body."
0 commit comments