SnapDeploy

io.github.somdip-2310由 GitHub 账号 somdip-2310 发布v0.1.2更新于 Oct 30, 2026

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

发布方自己的服务:deploy.social

概览

AI 生成的概览

SnapDeploy MCP 让助手把 GitHub 仓库部署到 SnapDeploy 主机,并查看日志、设置环境变量、添加数据库和域名。

可以做什么
  • 列出容器并查看状态、URL、端口、资源与配额
  • 读取运行时日志和部署历史,包括失败构建的构建日志尾部
  • 扫描 GitHub 仓库所需的环境变量并设置或替换
  • 部署已连接的仓库、部署本地 Docker 镜像包,以及启动、停止或唤醒容器
  • 创建托管数据库附加组件、绑定自定义域名、分配 Always-On 订阅
适用场景
适合在 SnapDeploy 上托管应用、希望直接在聊天客户端里部署、重新部署或排查问题而不打开控制台的场景。例如发布 Lovable、Bolt 或 v0 导出项目、查明构建失败原因,或随代码一起管理环境变量和域名。
运行要求
通过 npx 以 stdio 在本地运行,需要 Node.js。需要 SnapDeploy 账号,并在 SNAPDEPLOY_API_KEY 中提供带作用域的 API 令牌;仓库需托管在 GitHub 且已与 SnapDeploy 连接一次。可选 SNAPDEPLOY_READ_ONLY=1 仅暴露只读工具。需要能访问 SnapDeploy 的网络。
安装前请注意
SNAPDEPLOY_API_KEY 中的令牌可部署并改动基础设施,应限定作用域并在用完后撤销。工具会写入和变更状态:部署、环境变量、容器启停、数据库附加组件和域名。数据库附加组件需已购买订阅,套餐限额可能阻止部署。密钥值不会返回,只返回名称。此连接器无法删除任何资源。

安装

在 SourceWeft 中

  1. 打开 控制台中的 SnapDeploy,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

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

来源:README.md,提交 20a8c29

工具

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.

无需输入参数。

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.

输入参数container必填

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.

输入参数linescontainer必填

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).

输入参数limitcontainerdeployment_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.

无需输入参数。

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.

输入参数pagequery

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.

输入参数repo必填branch

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.

输入参数envportrepo必填sizebranchcontainer

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.

输入参数env必填container必填

start_container

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

输入参数container必填

stop_container

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

输入参数container必填

wake_container

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

输入参数container必填

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.

输入参数nametype必填containerdatabase_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.

输入参数domain必填container必填

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.

输入参数container必填subscription_id必填

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.

输入参数path必填portsizecontainer

版本历史

2
  1. v0.1.2最新Oct 21, 2026
  2. v0.1.0Sep 23, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分
  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

其他 Deploy 集成