Pular para o conteúdo

Buscar na documentação

Buscar na documentação do Skiffly

Servidor MCP

Give Claude Code, Cursor, Claude Desktop, Codex or any MCP client the ability to deploy, configure and debug apps on Skiffly — hosted with OAuth, or locally through the CLI.

The Skiffly MCP server exposes 37+ tools over the Model Context Protocol: projects, services, variables, deployments, logs, domains, volumes, billing, a Railway importer and docs search. Tool names mirror the Railway MCP server where the concepts match, so an agent that knows Railway finds its way around.

There are two ways to run it:

Hosted (mcp.skiffly.dev)Local (skiffly mcp)
TransportStreamable HTTPstdio
Sign-inOAuth 2.1 in the browser (or a bearer token)the CLI's skiffly login
Installnothing to installNode.js 20+ and the skiffly CLI
Best forClaude Code, Cursor, Claude Desktop, web clientsoffline docs, CI, clients without remote MCP support

The endpoint is https://mcp.skiffly.dev/mcp. It implements the MCP authorization spec — OAuth 2.1 with PKCE, dynamic client registration and discovery under /.well-known/oauth-authorization-server — so a client that supports remote MCP servers signs you in through the browser. No tokens to copy.

claude mcp add --transport http skiffly https://mcp.skiffly.dev/mcp

Then run /mcp inside Claude Code and pick skiffly → Authenticate. The browser opens the Skiffly dashboard; sign in with GitHub if needed, review the permissions and click Allow. Claude Code stores the tokens and refreshes them by itself.

The client asks for read (view projects, services, deployments, logs, variables) and usually write (deploy, change variables and settings, add domains and volumes). Allowing issues a 1-hour access token plus a refresh token that the client rotates on its own; both act as you across all your workspaces. Requests are rate-limited per token by the plan of the workspace, exactly like the GraphQL API.

Revoking access#

Settings → Developer → CLI sessions & connected apps lists every connected MCP client (by its registered name, e.g. Claude Code) and every CLI session. Revoke cuts the access immediately, including the refresh token; the client asks you to connect again next time. Removing the server from the client's config does not revoke anything on the Skiffly side.

Local server (skiffly mcp)#

The CLI embeds the same server and runs it over stdio with the login from skiffly login, so the agent never sees a token:

npm i -g skiffly && skiffly login
claude mcp add skiffly -s user -- skiffly mcp        # or: skiffly mcp install claude

skiffly mcp install claude also drops a skiffly skill into ~/.claude/skills/ that teaches the agent the deploy workflow.

What to ask#

Deploy this repo to Skiffly and give me the URL.

Add Postgres with a 20 GB volume and wire DATABASE_URL into the api service.

The last deploy of web failed, find out why and fix it.

Import my Railway project "acme-shop" into Skiffly and tell me what I still have to do by hand.

The agent typically calls whoamilist-projectscreate-deploymentget-statusget-logsgenerate-domain. Destructive tools (delete-*, scaling to zero) are annotated so the model asks first.

Tools by area#

AreaTools
Accountwhoami, list-workspaces, billing-account, topup-create, github-installations, list-nodes
Projectslist-projects, create-project, delete-project, list-environments, create-environment, describe-environment, get-status
Serviceslist-services, create-service, create-deployment, describe-service, get-service-config, update-service, delete-service
Variableslist-variables, set-variables, delete-variables
Deploymentsdeploy, redeploy, restart-service, list-deployments, cancel-deployment, get-logs
Networkinggenerate-domain, list-domains, domain-status, delete-domain
Volumescreate-volume, list-volumes, delete-volume
Migrationimport_from_railway — copies a Railway project (services, variables, volumes, domains, TCP proxies) into Skiffly, dryRun first; see Migrate from Railway
Docssearch-docs

Arguments and return values for each tool are in the MCP tools reference. skiffly mcp tools prints the same list locally.

Environment (local server)#

VariableMeaning
SKIFFLY_TOKENAPI token (required for npx @skiffly/mcp; the CLI's skiffly mcp uses the saved login)
SKIFFLY_API_URLGraphQL endpoint, default https://api.skiffly.dev/graphql

Good practice#

  • Prefer the hosted server with OAuth: tokens never touch prompts, config files or the agent's context.
  • Start a session with whoami: it confirms the token and returns workspace ids.
  • Variable values are secrets: list-variables returns names unless the agent asks for values.
  • Plan limits come back as PLAN_LIMIT errors rather than retries; rate limits as RATE_LIMITED.
  • Revoke clients you no longer use from Settings → Developer.