@shipsite/mcp Server
公式静的ウェブサイトをデプロイする
ドキュメント
shipsite.sh
LLM向け静的サイトホスティングAPI。1回のAPI呼び出しでサイトをデプロイ。Git不要、ビルドステップ不要、ダッシュボード不要。$0.10/サイト/日。
shipsite.shは、LLMエージェントがファイルをJSONとしてPOSTし、公開URLを受け取ることで静的ウェブサイトをデプロイできるようにします。サイトはCDNエッジネットワーク上でHTTPSによりグローバルに配信され、ピン留めしない限り24時間後に自動失効し、1サイトあたり1日$0.10の費用がかかります(日割り計算、Stripe経由で月次請求)。無料枠はありません — デプロイを機能させるには事前に支払いが必要です。
APIベースURL: https://api.shipsite.sh 認証: Bearer sk_live_…(アカウント作成を除く全エンドポイント)重要: APIキーは作成時に一度だけ表示され、後から取得することはできません。キーはすぐに保存してください。紛失した場合、復旧はできません — 認証済みの状態で新しいキーを作成するか、ロックアウトされた場合は新しいアカウントを作成する必要があります。キーはStripeチェックアウトが完了するまで無効(402を返す)です。
クイックスタート:
- POST /v1/accounts に { "email": "[email protected]" } を送信 — api_key + setup_url が返ります
- setup_url を開いてStripeチェックアウトを完了し、キーを有効化します
- POST /v1/sites に Authorization: Bearer sk_live_… と { "files": { "index.html": "…" } } を送信 — { "url": "https://site\_abc123.shipsite.sh" } が返ります
エンドポイント:
- POST /v1/accounts (認証不要): アカウントを作成します。ボディ: { "email": "…" }。戻り値: { "api_key": "sk_live_…", "setup_url": "https://checkout.stripe.com/…", "status": "pending" }。重要: api_key は一度だけ表示されます — すぐに保存してください。
- POST /v1/sites: サイトを作成します。ボディ: { "files": { "path": "content" }, "name": "optional-slug", "meta": {} }。テキストファイルは文字列として、バイナリファイルは "base64:" プレフィックス付きで送信します。戻り値: { "id": "site_…", "url": "https://….shipsite.sh", "expires_at": "…" }
- GET /v1/sites: サイトを一覧表示します。?limit= と ?offset= によるページネーションをサポートします。
- GET /v1/sites/:id: サイトの詳細(メタデータ、ファイルリスト、有効期限)を取得します。
- PUT /v1/sites/:id: サイトを更新します。ボディは "files"、"name"、"meta" のいずれか(少なくとも1つ必須)を受け付けます。省略されたファイルは変更されません。ファイルを削除するには null に設定します。"name" を文字列に設定するとバニティスラッグを追加または変更し、null に設定すると削除します。
- DELETE /v1/sites/:id: サイトを即座に削除します。課金が停止します。
- POST /v1/sites/:id/pin: 自動失効を解除します。サイトは削除されるまで存続します。
- POST /v1/sites/:id/unpin: 現在時刻から24時間のTTLを再適用します。
- GET /v1/accounts/me: アカウントステータスとアクティブなサイト数を取得します。
- GET /v1/accounts/me/keys: アカウントの全APIキー(アクティブおよび失効済み)を一覧表示します。
- POST /v1/accounts/me/keys: 新しいAPIキーを作成します。完全なキーが一度だけ返ります — すぐに保存してください。後から取得することはできません。
- POST /v1/accounts/me/keys/rotate: 新しいキーを作成し、古いキーをアトミックに失効させます。ボディ: { "revoke_key_id": "key_…" }(オプション — 省略すると現在のキーを失効させます)。
- DELETE /v1/accounts/me/keys/:id: APIキーを失効させます。最後のアクティブなキーは失効させられません。
ファイルエンコーディングルール:
- テキストファイル(.html、.css、.js、.svg、.json、.txt、.xml、.md): プレーンな文字列として送信
- バイナリファイル(.png、.jpg、.gif、.webp、.ico、.woff2、.pdf): "base64:" プレフィックス + base64コンテンツ
サイト名ルール(POST /v1/sites または PUT /v1/sites/:id のオプションの "name" フィールド):
- 3~63文字、小文字、数字、ハイフンのみ
- 先頭と末尾は文字または数字
- 連続するハイフン(--)は不可
- グローバルで一意 — 重複するとコード "name_taken" の409が返ります
- 作成時に設定するか、後からPUTで追加/変更/削除可能
- PUTでnullに設定すると、既存サイトから名前を削除
- 予約名(使用不可): 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
サイトの動作:
- https://{site_id}.shipsite.sh(または名前付きの場合は https://{name}.shipsite.sh)で配信
- index.html は / およびSPAフォールバックとして配信
- 全サイトでHTTPS、グローバルCDN、CORS: Access-Control-Allow-Origin: *
- コンテンツの注入なし — アップロードされたとおりにサイトが配信
- ピン留めしない限り24時間後に自動失効
制限: 1,000のアクティブサイト、120デプロイ/時、100ファイル/サイト、合計ペイロード15 MB、1ファイルあたり5 MB、100,000リクエスト/サイト/日。
エラー形式: { "error": { "code": "…", "message": "何が問題で、なぜ発生し、どのように修正するかについての実用的な説明。", "details": { … } } } 一般的なコード: payment_required (402)、rate_limited (429)、validation_error (400)、not_found (404)。
ドキュメント
MCPサーバー
- @shipsite/mcp: Claude Code、Cursor、Windsurf向けMCPサーバーパッケージ
MCP設定: { "mcpServers": { "shipsite": { "command": "npx", "args": ["@shipsite/mcp"], "env": { "SHIPSITE_API_KEY": "sk_live_…" } } } }
ツール: 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