@reachpad/mcp
Official@reachpad/mcp
reachpad を使うと、Claude、Codex、その他のコーディングエージェントが、永続的なワークスペースでフルスタックアプリを構築し、個別のデプロイなしでリンク共有できるようになります。ワークスペースとは、エージェント自身が操作するクラウド開発コンピュータです。リポジトリ、ファイルシステム、インストール済みの依存関係、ビルド状態がすべて呼び出し間で保持され、忘れてしまうような一時的なサンドボックスではありません。プロセスは例外です。後述します。
これは MCP サーバーです。Claude、ChatGPT、Cursor、OpenCode、または独自のエージェントが、環境を作成し、その中でコマンドを実行し、フォークし、後で戻ってくることができます。開発者がノートパソコンを開いたままにする必要はありません。
永続化します。 一時停止するとディスクは封印され、次の呼び出しはその封印から起動し、ファイル、インストール、git 状態が再構築ではなくそのまま保持されます。プロセスは例外です。起動は常にコールドブートです。
フォークします。 準備された1つの状態からの20回の試行は、20回の再構築ではなく、それぞれデルタのコストです。環境はスナップショットチェーンであり、マシンではないからです。
シークレットを箱の外に保つことができます。 仲介された認証情報は、あなたの代わりに境界で呼び出され、その値は環境、ログ、ストアに入ることはありません。代わりに環境に書き込まれた認証情報は、設計上、そこで読み取り可能です。
エージェントに依存しません。 REST API が正規のものであり、このサーバー、SDK、CLI はその翻訳です。独自のエージェントを持ち込んでください。
API は製品の境界であり、Web UI ではありません: reachpad.dev。
インストール
npx -y @reachpad/mcp # stdio, for a local clientClaude Code の場合:
claude mcp add reachpad -e REACHPAD_IDENTITY_CREDENTIAL=… -- npx -y @reachpad/mcpRelated MCP server: Nolane Habitat
2つのトランスポート、1つの実装
npx @reachpad/mcp # stdio
REACHPAD_MCP_HTTP_PORT=8722 npx @reachpad/mcp # streamable httpstdio はローカルクライアントが話すもので、Streamable HTTP はリモートコネクタが話すものです。同じツール、同じ動作です。フォークではなく追加されています。1つのサーフェスの2つの実装は、そうやってドリフトするからです。
HTTP 側は GET に対して 405 を返します。ここにあるすべてのツールはリクエスト/レスポンスであり、仕様では、来ないトラフィックのために接続を開いたままにするのではなく、サーバーが開始するストリームを拒否することが許可されています。セッションはありません — 再起動で再構築できないものが呼び出し間で保持されることはありません。また、独自の認証情報を持ちません — HTTP リクエストを認証するものが reachpad を認証するものです。
設定
変数 | 意味 |
| あなたの reachpad ホスト。ループバック以外への平文 |
| ユーザーごとの認証情報。1つのアカウントを指定し、他のアカウントのために動作することはできません。サーバーは、リクエストからではなく、認証情報自体のレコードから ID を取得します。 |
| オプションで、環境ごとにスコープされ、失効可能です。設定すると、 |
| stdio の代わりに HTTP を提供します。 |
| デフォルトは |
| ベアラートークン。定数時間で比較されます。ない場合、ポートに到達できるすべての呼び出し元が認証され、サーバーは stderr にその旨を出力します。 |
| カンマ区切り。リストにない |
複数の認証情報が設定されている場合、最も狭いものが優先され、拒否された認証情報がより広いものの下で再試行されることはありません — フォールバックは、誰も実行することを選択していない権限昇格になるからです。
ツール
ツール | 機能 |
| 残りのコンピュートクレジット。1クレジットで、標準環境を1分間実行できます。 |
| 新しい環境。オプションで、リポジトリが |
| あなたの環境と、それぞれのフォーク数 |
| 起動元: ヘッドスナップショット、ログ位置、フォークツリー |
| 1つのコマンド、その終了コード、出力。一時停止中の環境は、それを提供するために再開します。 |
| 最後に封印されたスナップショットからフォークします。元の環境は変更されません |
| ポートを Web に公開し、そこに到達するリンクを取得します。ポートごとに冪等です。 |
| この環境が開いているポートを、古い順に、リンク付きで表示します |
| 1つのポートを閉じます。後で再度開くと、異なるリンクが発行されます。 |
| アーカイブし、プランスロットを解放します。何も削除されません — スナップショットと履歴は残ります。 |
意図的にここにはありません: 環境内でエージェントを起動すること。これは reachpad のロードマップにあり、まだフリートにはありません。常に失敗するツールは、モデルのターンを消費し、残りを信頼しないように学習させるため、このサーバーは提供できないものを宣伝しません。
ポートリンクが何であるか、何でないか
誰かに渡す前に読む価値があります。URL からは何も発見できないからです:
リンクを持っている Reachpad にサインインしている人は誰でも開くことができます。 これはプライベート URL でも安全な URL でもありません。プレビューデプロイのように扱ってください。
リンクはアドレスであり、コピーではありません。 同じポートでアプリを再起動すると、同じリンクが新しいバージョンを提供します。
実行中のプロセスは一時停止を生き延びません。 環境はファイルをそのままにしてコールドブートし、何も実行されていないため、一時停止後、そのポートで何かがリッスンするまでリンクはエラーで応答します。訪問者のリクエストは一時停止中の環境を起動しますが、その中の何かを再起動するわけではありません。
expose_portはその後ポートにダイヤルし、何も応答しなかった場合はその旨を伝えます。何も提供していないポートへのリンクは、機能しているリンクとまったく同じように見えるからです。check: falseを渡すとスキップできます — ダイヤルは一時停止中の環境を再開します。REACHPAD_API_KEYのみの場合、キーは--role ownerである必要があります。collaboratorキーは拒否されます。リストはライブトークンを返し、トークンはケイパビリティだからです。
それが構築されているルール
これらは、ストリーミング exec API のナイーブなクライアントがモデルを誤解させる方法と、この API が代わりに行うことです。
終了していないストリームは UNKNOWN であり、成功ではありません。 応答が終端イベントなしで終了した場合、ツールはその言葉でそう言います。これはゼロ終了ではなく、エージェントはその強さで非冪等コマンドを再試行してはなりません。
その期限はサーバーより緩いため、サーバー側の応答が常に競争に勝ちます。先に諦めるクライアントは「ビルドが完了しました」を「不明」に変え、数値は推測ではなくサーバーからミラーリングされます。
拒否にはコードではなく救済策が含まれます。 プラン制限に達すると、制限、現在の数、および何をすべきかが得られます。数値はサーバーから来ます。クライアントにハードコードされた制限は、プランが変更された瞬間に嘘になるからです。
結果はハンドルであり、ペイロードではありません。 出力は、ドロップされたバイト数が指定されてテールされます。ビルドログはメガバイトになる可能性があり、そのサイズの MCP 結果は呼び出し元のコンテキストウィンドウを破壊します。
拒否は結果であり、トランスポートエラーではありません。モデルがそれを読んで行動できるようにするためです。未知の ツール だけがプロトコルエラーです。
テスト
node --test 'test/*.test.mjs'ネットワークも認証情報もありません。プロトコルスイートは、出荷されたサーバーを子プロセスとして起動し、実際のソケット上のスタブコントロールプレーンに対して、その stdio 上で実際の JSON-RPC を話します。テスト対象のものは内部インポートではありません。1つのテストは、実際の reachpad に対して同じアークを実行し、エンドポイントが設定されていない場合はスキップします。
リポジトリ
このリポジトリがソースです。これは意図的に reachpad バックエンドから分離されています: このコードは公開されており、npm に公開され、そのリリースワークフローは公開権限を保持しています。これらはどれもコントロールプレーンと同じリポジトリに属しません。ここにあるものはバックエンドのソースを読むことができず、バックエンドのジョブがここにファイルをコピーすることもありません。
2つのサーバー定数が src/client.js にミラーリングされています — exec 猶予期間とデフォルトの exec タイムアウトです。ミラーリングされた定数は通常腐敗しますが、これは腐敗しません。バックエンド自身の CI がこの公開パッケージを取得し、それらが一致しない場合に失敗するからです。チェックは数値が変更される場所にあります。
Maintenance
Related MCP Connectors
Create and drive plori cloud agents and workflows over MCP; each agent has its own environment.
Your org's AI agents, tasks, runs, search, and brain files as MCP tools and resources.
Hosted MCP memory and agent control plane for durable conversations, jobs, and operations.
MCP-first toolbox for agents: KV storage, auth, queue, and utility tools. Free in early access.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceProvides MCP tools for managing disposable Docker sandboxes that let AI agents safely execute commands in isolated, ephemeral environments.

Nolane Habitatofficial
FlicenseNot gradedqualityBmaintenanceProvides coding agents with a durable, revision-aware project workspace for semantic context, governed source changes, verification, task checkpoints, and observability through an MCP interface.1- AlicenseNot gradedqualityBmaintenanceA durable MCP control plane for starting, observing, steering, continuing, cancelling, and handing off long-running coding agents, with bounded MCP calls and persistent worktrees.235MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI clients to securely operate isolated coding workspaces with file, command, Git, and deployment tools via authenticated remote MCP.8MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Reachpad/reachpad-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server