Sevalla について
Sevalla MCPは、AIエージェントからSevalla PaaS APIを使い、アプリ、静的サイト、データベースを管理するMCPサーバーです。一般的なデプロイや運用に対応し、審査済みの操作IDでAPIの残りの機能にもアクセスできます。
主な機能
- 01デプロイ、ロールバック、ログ確認
- 02ランタイムログとメトリクスの検索
- 03環境変数、スケーリング、ドメインの管理
- 04アプリ、静的サイト、データベースの作成
- 05操作種別ごとのAPIアクセス
活用シーン
- 01デプロイ失敗の原因調査
- 02アプリをデプロイして状態を確認
- 03直近のランタイムエラーを確認
- 04データベースを作成してアプリに接続
MCP 対応
OAuthを通じてSevalla APIのツールをMCPクライアントに提供するリモートMCPサーバーです。読み書きや破壊的操作の注釈があり、アクセス権は接続したSevalla APIキーに従います。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.sevalla.com/mcpclaude mcp add --transport http sevalla-hosting https://mcp.sevalla.com/mcp{"mcpServers":{"sevalla-hosting":{"type":"http","url":"https://mcp.sevalla.com/mcp"}}}Cursor で開く{"servers":{"sevalla-hosting":{"type":"http","url":"https://mcp.sevalla.com/mcp"}}}VS Code で開く{"mcpServers":{"sevalla-hosting":{"type":"http","url":"https://mcp.sevalla.com/mcp"}}}{"mcpServers":{"sevalla-hosting":{"serverUrl":"https://mcp.sevalla.com/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
Sevalla PaaS API 向けのリモート Model Context Protocol サーバーです。AIエージェントに27個のツールを提供します。日常的なワークフロー(デプロイ、ログとメトリクスの読み取り、環境変数、スケーリング、ドメイン、サービスの作成)向けに特化した22個のツールと、操作IDを使ってSevalla APIの残りの機能にアクセスする5個の汎用ツール(読み取り、作成、更新、削除に分類)です。
ツール
各ツールにはタイトルと、readOnlyHint、destructiveHint、idempotentHint、openWorldHintの明示的なアノテーションが付いているため、Claudeのようなクライアントは読み取り専用ツールを確認なしで実行し、破壊的な操作は必ず確認します。
| 領域 | ツール |
|---|---|
| 検出 | list_services、get_application、get_static_site、get_database、get_platform_options、search_sevalla_docs |
| デプロイ | list_deployments、get_deployment、get_deployment_logs、trigger_deployment、rollback_deployment |
| 可観測性 | search_runtime_logs、search_access_logs、get_metrics |
| 設定 | list_environment_variables、set_environment_variables、delete_environment_variables、scale_process、add_domain |
| 作成 | create_application、create_static_site、create_database |
| APIのその他の機能 | sevalla_api_search、sevalla_api_read、sevalla_api_create、sevalla_api_update、sevalla_api_delete |
汎用ツールが受け付けるのは、Sevalla API v3 specから生成されたレビュー済みのテーブルにある操作IDのみです。HTTPメソッドとパスを選択するのはモデルではなくサーバーであり、各ツールは自身の分類に属する操作のみを実行します。
シークレットと破壊的な操作
環境変数の値は返されません。ツールは変数のキーとスコープを一覧表示し、値を返すことなく設定または削除します。それ以外のSevalla APIの機能はすべて利用できます。サービス全体の削除、APIキーの管理、新しいシークレットを発行する操作(Webhookシークレットのローテーション、デプロイフックの再生成、ストレージ認証情報のローテーションなど)が含まれ、これらの操作ではシークレットが返されます。破壊的なツールにはアノテーションが付いているため、Claudeは呼び出しのたびに確認を求めます。プロセス内で実行されるコマンド(execProcessCommandV3)やアプリケーションのログには、引き続きシークレットが表示される場合があります。
すべてのツールは、接続で使用されるSevalla APIキーの権限によって制限されます。Sevalla APIキーはきめ細かな権限をサポートしているため、読み取り専用キーを使えばエージェントも読み取り専用になります。APIの全リファレンスはapi-docs.sevalla.comをご覧ください。
クイックスタート
MCP クライアントを、ホスト型サーバー https://mcp.sevalla.com/mcp に接続します。認証には OAuth を使用します。クライアントでブラウザーが開き、Sevalla アカウントでログインします。設定に API キーを入力する必要はありません。
Claude Code
claude mcp add --transport http sevalla https://mcp.sevalla.com/mcp
次に、Claude Code 内で /mcp と入力し、Authenticate を選択して OAuth フローを完了します。
Claude Desktop
Settings → Connectors → Add Connector から追加し、URL に https://mcp.sevalla.com/mcp を入力します。Claude Desktop が OAuth を自動的に処理します。
Cursor
プロジェクトのルートにある .cursor/mcp.json に追加します。
{
"mcpServers": {
"sevalla": {
"url": "https://mcp.sevalla.com/mcp"
}
}
}
Windsurf
~/.codeium/windsurf/mcp_config.json に追加します。
{
"mcpServers": {
"sevalla": {
"serverUrl": "https://mcp.sevalla.com/mcp"
}
}
}
OpenCode
プロジェクトのルートにある opencode.json に追加します。
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"sevalla": {
"type": "remote",
"url": "https://mcp.sevalla.com/mcp"
}
}
}
次に、opencode mcp auth sevalla を実行して OAuth フローを完了します。
アンインストール
Sevalla MCP サーバーを完全に削除するには、サーバー設定を削除し、保存されている OAuth 認証情報も消去します。
MCP サーバーを削除しても、Sevalla の API キーは削除されません。API キーを無効にするには、app.sevalla.com/api-keys にアクセスしてください。
Claude Code
claude mcp remove sevalla
次に、保存されている OAuth トークンを消去します。Claude Code 内で /mcp を実行し、sevalla を選択して、Clear authentication を選びます。
サーバーをデフォルト以外のスコープに追加した場合は、スコープを明示的に指定します。
claude mcp remove --scope user sevalla
claude mcp remove --scope project sevalla
Claude Desktop
Settings → Connectors を開き、Sevalla コネクターを見つけて削除します。その後、Claude Desktop を完全に終了して再起動します。
OAuth トークンはオペレーティングシステムのキーチェーン(macOS Keychain/Windows Credential Manager)に保存されます。削除するには、キーチェーンから Sevalla のエントリーを手動で削除してください。
Cursor
.cursor/mcp.json(プロジェクト)または ~/.cursor/mcp.json(グローバル)から sevalla のエントリーを削除します。その後、キャッシュされた OAuth トークンを消去します。
rm -rf ~/.mcp-auth
Windsurf
~/.codeium/windsurf/mcp_config.json から sevalla のエントリーを削除します。
OpenCode
opencode mcp logout sevalla
次に、プロジェクトのルートにある opencode.json から sevalla のエントリーを削除します。
仕組み
MCP client (Claude, Cursor, Codex, ...)
│
│ POST /mcp
│ Authorization: Bearer <OAuth token or Sevalla API key>
▼
┌──────────────────────────────────────┐
│ Sevalla MCP server (Hono, stateless)│
│ • validates the key (cached 60 s) │
│ • 27 tools, read tools get a │
│ GET-only client │
│ • reviewed operation table for the │
│ generic tools │
└──────────────────┬───────────────────┘
│ Bearer <key>
▼
https://api.sevalla.com/v3
リクエストごとに、呼び出し元の API キーに関連付けられた新しい MCP サーバーが作成されます。リクエスト間でデータは保存されません。サーバーは MCP 2026-07-28(server/discover、リクエストごとのメタデータ、キャッシュ可能なツールリスト)に対応しており、同じ URL で同じツールを提供しながら、2025 年版の仕様(2025-11-25 から 2024-11-05 まで)を使用するクライアントにも引き続き対応します。
サインインには PKCE を使用する OAuth 2.1 を利用します。クライアントは、OAuth クライアント ID メタデータドキュメント(Claude、ChatGPT、VS Code が使用)または、古いクライアントの場合は動的クライアント登録を使用して、自身を識別します。このフローもステートレスです。保留中の認証はコールバック URL に HMAC 署名付きで含まれ、認証コードは AES-256-GCM で暗号化され、アクセストークンは暗号化されて https://mcp.sevalla.com/mcp にバインドされます。
使用例
- 「my-api の最新のデプロイが失敗した理由を教えてください。」
- 「my-api の main ブランチをデプロイし、公開されたら教えてください。」
- 「過去 1 時間の my-api のランタイムログにあるエラーを要約してください。」
- 「フランクフルトに PostgreSQL データベースを作成し、my-api に接続してください。」
- 「my-api に app.example.com を追加し、作成すべき DNS レコードを教えてください。」
セルフホスティング
要件: Node.js 26(24 でも動作します)と pnpm 12。TypeScript はネイティブに実行されるため、ビルド手順は不要です。
git clone https://github.com/sevalla-hosting/mcp.git
cd mcp
pnpm install
pnpm start
または Docker を使用します。
docker build -t sevalla-mcp .
docker run -p 3000:3000 -e OAUTH_SECRET=<base64url 32 bytes> sevalla-mcp
| 変数 | 用途 |
|---|---|
PORT | HTTP ポート(デフォルトは 3000) |
OAUTH_SECRET | base64url でエンコードされた 32 バイト。NODE_ENV=production の場合は必須です |
PUBLIC_URL | OAuth メタデータで使用する公開ベース URL(デフォルトは https://mcp.sevalla.com) |
SEVALLA_FRONTEND_URL | OAuth 同意ページ用の Sevalla ダッシュボード URL(デフォルトは https://app.sevalla.com) |
SEVALLA_API_URL | Sevalla API のベース URL(デフォルトは https://api.sevalla.com) |
SEVALLA_DOCS_URL | search_sevalla_docs が検索するドキュメントサイト(デフォルトは https://docs.sevalla.com) |
DEVICE_CODE_TRUSTED_CLIENT_TOKEN | エンドユーザー IP ごとに OAuth サインインをレート制限するためのサービス トークン。サーバー IP ごとの制限を回避できます |
CLIENT_IP_HEADER | エッジで設定される、エンドユーザー IP を含むヘッダー(デフォルトは x-forwarded-for。Cloudflare の背後では cf-connecting-ip を使用) |
TRUSTED_PROXY_HOPS | x-forwarded-for の場合、値を追加する信頼済みプロキシの数。クライアント IP は右からその数だけさかのぼって読み取られます(デフォルトは 1) |
SEVALLA_API_KEY | --stdio モード:Sevalla API キー |
SHUTDOWN_TIMEOUT_MS | グレースフルシャットダウンの期限(デフォルトは 30000) |
OPENAI_APPS_CHALLENGE | OpenAI プラグインの申請用に /.well-known/openai-apps-challenge で提供されるドメイン検証トークン |
本番環境でのクライアント IP。 デバイスコードのレート制限はエンドユーザー IP ごとに適用されるため、サーバーはエッジが制御する情報からその IP を読み取る必要があります。Cloudflare の背後では CLIENT_IP_HEADER=cf-connecting-ip を設定し、Cloudflare を経由せずにオリジンへアクセスできないことを確認してください。そうしないと、ヘッダーを偽装される可能性があります。Cloudflare を使用しない場合は、X-Forwarded-For に値を追加するプロキシの数を TRUSTED_PROXY_HOPS に設定してください。デフォルトでは右端の値を読み取りますが、CDN またはロードバランサーの背後では通常それがプロキシのアドレスとなるため、すべてのユーザーが同じ制限を共有することになります。
開発
pnpm dev # Hot reload (node --watch)
pnpm test # Unit and end-to-end tests (node:test), e2e as both 2026-07-28 and 2025 clients
pnpm test:e2e # End-to-end tests: real HTTP server, MCP SDK client, fake Sevalla API
pnpm test:live # Live checks: client metadata documents; API smoke test and fake API fidelity with SEVALLA_E2E_API_KEY
pnpm eval # Evals through headless Claude Code against the fake API (see evals/)
pnpm check:code # tsc + oxlint + oxfmt
pnpm sync:operations # Regenerate src/sevalla/operations.json from the live API spec
pnpm check:operations # Fail if the live API spec drifted from the snapshot
test/policy.test.ts のポリシーテストでは、稼働中のツール一覧が Anthropic のコネクターディレクトリ要件に準拠していることを確認します。すべてのツールにタイトルと明示的なヒントがあること、読み取りと書き込みが分離されていること、説明が指示ではなく内容を説明していること、ツール定義のサイズが上限内であることを検証します。
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。