github TypeScript analyzed · update queued eba9e5f (1 behind)

InstaNode-dev/mcp

github

MCP server for instanode.dev — let any AI coding agent (Claude, Cursor, Copilot, Windsurf) provision a real Postgres/pgvector/Redis/MongoDB/queue/S3 bucket and deploy apps via one tool call. No account, no Docker, free tier.

maintainer
InstaNode-dev
license
MIT
first seen
2026-06-03
last seen
2026-07-06
releases · 30d
0
short id

Drift inferred · capture-to-capture

tool count over time

06-04 03:23 now
22t
33t
capabilities 33 tools
transport stdio · http verified reported listed in the official MCP registry counts 33 tools · 0 res · 0 prompts permission surface via README inference

tools

  • claim_resource

    Helper — turn an upgrade_jwt from any create_* response into the dashboard claim URL the user should click. No API call. No auth required.

  • claim_token

    POST /claim — Programmatic claim: attach an anonymous resource to the authenticated account using its upgrade_jwt + email. No auth required.

  • create_cache

    POST /cache/new — Provision a Redis cache (ACL-scoped user + namespace). Returns connection_url + note/upgrade. name required.

  • create_deploy

    POST /deploy/new — Upload a base64 gzip tarball (with Dockerfile) and deploy a container. Returns deploy_id, status, url, build_logs_url. name required. Pass redeploy: true (with the SAME name) to upd

  • create_nosql

    POST /nosql/new — Provision a MongoDB database (per-resource user + DB-scoped role). Returns connection_url + note/upgrade. name required.

  • create_postgres

    POST /db/new — Provision a Postgres database (pgvector included). Returns connection_url + the note/upgrade claim URL. name required.

  • create_queue

    POST /queue/new — Provision a NATS JetStream queue (scoped subject namespace). Returns connection_url + note/upgrade. name required.

  • create_stack

    POST /stacks/new — Multi-service bundle. Upload an instant.yaml manifest plus one base64 gzip tarball per service; returns stack_id, per-service URLs, and the 6h-TTL claim block on the anonymous tier.

  • create_storage

    POST /storage/new — Provision an S3-compatible bucket prefix (DigitalOcean Spaces). Returns endpoint, access keys, prefix + note/upgrade. name required.

  • create_vector

    POST /vector/new — Provision a pgvector-enabled Postgres database (embedding store). Returns connection_url + extension/dimensions + note/upgrade. name required; optional dimensions is a documentation

  • create_webhook

    POST /webhook/new — Provision an inbound webhook receiver URL. Returns receive_url + note/upgrade. name required.

  • delete_deployment

    DELETE /deploy/:id — Tear down a running deployment. Irreversible. Requires INSTANODE_TOKEN.

  • delete_resource

    DELETE /api/v1/resources/{token} — Hard-delete a resource you own. Paid tier only. Requires INSTANODE_TOKEN.

  • get_api_token

    POST /api/v1/auth/api-keys — Mint a fresh bearer Personal Access Token (PAT). Requires an existing user-session INSTANODE_TOKEN (PATs cannot mint other PATs — the API returns 403 in that case).

  • get_capabilities

    GET /api/v1/capabilities — Read the live per-tier capability matrix (storage / connection / resource-count / deployment caps, pricing, backup + RPO/RTO promises) in upgrade order so an agent can plan

  • get_deployment

    GET /api/v1/deployments/:id — Fetch one deployment (poll until status="running"). Requires INSTANODE_TOKEN.

  • get_deployment_events

    GET /api/v1/deployments/:id/events — Read the failure-timeline autopsy for a deployment (kind/reason/exit_code/event/last_lines/hint/created_at, newest first) so an agent can self-correct a broken Doc

  • get_stack

    GET /stacks/{stack_id} — Poll a stack's per-service status + URLs. Anonymous-friendly. stack_id required.

  • list_deployments

    GET /api/v1/deployments — List all deployments on the caller's team. Requires INSTANODE_TOKEN.

  • list_resources

    GET /api/v1/resources — List resources on the caller's account. Requires INSTANODE_TOKEN.

  • note

    a one-sentence human-readable CTA, already mentions the upgrade URL.

  • pause_resource

    POST /api/v1/resources/{id}/pause — Suspend a resource without deleting it (storage + connection URL preserved; new connections refused). Pro tier or higher. Requires INSTANODE_TOKEN.

  • presign_storage

    POST /storage/{token}/presign — Mint a short-lived (≤1h) presigned S3 URL (GET/PUT/HEAD) scoped to a storage prefix. Auth is the storage token in the path — works for anonymous-tier storage. DELETE is

  • redeploy

    POST /deploy/:id/redeploy — Push updated code to an existing deployment BY ID. Same URL, new build. Requires tarball_base64 (same shape as create_deploy) — the api never reuses the original tarball. F

  • resume_resource

    POST /api/v1/resources/{id}/resume — Un-pause a resource (same connection URL keeps working). Pro tier or higher. Requires INSTANODE_TOKEN.

  • rotate_credentials

    POST /api/v1/resources/{id}/rotate-credentials — Rotate a resource's password; returns the NEW connection_url in plaintext (host + DB unchanged). Locks out a leaked old URL. Requires INSTANODE_TOKEN.

  • rotate_vault_key

    POST /api/v1/vault/{env}/{key}/rotate — Rotate a vault secret's value (new version, recorded under a distinct audit action). Redeploy referencing apps to apply. Requires INSTANODE_TOKEN.

  • set_vault_key

    PUT /api/v1/vault/{env}/{key} — Write a secret to the team vault (always a new version). Reference it from a deploy as vault://{env}/{key} in env_vars; the API decrypts it at deploy time. Vault is pai

  • token

    the resource UUID (used for claim_token and delete_resource).

  • update_deploy_env

    PATCH /deploy/{id}/env — Merge env vars into an existing deployment (incoming wins; values may be vault://env/KEY refs). Returns the merged map with secrets redacted. Redeploy to apply. Requires INSTA

  • update_stack_env

    PATCH /stacks/{slug}/env — Merge env vars into an existing stack (row-locked; an empty-string value deletes a key). Redeploy the stack to apply. Requires INSTANODE_TOKEN.

  • upgrade

    the full claim URL (https://instanode.dev/start?t=<jwt>). The

  • wake_deployment

    POST /deploy/{id}/wake — Explicitly wake a scaled-to-zero deployment (scales to 1 replica; cold-start before serving). Flag-gated on the platform: returns 501 scale_to_zero_disabled when the feature i

code evidence vv0.7.2 · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 18

filesystem 5

  • fs InstaNode-dev-mcp-eba9e5f/src/client.ts :34 import { readFileSync } from "node:fs";
  • fs InstaNode-dev-mcp-eba9e5f/src/index.ts :78 import { readFileSync } from "node:fs";
  • fs (weak) InstaNode-dev-mcp-eba9e5f/test/error-contract-unit.test.ts :29 import { readFileSync } from "node:fs";
  • fs (weak) InstaNode-dev-mcp-eba9e5f/test/integration.test.ts :45 import { readFileSync } from "node:fs";
  • fs (weak) InstaNode-dev-mcp-eba9e5f/test/tool-coverage.test.ts :27 import { readdirSync, readFileSync } from "node:fs";

shell / exec 2

  • shell (weak) InstaNode-dev-mcp-eba9e5f/test/input-hardening-unit.test.ts :18 import { spawnSync } from "node:child_process";
  • shell (weak) InstaNode-dev-mcp-eba9e5f/test/integration.test.ts :36 import { spawnSync } from "node:child_process";

network 6

  • net InstaNode-dev-mcp-eba9e5f/src/client.ts :914 * omit Content-Type here so fetch() can set its own multipart boundary.
  • net (weak) InstaNode-dev-mcp-eba9e5f/test/client-unit.test.ts :14 * These tests stub global.fetch (Node 26 has it built-in) so they run with
  • net (weak) InstaNode-dev-mcp-eba9e5f/test/integration.test.ts :1158 const resp = await fetch(`${mock.url}/deploy/${appId}/redeploy`, {
  • net (weak) InstaNode-dev-mcp-eba9e5f/test/mock-api.ts :18 import { createServer, type IncomingMessage, type Server, type ServerResponse } from "node:http";
  • net (weak) InstaNode-dev-mcp-eba9e5f/test/prod-cohort.test.ts :68 const resp = await fetch(`${PROD_API_URL}/internal/e2e/account`, {
  • net (weak) InstaNode-dev-mcp-eba9e5f/test/tools-unit.test.ts :1568 // Capture the suite-baseline fetch (mock-api-backed via INSTANODE_API_URL)

secrets 10

  • secrets InstaNode-dev-mcp-eba9e5f/src/client.ts :896 const tok = process.env["INSTANODE_TOKEN"];
  • secrets (weak) InstaNode-dev-mcp-eba9e5f/test/client-unit.test.ts :40 delete process.env["INSTANODE_TOKEN"];
  • secrets (weak) InstaNode-dev-mcp-eba9e5f/test/deploy-id-schema-unit.test.ts :35 delete process.env["INSTANODE_TOKEN"];
  • secrets (weak) InstaNode-dev-mcp-eba9e5f/test/error-contract-unit.test.ts :70 delete process.env["INSTANODE_TOKEN"];
  • secrets (weak) InstaNode-dev-mcp-eba9e5f/test/index-unit.test.ts :28 delete process.env["INSTANODE_TOKEN"];
  • secrets (weak) InstaNode-dev-mcp-eba9e5f/test/live-smoke.test.ts :44 const token = process.env["INSTANODE_TOKEN"];
  • secrets (weak) InstaNode-dev-mcp-eba9e5f/test/operate-tools-unit.test.ts :72 delete process.env["INSTANODE_TOKEN"];
  • secrets (weak) InstaNode-dev-mcp-eba9e5f/test/prod-cohort.test.ts :45 const E2E_TOKEN = process.env["E2E_ACCOUNT_TOKEN"] ?? "";
  • secrets (weak) InstaNode-dev-mcp-eba9e5f/test/tool-contract.test.ts :66 delete process.env["INSTANODE_TOKEN"];
  • secrets (weak) InstaNode-dev-mcp-eba9e5f/test/tools-unit.test.ts :73 delete process.env["INSTANODE_TOKEN"];

install hooks 1

  • prepublishOnly InstaNode-dev-mcp-eba9e5f/package.json :52 npm run build

declared dependencies 4

  • @modelcontextprotocol/sdk@1.29.0
  • zod@4.3.6
  • @types/node@^25.9.2
  • typescript@^6.0.3