SnapDeploy MCP

official

Deploy and manage SnapDeploy apps (Docker containers on AWS) from Claude Code, Cursor, Codex or Gemini CLI: builds, logs, env vars, add-ons, domains.

What can you do with SnapDeploy MCP?

  • Deploy from GitHub — Ask to deploy a connected GitHub repository and get a live URL back via deploy.
  • Manage environment variables — Set or update env vars for an app without exposing secret values, using with and set_env.
  • Monitor deployments — Check deployment status, view logs, and list recent deployments with get_status, get_logs, and get_deployments.
  • Control containers — Start, stop, or wake a container on demand using start_container, stop_container, and wake_container.
  • Provision resources — Create a managed database or attach a custom domain to an app with create_database and add_domain.

Documentation

@snapdeploy/mcp

Deploy and manage SnapDeploy containers from your AI assistant — Claude Code, Claude Desktop, Cursor, Windsurf, Codex CLI, Gemini CLI, or any client that speaks the Model Context Protocol over stdio.

Say "deploy this repo to SnapDeploy" and get a live URL back. Builds, logs, environment variables, managed databases and custom domains — without leaving the chat.

Setup

  1. Sign in at snapdeploy.dev, open API Keys and create a token with the deploy scope (the page generates the snippets below with your token already filled in).
  2. Add the server to your client:

Claude Code

claude mcp add --scope user snapdeploy -e SNAPDEPLOY_API_KEY=sd_pat_your_token -- npx -y @snapdeploy/mcp

Cursor (~/.cursor/mcp.json), Windsurf (~/.codeium/windsurf/mcp_config.json), Gemini CLI (~/.gemini/settings.json), Claude Desktop and other JSON-configured clients:

{
  "mcpServers": {
    "snapdeploy": {
      "command": "npx",
      "args": ["-y", "@snapdeploy/mcp"],
      "env": { "SNAPDEPLOY_API_KEY": "sd_pat_your_token" }
    }
  }
}

Codex CLI (~/.codex/config.toml):

[mcp_servers.snapdeploy]
command = "npx"
args = ["-y", "@snapdeploy/mcp"]
env = { SNAPDEPLOY_API_KEY = "sd_pat_your_token" }

Claude Code plugin (token stored in secure storage instead of a config file):

/plugin marketplace add AAR-Labs/snapdeploy-mcp
/plugin install snapdeploy@snapdeploy

Restart the session; the snapdeploy tools appear. Your repository must be on GitHub and GitHub must be connected to SnapDeploy once (the connector returns the link if it isn't).

Tools

ScopeTools
readlist_apps get_status get_logs get_deployments check_quota list_repos detect_env_vars
deploydeploy deploy_image set_env start_container stop_container wake_container
managecreate_database add_domain assign_always_on

Scopes nest (read ⊂ deploy ⊂ manage); the server enforces them before any tool runs. There is no delete tool, and the server refuses deletes, subscription cancellations and password changes for every token — those need a person signed in to the dashboard or the mobile app.

Prebuilt images. deploy builds from a connected GitHub repository; there is no image tool. To run a public Docker image, use the dashboard (Deploy Your Application → Docker Image) or POST /api/mobile/containers with name, image, imageTag, port, then POST /api/mobile/containers/{containerId}/start. Images must come from Docker Hub, ghcr.io, quay.io or public.ecr.aws, publish linux/amd64 or linux/arm64, and pass SnapDeploy's create-time policy check; a 400 Security policy violation is final and must not be retried. Full rules: https://snapdeploy.dev/llms-full.md

Safety model

  • Nothing destructive, ever. Even an agent that escalates to a raw API call with the same token gets 403 INTERACTIVE_SESSION_REQUIRED.
  • Secrets never reach the model. Environment-variable values come back as (set) and credentials are masked — on the server, not just in this connector.
  • Scoped, expiring, revocable tokens with their own rate limit. Revoke on the API Keys page and every request returns 401 from that moment.
  • Retry-safe deploys. Identical requests inside ten minutes return the original deployment instead of starting another build.
  • Plan limits are relayed, not retried. 402/429 replies carry SnapDeploy's own message and upgrade link, and the assistant is told not to retry.

Environment variables

VariableRequiredMeaning
SNAPDEPLOY_API_KEYyesScoped token (sd_pat_…) or legacy API key
SNAPDEPLOY_READ_ONLYno1 exposes only the read tools
SNAPDEPLOY_BASE_URLnoDefaults to https://snapdeploy.dev

Links

MIT © AAR Labs