SnapDeploy

io.github.somdip-2310Published by GitHub account somdip-2310v0.1.2Updated Oct 30, 2026

Deploy and manage SnapDeploy apps from your AI assistant: builds, logs, env vars, add-ons, domains.

The publisher's own server: deploy.social

Overview

AI-generated overview

SnapDeploy MCP lets an assistant deploy GitHub repos to SnapDeploy hosting, then read logs, set env vars, add databases and domains.

What you can do
  • List containers and inspect status, URLs, ports, resources and quota
  • Read runtime logs and deployment history, including build-log tails for failed builds
  • Scan a GitHub repo for required environment variables and set or replace them
  • Deploy a connected repo, deploy a local Docker image tarball, and start, stop or wake containers
  • Create managed database add-ons, attach custom domains and assign Always-On subscriptions
When to use it
Useful when you host apps on SnapDeploy and want to deploy, redeploy or debug them from a chat client instead of the dashboard. It fits workflows like shipping a Lovable, Bolt or v0 export, checking why a build failed, or managing env vars and domains alongside the code.
Requirements
Runs locally over stdio via npx, so Node.js is needed. Requires a SnapDeploy account and a scoped API token in SNAPDEPLOY_API_KEY; the repo must be on GitHub and GitHub connected to SnapDeploy once. Optional SNAPDEPLOY_READ_ONLY=1 limits it to read tools. Network access to SnapDeploy is required.
Before you install
The token in SNAPDEPLOY_API_KEY can deploy and change infrastructure, so scope it and revoke it when done. Tools write and change state: deploys, env vars, container start/stop, database add-ons and domains. Database add-ons need a purchased subscription, and plan limits can block deploys. Secret values are never returned, only names. Deletion is not possible through this connector.

Installation

In SourceWeft

  1. Open SnapDeploy in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

@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

bash
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:

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

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

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

Source: README.md at commit 20a8c29

Tools

16

list_apps

List the user's SnapDeploy containers with status and URL, plus plan, deploy-limit and free-hours state. Start here to find container ids/names.

Takes no parameters.

get_status

Full status of one container (by name or id): state, URL, port, detected technology, resources. Env-var VALUES are never returned — names only.

Parameterscontainerrequired

get_logs

Recent RUNTIME logs of a container (CloudWatch, up to 1000 lines). For BUILD logs of a deployment use get_deployments with a deployment_id.

Parameterslinescontainerrequired

get_deployments

Deployment history of a container, or one deployment in detail (status, error code/message and build-log tail — use this to diagnose a failed build).

Parameterslimitcontainerdeployment_id

check_quota

Can the user deploy and run apps right now? Merges the deploy limit (5 per rolling 12h — ONLY for accounts without an Always-On/Sprint entitlement; failed attempts count) and the free-hours cap (containers refuse to start at 402 when exhausted), plus any unassigned Always-On subscriptions.

Takes no parameters.

list_repos

List (or search) the GitHub repositories connected to this SnapDeploy account. If GitHub is not connected yet, returns the connect link for the user.

Parameterspagequery

detect_env_vars

Scan a repo for the environment variables it needs (import.meta.env / process.env usage, .env.example, Dockerfile). For known keys (Supabase etc.) the reply says where the user finds the value. Do this BEFORE the first deploy of a Lovable/Bolt/v0 export. Rows with source DOCKERFILE and instruction ENV already have their value inside the image and follow the repository on every push: do NOT pass them to deploy's env unless the user wants a different value. Rows with instruction ARG are build arguments with a Dockerfile default; same rule.

Parametersreporequiredbranch

deploy

Deploy a connected GitHub repo to SnapDeploy: creates the container if needed, links the repo, builds, and waits for the result. Reply includes the live URL or, on failure, the error and build-log tail. On accounts without an Always-On/Sprint entitlement this uses one unit of the deploy limit (failed attempts count); Always-On accounts are uncapped.

Parametersenvportreporequiredsizebranchcontainer

set_env

Set/replace a container's environment variables (rolling restart, no rebuild). Values are accepted but NEVER echoed back. Public build-time names (VITE_*, NEXT_PUBLIC_*, REACT_APP_*) only take effect in the bundle after the next deploy.

Parametersenvrequiredcontainerrequired

start_container

Start a stopped container. May answer 402 when free hours are exhausted — relay that message and link, do not retry.

Parameterscontainerrequired

stop_container

Stop a running container (safe, reversible — deletion is NOT possible through this connector by design).

Parameterscontainerrequired

wake_container

Wake a sleeping free-plan container so its URL serves again.

Parameterscontainerrequired

create_database

Create a managed add-on: PostgreSQL, MySQL, MariaDB, MongoDB, Redis or RabbitMQ. Requires a purchased add-on subscription — without one this returns the purchase link (relay it, don't retry). Credentials are provisioned server-side and shown to the user in the SnapDeploy UI, never through this connector.

Parametersnametyperequiredcontainerdatabase_name

add_domain

Attach a custom domain to a container. Returns the DNS records the user must create; verification then runs from the SnapDeploy UI.

Parametersdomainrequiredcontainerrequired

assign_always_on

Attach an UNASSIGNED Always-On subscription to a container (keeps it running 24/7 and lifts the deploy limit). Only call this after the user explicitly confirms — check_quota lists any unassigned subscriptions.

Parameterscontainerrequiredsubscription_idrequired

deploy_image

Deploy a Docker image from a LOCAL `docker save` file (.tar, .tar.gz or .tgz) on this machine. The file is uploaded straight to SnapDeploy's storage with a presigned URL (never through the API), loaded, pushed to the private registry and started. The image must be built for linux/arm64 (docker buildx build --platform linux/arm64); an amd64 image fails at build time with a rebuild hint. Free accounts may upload up to 2 GB; any Always-On subscription raises the cap (the platform returns its store link on 402 — relay it, do not retry). Uses one deploy-limit unit like other deploys.

Parameterspathrequiredportsizecontainer

Version history

2
  1. v0.1.2LatestOct 21, 2026
  2. v0.1.0Sep 23, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Deploy integrations