@shipsite/mcp Server
offiziellStatische Websites bereitstellen
Dokumentation
shipsite.sh
Statische Website-Hosting-API für LLMs. Websites mit einem API-Aufruf bereitstellen. Kein Git, keine Build-Schritte, keine Dashboards. $0,10/Website/Tag.
shipsite.sh ermöglicht es LLM-Agenten, statische Websites bereitzustellen, indem Dateien als JSON gepostet werden und eine Live-URL zurückgegeben wird. Websites werden global über ein CDN-Edge-Netzwerk mit HTTPS ausgeliefert, laufen automatisch nach 24 Stunden ab, sofern sie nicht angeheftet werden, und kosten $0,10 pro Website und Tag (täglich anteilig, monatlich über Stripe abgerechnet). Keine kostenlose Stufe — eine Zahlung ist erforderlich, bevor Bereitstellungen funktionieren.
API-Basis-URL: https://api.shipsite.sh Authentifizierung: Bearer sk_live_… (alle Endpunkte außer Kontoerstellung) WICHTIG: API-Schlüssel werden nur einmal bei der Erstellung angezeigt und können später nicht abgerufen werden. Speichern Sie den Schlüssel sofort. Bei Verlust gibt es keine Wiederherstellung — Sie müssen einen neuen Schlüssel erstellen, während Sie authentifiziert sind, oder ein neues Konto anlegen, wenn Sie ausgesperrt sind. Schlüssel sind inaktiv (geben 402 zurück), bis der Stripe-Checkout abgeschlossen ist.
Schnellstart:
- POST /v1/accounts mit { "email": "[email protected]" } — gibt api_key + setup_url zurück
- Öffnen Sie setup_url, um den Stripe-Checkout abzuschließen und den Schlüssel zu aktivieren
- POST /v1/sites mit Authorization: Bearer sk_live_… und { "files": { "index.html": "…" } } — gibt { "url": "https://site\_abc123.shipsite.sh" } zurück
Endpunkte:
- POST /v1/accounts (keine Authentifizierung): Konto erstellen. Body: { "email": "…" }. Rückgabe: { "api_key": "sk_live_…", "setup_url": "https://checkout.stripe.com/…", "status": "pending" }. WICHTIG: Der api_key wird nur einmal angezeigt — sofort speichern.
- POST /v1/sites: Eine Website erstellen. Body: { "files": { "path": "content" }, "name": "optional-slug", "meta": {} }. Textdateien als Strings, Binärdateien mit "base64:"-Präfix. Rückgabe: { "id": "site_…", "url": "https://….shipsite.sh", "expires_at": "…" }
- GET /v1/sites: Websites auflisten. Unterstützt ?limit= und ?offset= Paginierung.
- GET /v1/sites/:id: Website-Details abrufen (Metadaten, Dateiliste, Ablauf).
- PUT /v1/sites/:id: Eine Website aktualisieren. Body akzeptiert "files", "name" und/oder "meta" (mindestens eines erforderlich). Ausgelassene Dateien bleiben unverändert. Setzen Sie eine Datei auf null, um sie zu löschen. Setzen Sie "name" auf einen String, um den Vanity-Slug hinzuzufügen oder zu ändern, oder auf null, um ihn zu entfernen.
- DELETE /v1/sites/:id: Eine Website sofort löschen. Abrechnung endet.
- POST /v1/sites/:id/pin: Automatischen Ablauf entfernen. Die Website bleibt bestehen, bis sie gelöscht wird.
- POST /v1/sites/:id/unpin: 24h-TTL ab aktueller Zeit erneut anwenden.
- GET /v1/accounts/me: Kontostatus und Anzahl aktiver Websites abrufen.
- GET /v1/accounts/me/keys: Alle API-Schlüssel (aktiv und widerrufen) für das Konto auflisten.
- POST /v1/accounts/me/keys: Einen neuen API-Schlüssel erstellen. Gibt den vollständigen Schlüssel einmal zurück — sofort speichern, er kann später nicht abgerufen werden.
- POST /v1/accounts/me/keys/rotate: Atomar einen neuen Schlüssel erstellen und einen alten widerrufen. Body: { "revoke_key_id": "key_…" } (optional — weglassen, um den aktuellen Schlüssel zu widerrufen).
- DELETE /v1/accounts/me/keys/:id: Einen API-Schlüssel widerrufen. Der letzte aktive Schlüssel kann nicht widerrufen werden.
Dateikodierungsregeln:
- Textdateien (.html, .css, .js, .svg, .json, .txt, .xml, .md): als einfache Strings senden
- Binärdateien (.png, .jpg, .gif, .webp, .ico, .woff2, .pdf): "base64:"-Präfix + base64-Inhalt
Regeln für Website-Namen (optionales "name"-Feld bei POST /v1/sites oder PUT /v1/sites/:id):
- 3–63 Zeichen, nur Kleinbuchstaben, Zahlen und Bindestriche
- Muss mit einem Buchstaben oder einer Zahl beginnen und enden
- Keine aufeinanderfolgenden Bindestriche (--)
- Global eindeutig — Kollisionen geben 409 mit Code "name_taken" zurück
- Kann bei der Erstellung festgelegt oder später über PUT hinzugefügt/geändert/entfernt werden
- In PUT auf null setzen, um den Namen von einer bestehenden Website zu entfernen
- Reservierte Namen (können nicht verwendet werden): 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
Website-Verhalten:
- Bereitgestellt unter https://{site_id}.shipsite.sh (oder https://{name}.shipsite.sh falls benannt)
- index.html wird für / und als SPA-Fallback bereitgestellt
- HTTPS auf allen Websites, globales CDN, CORS: Access-Control-Allow-Origin: *
- Kein eingefügter Inhalt — Websites werden genau wie hochgeladen ausgeliefert
- Automatischer Ablauf nach 24 Stunden, sofern nicht angeheftet
Grenzwerte: 1.000 aktive Websites, 120 Bereitstellungen/Stunde, 100 Dateien/Website, 15 MB Gesamtnutzlast, 5 MB pro Datei, 100.000 Anfragen/Website/Tag.
Fehlerformat: { "error": { "code": "…", "message": "Umsetzbare Beschreibung, was schiefgelaufen ist, warum und wie es behoben werden kann.", "details": { … } } } Häufige Codes: payment_required (402), rate_limited (429), validation_error (400), not_found (404).
Dokumentation
- API-Referenz: Vollständige Endpunktdetails, Beispiele und Dateikodierungsregeln
- Nutzungsbedingungen: Richtlinie zur akzeptablen Nutzung, DMCA-Verfahren, verbotene Inhalte
MCP-Server
- @shipsite/mcp: MCP-Serverpaket für Claude Code, Cursor und Windsurf
MCP-Konfiguration: { "mcpServers": { "shipsite": { "command": "npx", "args": ["@shipsite/mcp"], "env": { "SHIPSITE_API_KEY": "sk_live_…" } } } }
Tools: 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
Optional
- Homepage: Marketing-Website mit visuellen Beispielen und Preisaufschlüsselung
- Preisbeispiele: 1 Website/30 Tage = $3, 10 Websites/30 Tage = $30, 1 Website/2 Stunden = $0,10