Tenki Sandbox MCP について
Tenki Sandbox MCPは、AIエージェントをTenki Cloudの使い捨てmicroVMに接続し、コード実行やサンドボックス管理を行うMCPサーバーです。ファイル、Git、プレビュー、スナップショット、ワークスペースの操作にも対応します。
主な機能
- 01microVMサンドボックスの作成と管理
- 02コードとシェルコマンドの実行
- 03ファイルの読み書きと管理
- 04GitとプレビューURLの操作
- 05スナップショット、ボリューム、テンプレートの管理
活用シーン
- 01隔離VMでエージェント作成コードを実行
- 02サンドボックス内のファイルを確認・編集
- 03プレビューURLでサンドボックスのサービスを公開
- 04サンドボックスのスナップショットと接続ボリュームを管理
MCP 対応
stdioまたはStreamable HTTP経由で、Tenki Cloudのサンドボックス操作をMCPツールとして提供します。クライアントはホスト型サービスを使うか、Tenkiの認証情報を設定してサーバーをローカル実行できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @tenkicloud/mcpTENKI_API_KEYシークレットTenki API key (starts with tk_). Alternatively set TENKI_AUTH_TOKEN (an ory_st_ session token or session cookie); the header is chosen by token prefix.TENKI_API_ENDPOINTOverride the control-plane endpoint. Defaults to https://api.tenki.cloud.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
71掲載時のツール一覧 · 1 週間前に更新
このツールにパラメーターはありません。
詳細
tenki-mcp — @tenkicloud/mcp
Tenki Cloud 用の Model Context Protocol サーバーです。 Claude、Codex、Cursor など、あらゆるエージェントに、一時的なマイクロ VM を提供します。マイクロ VM はエージェントが作成し、そこでコードを実行したり、ファイルを読み書きしたり、git を実行したり、ウェブに公開したりできます。サンドボックスは約 2 秒で起動し、秒単位で課金されます。
Tenki をコーディングエージェントが利用する実行レイヤーにする取り組みの一環です。エージェントがコードを書き、Tenki がそれを分離環境で実行します。(Tenki の Code Reviewer と Runners — AI による PR レビューとマネージド CI — は別製品です。このサーバーが現在提供しているのは Sandbox です。)
"Run this Python in a fresh sandbox and tell me what it prints."
│
▼ tenki_run_code
boots a microVM → runs it → returns stdout → tears it down
クイックスタート
export TENKI_API_KEY=tk_your_key_here
npx -y @tenkicloud/mcp # speaks MCP over stdio
クローンやビルドは不要です。パッケージをインストールすると、tenki-mcp コマンドが使えるようになります。
Claude Code で使う
Tenki のホスト型 MCP サービスに接続し、Tenki アカウントでサインインします。
claude mcp add --transport http tenki https://mcp.tenki.cloud/mcp
claude mcp login tenki
Claude Code の mcp add コマンドでサーバー設定を保存し、mcp login でブラウザーを使った初回の認証とワークスペースの選択を行います。
または、API キーを使って MCP サーバーをローカルで実行します。
claude mcp add tenki --env TENKI_API_KEY=tk_your_key_here -- npx -y @tenkicloud/mcp
または、Claude Code プラグインとしてインストールする
このリポジトリはプラグインマーケットプレイスも兼ねています。インストール時に API キーの入力が求められ、OS のキーチェーンに保存されます。環境変数の管理は不要です。
/plugin marketplace add LuxorLabs/tenki-mcp
/plugin install tenki@tenki
Claude Desktop で使う
claude_desktop_config.json に追加します。
{
"mcpServers": {
"tenki": {
"command": "npx",
"args": ["-y", "@tenkicloud/mcp"],
"env": { "TENKI_API_KEY": "tk_your_key_here" }
}
}
}
Cursor で使う
同じブロックを .cursor/mcp.json(プロジェクト用)または ~/.cursor/mcp.json(グローバル用)に追加します。
{
"mcpServers": {
"tenki": {
"command": "npx",
"args": ["-y", "@tenkicloud/mcp"],
"env": { "TENKI_API_KEY": "tk_your_key_here" }
}
}
}
Codex で使う
OpenAI Codex CLI は ~/.codex/config.toml から MCP サーバーを読み込みます。次の設定を追加します。
[mcp_servers.tenki]
command = "npx"
args = ["-y", "@tenkicloud/mcp"]
env = { TENKI_API_KEY = "tk_your_key_here" }
動作を確認する
サーバーを追加したら、クライアントが読み込めるように新しいセッションを開始し、エージェントに次のいずれかを依頼します。
- 「tenki の認証状態を確認して。」 — 認証情報が読み込まれたことを確認します。
- 「新しい Tenki サンドボックスで
print(2+2)を実行して。」 — 起動 → 実行 → 破棄の一連の処理を確認します。
tenki_* ツールが表示されない場合は、クライアントを再起動して設定を読み込み直してください。
まだ API キーをお持ちでない場合は、キーなしでサーバーを起動し、エージェントに tenki_auth_status を確認するよう依頼してください。設定すべき内容と場所が表示されます。認証を参照してください。
クローンから実行する
開発時や、未リリースの変更を実行する場合は、次のようにします。
git clone https://github.com/LuxorLabs/tenki-mcp.git && cd tenki-mcp
npm install && npm run build
TENKI_API_KEY=tk_your_key_here node dist/index.js
上記の設定で npx コマンドを node /absolute/path/to/tenki-mcp/dist/index.js に置き換えてください。開発手順の全容については、CONTRIBUTING.md を参照してください。
環境変数
| 変数 | デフォルト | 用途 |
|---|---|---|
TENKI_API_KEY | — | API キー(tk_…)。TENKI_AUTH_TOKEN のいずれか一方が必須です。 |
TENKI_AUTH_TOKEN | — | セッショントークン(ory_st_… または Cookie の値)。両方設定されている場合、TENKI_API_KEY より優先されます。 |
TENKI_API_ENDPOINT | https://api.tenki.cloud | コントロールプレーンのベース URL(TENKI_API_URL は別名です)。 |
TENKI_MCP_READONLY | オフ | 1 を設定すると、読み取り専用ツールのみを登録します(作成/実行/削除/支出はできません)。 |
TENKI_MCP_DISABLED_TOOLS | — | 登録をスキップするツール名をカンマ区切りで指定します。 |
TENKI_MCP_AUDIT | オフ | 1 を設定すると、各ツール呼び出しの名前と引数のキーを stderr に記録します。 |
TENKI_MCP_TRANSPORT | stdio | http を設定すると、代わりに Streamable HTTP を提供します(以下を参照)。 |
PORT | 3000 | HTTP トランスポートのポートです。 |
TENKI_MCP_HTTP_HOST | 127.0.0.1 | HTTP のバインド先ホストです。ループバック以外を指定する場合は TENKI_MCP_HTTP_TOKEN が必要です。 |
TENKI_MCP_HTTP_TOKEN | — | HTTP エンドポイント用の Bearer トークンです。ループバックでは任意ですが、ループバック以外のホストでは必須です。 |
TENKI_MCP_PUBLIC_URL | — | OAuth で保護されたホスト型サーバーの公開ベース URL です。 |
TENKI_MCP_OAUTH_ISSUER | — | OAuth 認可サーバーの発行者です。委任 OAuth HTTP モードを有効にします。 |
TENKI_MCP_OAUTH_RESOURCE | <public URL>/mcp | アクセストークンのオーディエンスとして受け入れられる RFC 8707 リソース識別子です。 |
TENKI_MCP_OAUTH_SCOPE | mcp | 必須の委任スコープです。 |
TENKI_MCP_IDENTITY_URL | — | OAuth アクセストークンの交換に使用する Tenki Identity サービスの内部エンドポイントです。 |
TENKI_MCP_IDENTITY_SERVICE_TOKEN | — | プライベートな Identity トークン交換 RPC 用のサービス認証情報です。 |
ツール
71 個のツール — 公開されている単項 API メソッド 68 個(CI のパリティ監査で検証)、ワークフローヘルパー 2 個、tenki_auth_status。実装専用のコントロールプレーンメソッドは意図的に除外しています。ドメイン別に分類しています。
| ドメイン | ツール |
|---|---|
| 認証 | tenki_auth_status(設定されている認証情報と、その動作状況を確認します。認証情報がない場合に利用できる唯一のツールです) |
| ID | tenki_whoami |
| 実行 | tenki_run_code(ワンショット:起動 → シェル/Python/JS を実行 → 終了) |
| サンドボックス | tenki_create_sandbox · tenki_get_sandbox · tenki_list_sandboxes · tenki_terminate_sandbox · tenki_pause_sandbox · tenki_resume_sandbox |
| セッション管理 | tenki_extend_sandbox · tenki_update_sandbox · tenki_terminate_sandboxes(一括) · tenki_report_sandbox_activity · tenki_list_workspace_sandboxes |
| 実行 | tenki_exec(標準出力/標準エラー/終了コードをインラインで表示) |
| ファイル | tenki_read_file · tenki_write_file · tenki_list_files · tenki_stat_path · tenki_make_dir · tenki_remove_path · tenki_move_path |
| Git | tenki_git(clone/checkout/diff/log — API がサポートするのはこの 4 つのみです。その他の Git コマンドは tenki_exec で実行してください) |
| ポートとプレビュー | 公開 · 公開一覧 · 公開解除 · プレビュー URL 作成 · プレビューを開く · プレビュー URL の一覧表示/取得/削除 · プレビューの更新 · プレビュー URL のバインド/バインド解除 · プレビュートークンの解決 |
| アーティファクト(バイナリ転送) | tenki_get_upload_url · tenki_get_download_url(バイナリの PUT/GET 用署名付き URL) |
| SSH | tenki_update_ssh_keys · tenki_issue_ssh_cert · tenki_list_ssh_gateways |
| スナップショット | 作成 · 取得 · 一覧表示 · セッション別一覧 · ワークスペース別一覧 · 孤立分の一覧 · 更新 · 削除 · ダウンロード URL の取得 |
| ボリューム | 作成 · 取得 · 一覧表示 · 更新 · 削除 · サイズ変更 · アタッチ · デタッチ |
| テンプレート | 作成 · 取得 · 一覧表示 · 更新 · 削除 · ビルド · ビルドのキャンセル · ビルドの取得 · アクティブなビルドの一覧表示 |
| ワークスペース | tenki_get_workspace_usage · tenki_get_workspace_settings · tenki_update_workspace_settings · tenki_get_snapshot_retention_settings · tenki_update_snapshot_retention_settings |
リリースごとの詳細な内訳は、CHANGELOG.md をご覧ください。
認証
TENKI_API_KEY または TENKI_AUTH_TOKEN のいずれかを設定してください。両方が設定されている場合は、TENKI_AUTH_TOKEN が優先されます。トークンのプレフィックスに応じてヘッダーが選択されます。tk_… → Authorization: Bearer、ory_st_… → X-Session-Token、それ以外の場合はセッション Cookie です。TENKI_API_ENDPOINT でエンドポイントを上書きできます(デフォルトは https://api.tenki.cloud)。
認証情報がなくてもサーバーは起動し、登録されるのは tenki_auth_status のみです。そのため、MCP クライアントが内容の分からない「サーバーの起動に失敗しました」というエラーを報告する代わりに、エージェントがこのツールを呼び出して設定すべき項目を確認できます。他のツールで認証エラーが返された場合は、いつでも「tenki の認証状態を確認して」と尋ねてください。このツールは、認証情報の種類(API キーまたはセッショントークン)、エンドポイント、ライブの ID 確認に成功したかどうかを報告します。トークン自体が報告されることはありません。報告するのは状態のみです。認証情報は tenki login を実行するか、ダッシュボードから取得してください。
HTTP 経由でホストする(v2.0-beta)
stdio に加えて、サーバーは Streamable HTTP に対応しているため、リモート MCP クライアント向けにホストできます。
TENKI_MCP_TRANSPORT=http PORT=3000 TENKI_API_KEY=… npx -y @tenkicloud/mcp
# → tenki-mcp running on http://127.0.0.1:3000/mcp (Streamable HTTP) [loopback only, no auth]
シングルユーザーでデプロイする場合、HTTP モードでは共有の TENKI_API_KEY を 1 つ保持できるため、強力な機能を提供します。デフォルトでは次のとおりです。
- ループバック(
127.0.0.1)のみにバインドします — 外部に公開するにはTENKI_MCP_HTTP_HOST=0.0.0.0を設定しますが、その場合は - ベアラートークンが必須です:
TENKI_MCP_HTTP_TOKENを設定し、Authorization: Bearer <token>を送信してください。トークンがない状態でループバック以外のホストを指定すると、起動を拒否します。 - DNS リバインディング対策(Host ヘッダーの許可リスト)が有効なため、悪意のあるウェブページからローカルサーバーを操作することはできません。
# expose to a network safely:
TENKI_MCP_TRANSPORT=http TENKI_MCP_HTTP_HOST=0.0.0.0 PORT=3000 \
TENKI_MCP_HTTP_TOKEN=$(openssl rand -hex 32) TENKI_API_KEY=… npx -y @tenkicloud/mcp
HTTP 対応の MCP クライアントから /mcp に接続してください。静的キー方式では、すべてのセッションで共有の TENKI_API_KEY を 1 つ使用します。エンドツーエンドで検証済みです(test/http-transport.test.mjs:認証ゲート、DNS リバインディングの拒否、HTTP 経由の接続 → tools/list → ツール呼び出し)。
ホスト型のマルチテナントデプロイでは、代わりに Tenki Identity の OAuth ファサードを使用します。MCP サーバーは RFC 9728 の保護リソースメタデータを公開し、各呼び出し元のアクセストークンをプライベートな Identity サービス経由で交換します。Identity が Hydra を管理し、要求された対象者とスコープを検証したうえで、Tenki の同意ページで選択されたユーザー、クライアント、ワークスペースに紐づく、有効期間の短い API 委任トークンを発行します。tenki-mcp は Hydra Admin にアクセスできず、委任署名シークレットも保持しません。
仕組み
Tenki の API は ConnectRPC です。REST ではなく、HTTP/1.1 上の JSON を使用します。すべてのコントロールプレーン呼び出しは、POST https://api.tenki.cloud/tenki.sandbox.v1.SandboxService/{Method} と、小文字始まりのキャメルケースの JSON 本文で行います。セッションごとのファイル I/O は、作成時に返される別のデータプレーンエンドポイントで実行され、短命のセッション証明書で認証されます。このサーバーは両方のトランスポートを管理するため、ツールを簡潔なワンライナーのまま使用できます。
コマンドの出力:tenki_exec と tenki_run_code は、ファイルにリダイレクト(sh -c '… > out 2> err')して stdout/stderr を取得し、データプレーン経由で読み戻すため、通常の HTTP クライアントでも出力をインラインで取得できます。
ワイヤープロトコルの詳細は、実環境で動作を検証した n8n community node から移植しています。
セキュリティ
このサーバーは Tenki API キーを保持し、コードを実行してクレジットを消費できるため、権限を持つものとして扱ってください。モデル全体と CSA MCP Server Top-10 との対応については、SECURITY.md を参照してください。主な制御は次のとおりです。
- 最小権限: すべてのツールに MCP アノテーション(
readOnlyHint/destructiveHint)が付与されています。検査専用サーバー(読み取りツールのみ)を実行するにはTENKI_MCP_READONLY=1を、特定のツールを除外するにはTENKI_MCP_DISABLED_TOOLS=tenki_run_code,…を設定してください。 - HTTP トランスポートはデフォルトでループバックのみにバインドされ、ネットワークに公開するにはベアラートークンが必要です(HTTP 経由でホストするを参照)。
- 監査:
TENKI_MCP_AUDIT=1を設定すると、各ツール呼び出しの名前が stderr に記録されます。 - 信頼できない出力:
tenki_run_code/tenki_exec/tenki_read_fileは信頼できないコードからの出力を返すため、クライアントはツールの結果を指示ではなくデータとして扱ってください。
脆弱性は公開 issue ではなく、非公開のセキュリティアドバイザリーから報告してください。
関連項目
- Tenki Sandbox — プラットフォーム:https://tenki.cloud
- n8n-nodes-tenki — n8n ノードとしての Tenki:https://github.com/opencolin/n8n-nodes-tenki
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。