@shipsite/mcp Server
officielDéployer des sites web statiques
Documentation
shipsite.sh
API d'hébergement de sites statiques pour les LLMs. Déployez des sites avec un seul appel API. Pas de git, pas d'étapes de build, pas de tableaux de bord. 0,10 $/site/jour.
shipsite.sh permet aux agents LLM de déployer des sites web statiques en envoyant des fichiers au format JSON via POST et en recevant une URL active. Les sites sont servis mondialement sur un réseau CDN edge avec HTTPS, expirent automatiquement après 24 heures sauf s'ils sont épinglés, et coûtent 0,10 $ par site et par jour (calculé au prorata quotidiennement, facturé mensuellement via Stripe). Pas d'offre gratuite — un paiement est requis avant tout déploiement.
URL de base de l'API : https://api.shipsite.sh Authentification : Bearer sk_live_… (tous les endpoints sauf la création de compte) IMPORTANT : Les clés API ne sont affichées qu'une seule fois lors de leur création et ne peuvent pas être récupérées ultérieurement. Conservez la clé immédiatement. En cas de perte, il n'y a pas de récupération — vous devez créer une nouvelle clé en étant authentifié, ou créer un nouveau compte si vous êtes bloqué. Les clés sont inactives (renvoient 402) jusqu'à ce que le paiement Stripe soit terminé.
Démarrage rapide :
- POST /v1/accounts avec { "email": "[email protected]" } — renvoie api_key + setup_url
- Ouvrez setup_url pour finaliser le paiement Stripe et activer la clé
- POST /v1/sites avec Authorization: Bearer sk_live_… et { "files": { "index.html": "…" } } — renvoie { "url": "https://site\_abc123.shipsite.sh" }
Endpoints :
- POST /v1/accounts (sans auth) : Créer un compte. Corps : { "email": "…" }. Renvoie : { "api_key": "sk_live_…", "setup_url": "https://checkout.stripe.com/…", "status": "pending" }. IMPORTANT : La clé api_key n'est affichée qu'une seule fois — conservez-la immédiatement.
- POST /v1/sites : Créer un site. Corps : { "files": { "chemin": "contenu" }, "name": "slug-optionnel", "meta": {} }. Fichiers texte sous forme de chaînes, fichiers binaires avec le préfixe "base64:". Renvoie : { "id": "site_…", "url": "https://….shipsite.sh", "expires_at": "…" }
- GET /v1/sites : Lister les sites. Prend en charge la pagination avec ?limit= et ?offset=.
- GET /v1/sites/:id : Obtenir les détails d'un site (métadonnées, liste des fichiers, expiration).
- PUT /v1/sites/:id : Mettre à jour un site. Le corps accepte "files", "name" et/ou "meta" (au moins un requis). Les fichiers omis restent inchangés. Définissez un fichier sur null pour le supprimer. Définissez "name" sur une chaîne pour ajouter ou modifier le slug personnalisé, ou sur null pour le supprimer.
- DELETE /v1/sites/:id : Supprimer un site immédiatement. La facturation s'arrête.
- POST /v1/sites/:id/pin : Supprimer l'expiration automatique. Le site persiste jusqu'à sa suppression.
- POST /v1/sites/:id/unpin : Réappliquer une durée de vie de 24h à partir de l'heure actuelle.
- GET /v1/accounts/me : Obtenir le statut du compte et le nombre de sites actifs.
- GET /v1/accounts/me/keys : Lister toutes les clés API (actives et révoquées) du compte.
- POST /v1/accounts/me/keys : Créer une nouvelle clé API. Renvoie la clé complète une seule fois — conservez-la immédiatement, elle ne peut pas être récupérée ultérieurement.
- POST /v1/accounts/me/keys/rotate : Créer atomiquement une nouvelle clé et révoquer une ancienne. Corps : { "revoke_key_id": "key_…" } (optionnel — omettez pour révoquer la clé actuelle).
- DELETE /v1/accounts/me/keys/:id : Révoquer une clé API. Impossible de révoquer la dernière clé active.
Règles d'encodage des fichiers :
- Fichiers texte (.html, .css, .js, .svg, .json, .txt, .xml, .md) : envoyez-les sous forme de chaînes simples
- Fichiers binaires (.png, .jpg, .gif, .webp, .ico, .woff2, .pdf) : préfixe "base64:" + contenu en base64
Règles de nommage des sites (champ optionnel "name" sur POST /v1/sites ou PUT /v1/sites/:id) :
- 3 à 63 caractères, lettres minuscules, chiffres et tirets uniquement
- Doit commencer et se terminer par une lettre ou un chiffre
- Pas de tirets consécutifs (--)
- Globalement unique — les collisions renvoient 409 avec le code "name_taken"
- Peut être défini à la création ou ajouté/modifié/supprimé ultérieurement via PUT
- Définissez sur null dans PUT pour supprimer le nom d'un site existant
- Noms réservés (ne peuvent pas être utilisés) : 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
Comportement du site :
- Servi à https://{site_id}.shipsite.sh (ou https://{name}.shipsite.sh si nommé)
- index.html servi pour / et comme solution de repli SPA
- HTTPS sur tous les sites, CDN mondial, CORS : Access-Control-Allow-Origin: *
- Aucun contenu injecté — les sites sont servis exactement comme ils ont été téléversés
- Expiration automatique après 24 heures sauf s'ils sont épinglés
Limites : 1 000 sites actifs, 120 déploiements/heure, 100 fichiers/site, 15 Mo de charge utile totale, 5 Mo par fichier, 100 000 requêtes/site/jour.
Format d'erreur : { "error": { "code": "…", "message": "Description exploitable de ce qui a mal tourné, pourquoi et comment y remédier.", "details": { … } } } Codes courants : payment_required (402), rate_limited (429), validation_error (400), not_found (404).
Documentation
- Référence API : Détails complets des endpoints, exemples et règles d'encodage des fichiers
- Conditions d'utilisation : Politique d'utilisation acceptable, processus DMCA, contenu interdit
Serveur MCP
- @shipsite/mcp : Package serveur MCP pour Claude Code, Cursor et Windsurf
Configuration MCP : { "mcpServers": { "shipsite": { "command": "npx", "args": ["@shipsite/mcp"], "env": { "SHIPSITE_API_KEY": "sk_live_…" } } } }
Outils : 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
Optionnel
- Page d'accueil : Site marketing avec exemples visuels et détail des prix
- Exemples de tarification : 1 site/30 jours = 3 $, 10 sites/30 jours = 30 $, 1 site/2 heures = 0,10 $