@shipsite/mcp Server
oficialDesplegar sitios web estáticos
Documentación
shipsite.sh
API de alojamiento de sitios estáticos para LLMs. Despliega sitios con una sola llamada a la API. Sin git, sin pasos de compilación, sin paneles de control. $0.10/sitio/día.
shipsite.sh permite a los agentes LLM desplegar sitios web estáticos enviando archivos como JSON mediante POST y recibiendo una URL activa. Los sitios se sirven globalmente en una red edge CDN con HTTPS, expiran automáticamente después de 24 horas a menos que se fijen, y cuestan $0.10 por sitio por día (prorrateado diariamente, facturado mensualmente a través de Stripe). No hay capa gratuita — se requiere pago antes de que cualquier despliegue funcione.
URL base de la API: https://api.shipsite.sh Autenticación: Bearer sk_live_… (todos los endpoints excepto la creación de cuenta) IMPORTANTE: Las claves API se muestran solo una vez al crearse y no se pueden recuperar después. Almacena la clave inmediatamente. Si se pierde, no hay recuperación — debes crear una nueva clave mientras estés autenticado, o crear una nueva cuenta si estás bloqueado. Las claves están inactivas (devuelven 402) hasta que se complete el pago en Stripe.
Inicio rápido:
- POST /v1/accounts con { "email": "tú@ejemplo.com" } — devuelve api_key + setup_url
- Abre setup_url para completar el pago en Stripe y activar la clave
- POST /v1/sites con Authorization: Bearer sk_live_… y { "files": { "index.html": "…" } } — devuelve { "url": "https://site\_abc123.shipsite.sh" }
Endpoints:
- POST /v1/accounts (sin autenticación): Crear cuenta. Cuerpo: { "email": "…" }. Devuelve: { "api_key": "sk_live_…", "setup_url": "https://checkout.stripe.com/…", "status": "pending" }. IMPORTANTE: La api_key se muestra solo una vez — almacénala inmediatamente.
- POST /v1/sites: Crear un sitio. Cuerpo: { "files": { "ruta": "contenido" }, "name": "slug-opcional", "meta": {} }. Archivos de texto como cadenas, archivos binarios con prefijo "base64:". Devuelve: { "id": "site_…", "url": "https://….shipsite.sh", "expires_at": "…" }
- GET /v1/sites: Listar sitios. Soporta paginación con ?limit= y ?offset=.
- GET /v1/sites/:id: Obtener detalles del sitio (metadatos, lista de archivos, expiración).
- PUT /v1/sites/:id: Actualizar un sitio. El cuerpo acepta "files", "name", y/o "meta" (se requiere al menos uno). Los archivos omitidos no se modifican. Establece un archivo a null para eliminarlo. Establece "name" a una cadena para añadir o cambiar el slug personalizado, o null para eliminarlo.
- DELETE /v1/sites/:id: Eliminar un sitio inmediatamente. La facturación se detiene.
- POST /v1/sites/:id/pin: Eliminar la expiración automática. El sitio persiste hasta que se elimine.
- POST /v1/sites/:id/unpin: Reaplicar TTL de 24h desde el momento actual.
- GET /v1/accounts/me: Obtener estado de la cuenta y conteo de sitios activos.
- GET /v1/accounts/me/keys: Listar todas las claves API (activas y revocadas) de la cuenta.
- POST /v1/accounts/me/keys: Crear una nueva clave API. Devuelve la clave completa una vez — almacénala inmediatamente, no se puede recuperar después.
- POST /v1/accounts/me/keys/rotate: Crear atómicamente una nueva clave y revocar una antigua. Cuerpo: { "revoke_key_id": "key_…" } (opcional — omite para revocar la clave actual).
- DELETE /v1/accounts/me/keys/:id: Revocar una clave API. No se puede revocar la última clave activa.
Reglas de codificación de archivos:
- Archivos de texto (.html, .css, .js, .svg, .json, .txt, .xml, .md): enviar como cadenas planas
- Archivos binarios (.png, .jpg, .gif, .webp, .ico, .woff2, .pdf): prefijo "base64:" + contenido en base64
Reglas de nombre de sitio (campo opcional "name" en POST /v1/sites o PUT /v1/sites/:id):
- 3–63 caracteres, solo letras minúsculas, números y guiones
- Debe comenzar y terminar con una letra o número
- Sin guiones consecutivos (--)
- Globalmente único — las colisiones devuelven 409 con código "name_taken"
- Se puede establecer en la creación o añadir/cambiar/eliminar después mediante PUT
- Establecer a null en PUT para eliminar el nombre de un sitio existente
- Nombres reservados (no se pueden usar): api, www, app, admin, dashboard, billing, docs, help, support, status, blog, mail, smtp, ftp, cdn, assets, static, login, signup, auth, account, accounts, settings, config, setup, test, staging, dev, prod, internal
Comportamiento del sitio:
- Servido en https://{site_id}.shipsite.sh (o https://{name}.shipsite.sh si tiene nombre)
- index.html servido para / y como fallback SPA
- HTTPS en todos los sitios, CDN global, CORS: Access-Control-Allow-Origin: *
- Sin contenido inyectado — los sitios se sirven exactamente como se subieron
- Expiración automática después de 24 horas a menos que se fije
Límites: 1,000 sitios activos, 120 despliegues/hora, 100 archivos/sitio, 15 MB de carga total, 5 MB por archivo, 100,000 solicitudes/sitio/día.
Formato de error: { "error": { "code": "…", "message": "Descripción procesable de qué salió mal, por qué y cómo solucionarlo.", "details": { … } } } Códigos comunes: payment_required (402), rate_limited (429), validation_error (400), not_found (404).
Documentación
- Referencia de la API: Detalles completos de los endpoints, ejemplos y reglas de codificación de archivos
- Términos del Servicio: Política de uso aceptable, proceso DMCA, contenido prohibido
Servidor MCP
- @shipsite/mcp: Paquete de servidor MCP para Claude Code, Cursor y Windsurf
Configuración MCP: { "mcpServers": { "shipsite": { "command": "npx", "args": ["@shipsite/mcp"], "env": { "SHIPSITE_API_KEY": "sk_live_…" } } } }
Herramientas: deploy_site, list_sites, get_site, delete_site, pin_site, unpin_site, rename_site, create_account, get_account, list_keys, create_key, rotate_key, revoke_key
Opcional
- Página principal: Sitio de marketing con ejemplos visuales y desglose de precios
- Ejemplos de precios: 1 sitio/30 días = $3, 10 sitios/30 días = $30, 1 sitio/2 horas = $0.10