Servidor MCP
Dale a Claude Code, Cursor, Claude Desktop, Codex o cualquier cliente MCP la capacidad de desplegar, configurar y depurar apps en Skiffly, ya sea alojado con OAuth o localmente a través de la CLI.
El servidor MCP de Skiffly expone más de 37 herramientas mediante el Model Context Protocol: proyectos, servicios, variables, despliegues, logs, dominios, volúmenes, facturación, un importador de Railway y búsqueda en la documentación. Los nombres de las herramientas replican los del servidor MCP de Railway cuando los conceptos coinciden, así que un agente que conoce Railway se orienta sin problemas.
Hay dos formas de ejecutarlo:
Alojado (mcp.skiffly.dev) | Local (skiffly mcp) | |
|---|---|---|
| Transporte | Streamable HTTP | stdio |
| Inicio de sesión | OAuth 2.1 en el navegador (o un token bearer) | el skiffly login de la CLI |
| Instalación | nada que instalar | Node.js 20+ y la CLI skiffly |
| Ideal para | Claude Code, Cursor, Claude Desktop, clientes web | docs sin conexión, CI, clientes sin soporte de MCP remoto |
Servidor alojado (recomendado)#
El endpoint es https://mcp.skiffly.dev/mcp. Implementa la especificación de autorización de MCP (OAuth 2.1 con PKCE, registro dinámico de clientes y descubrimiento en /.well-known/oauth-authorization-server), así que un cliente compatible con servidores MCP remotos inicia tu sesión a través del navegador. No hay tokens que copiar.
claude mcp add --transport http skiffly https://mcp.skiffly.dev/mcpLuego ejecuta /mcp dentro de Claude Code y elige skiffly → Authenticate. El navegador abre el panel de Skiffly; inicia sesión con GitHub si hace falta, revisa los permisos y haz clic en Permitir. Claude Code guarda los tokens y los renueva por sí solo.
Qué concede la pantalla de consentimiento#
El cliente pide read (ver proyectos, servicios, despliegues, logs, variables) y normalmente write (desplegar, cambiar variables y configuración, agregar dominios y volúmenes). Al permitirlo se emite un token de acceso de 1 hora más un refresh token que el cliente rota por su cuenta; ambos actúan como tú en todos tus espacios de trabajo. Las solicitudes tienen límite de tasa por token según el plan del espacio de trabajo, exactamente igual que la API GraphQL.
Revocar el acceso#
Configuración → Desarrollador → Sesiones de CLI y apps conectadas lista cada cliente MCP conectado (por su nombre registrado, p. ej. Claude Code) y cada sesión de la CLI. Revocar corta el acceso de inmediato, incluido el refresh token; el cliente te pedirá conectarte de nuevo la próxima vez. Quitar el servidor de la configuración del cliente no revoca nada del lado de Skiffly.
Servidor local (skiffly mcp)#
La CLI incorpora el mismo servidor y lo ejecuta por stdio con la sesión de skiffly login, así que el agente nunca ve un token:
npm i -g skiffly && skiffly login
claude mcp add skiffly -s user -- skiffly mcp # o: skiffly mcp install claudeskiffly mcp install claude también deja un skill skiffly en ~/.claude/skills/ que le enseña al agente el flujo de despliegue.
Qué pedir#
Despliega este repositorio en Skiffly y dame la URL.
Agrega Postgres con un volumen de 20 GB y conecta DATABASE_URL al servicio api.
El último despliegue de
webfalló, averigua por qué y arréglalo.
Importa mi proyecto de Railway "acme-shop" a Skiffly y dime qué me queda por hacer a mano.
Normalmente el agente llama a whoami → list-projects → create-deployment → get-status → get-logs → generate-domain. Las herramientas destructivas (delete-*, escalar a cero) están anotadas para que el modelo pregunte primero.
Herramientas por área#
| Área | Herramientas |
|---|---|
| Cuenta | whoami, list-workspaces, billing-account, topup-create, github-installations, list-nodes |
| Proyectos | list-projects, create-project, delete-project, list-environments, create-environment, describe-environment, get-status |
| Servicios | list-services, create-service, create-deployment, describe-service, get-service-config, update-service, delete-service |
| Variables | list-variables, set-variables, delete-variables |
| Despliegues | deploy, redeploy, restart-service, list-deployments, cancel-deployment, get-logs |
| Redes | generate-domain, list-domains, domain-status, delete-domain |
| Volúmenes | create-volume, list-volumes, delete-volume |
| Migración | import_from_railway: copia un proyecto de Railway (servicios, variables, volúmenes, dominios, proxies TCP) a Skiffly; primero con dryRun; ver Migrar desde Railway |
| Docs | search-docs |
Los argumentos y valores de retorno de cada herramienta están en la referencia de herramientas MCP. skiffly mcp tools imprime la misma lista localmente.
Entorno (servidor local)#
| Variable | Significado |
|---|---|
SKIFFLY_TOKEN | Token de API (obligatorio para npx @skiffly/mcp; el skiffly mcp de la CLI usa la sesión guardada) |
SKIFFLY_API_URL | Endpoint GraphQL, por defecto https://api.skiffly.dev/graphql |
Buenas prácticas#
- Prefiere el servidor alojado con OAuth: los tokens nunca pasan por prompts, archivos de configuración ni el contexto del agente.
- Empieza cada sesión con
whoami: confirma el token y devuelve los ids de los espacios de trabajo. - Los valores de las variables son secretos:
list-variablesdevuelve los nombres a menos que el agente pida los valores. - Los límites del plan se devuelven como errores
PLAN_LIMITen lugar de reintentos; los límites de tasa, comoRATE_LIMITED. - Revoca los clientes que ya no uses desde Configuración → Desarrollador.