Claude のツール使用は Webhook ではありません。バックエンドがメッセージを送り、Claude が応答し(場合によってはツール呼び出しの要求を伴い)、あなたのコードがツールを実行して結果を返します。すべてあなたのマシンからのアウトバウンド HTTPS で行われます。ではなぜこの記事はトンネルの話なのでしょうか。
Claude で本格的なもの — コーディングエージェント、サポート自動化、MCP サーバー、長時間ワークフロー — を作り始めた瞬間に、インバウンド接続が必要になるからです。ブラウザクライアントのため。他アプリへ公開する MCP サーバーのため。モデルが呼び出すサードパーティツールからの Webhook のため。
トンネルが実際に役立つ場面
Claude アプリのブラウザフロントエンド
OpenAI Realtime のセットアップと同じ形です。フロントエンドは Anthropic の API キーを保持できないため、バックエンドと話し、バックエンドが Anthropic と話します。ストリーミング応答をきれいに描画するにはフロントエンドに HTTPS が必要で(一部のブラウザは平文 HTTP で SSE 処理を劣化させます)、フロントエンドが HTTPS ならバックエンドにも HTTPS が必要です。トンネルが両方を解決します。
ローカルで動く MCP サーバー
Model Context Protocol により、Claude(および他のクライアント)は MCP サーバーとして公開したツールに接続できます。stdio ではなく HTTP トランスポートの MCP サーバーでは、クライアントがあなたのサーバーへ到達する必要があります。MCP サーバーを試作し Claude Desktop など別のリモートクライアントでテストしたいなら、ローカルの MCP サーバーをトンネルで公開するのが最も抵抗の少ない道です。
computer use のコールバック
Claude の computer use ベータを使い、モデルがあなたのマシンへ Webhook を返すサービスとやり取りするなら、それは Webhook の領域です。どのプロバイダーとも同じパターンで、捕捉・再送・検証(該当する場合)を行います。
トンネルがしないこと
ローカルスクリプトから Claude を呼ぶだけならトンネルは不要です。curl https://api.anthropic.com/v1/messages はどのマシンからも動きます。Python と TypeScript の SDK も問題なく動きます。ツール使用自体はアウトバウンドのやり取りで、Claude がツールを使いたいときにあなたのマシンを呼ぶのではなく、Claude の応答に基づいてあなたのコードが呼び出します。
初めてだとここでつまずく人がいます。パターンはこうです。
- あなたのコードが、利用可能なツールの一覧とともにユーザーメッセージを Claude に送ります。
- Claude が応答し、呼び出すツールを記述した
tool_useブロックを含むことがあります。 - あなたのコードがローカルシステムに対してツールを実行します。
- あなたのコードがツール結果をフォローアップメッセージとして Claude に返します。
- 完了までループします。
5 つのステップはすべて 1 つの Python または TypeScript プロセス内で起こります。インバウンドトラフィックなし。トンネルなし。
トンネルが Claude ワークフローを助ける本当の理由
Claude 開発中に結局トンネルを動かすことになる理由は、モデルそのものではありません。その周辺のすべてです。エージェントの進捗を見せるダッシュボード、ツール出力をストリームするフロントエンド、テスト用に公開した MCP サーバー、エージェントが呼び出したサードパーティツールからの Webhook(「Slack にメッセージを送る」「Linear に課題を作る」)。エージェントが連鎖反応を引き起こし、その連鎖のどこかで外部サービスが最終的にあなたのマシンに到達したくなります。
MCP サーバー開発ループのセットアップ
- HTTP トランスポートで MCP サーバーを実装します。
- 選んだポートでローカルに起動します。
npx portpreview 3000(またはあなたのポート)。- Claude Desktop または他の MCP クライアントで、トンネルを指すリモートサーバー URL を設定します。
- コマンドを発行します。トンネル内のリクエスト捕捉と、サーバーが返す応答を観察します。
MCP サーバーが stdio トランスポートなら、これは当てはまりません。stdio サーバーはプロセスパイプで通信し、設計上ローカルにとどまります。
ストリーミング応答とトンネル
Claude は SSE で応答をストリームします。トンネルは長寿命のストリーミング応答を正しく扱う必要があります。多くは扱えますが、一部の古い HTTP プロキシは応答をバッファして最後にだけフラッシュするため、ストリーミングの意味が失われます。PortPreview、Cloudflare、ngrok はバッファなしで SSE を扱います。長い待機の後にフロントエンドが応答全体を一度に受け取るなら、トンネルがバッファしています。それは Claude の問題ではなくトンネルの問題です。
エージェントループのデバッグ
Claude のツール使用開発で最も難しいのは API ではありません。各ステップでモデルが何を決めたかを理解することです。実行前にすべての tool_use ブロックをログに残します。Claude へ返す前にすべてのツール結果をログに残します。フロントエンドとバックエンドの間にトンネルがあれば、リクエスト捕捉はユーザーメッセージの記録にもなり、プロンプトを打ち直さずにエージェントの実行を再生するのに役立ちます。
この先の方向
Anthropic のツール使用エコシステムは速く動いています。MCP、computer use、長いコンテキストウィンドウ、低いレイテンシ。Webhook をローカルでデバッグの Webhook パターンと、署名検証ガイドの署名の計算は、エージェントが呼び出す外部ツールがあなたのマシンへコールバックを発したときに当てはまります。
捕捉・再送・SSE セーフな転送を内蔵したトンネルは PortPreview のウェイトリストから。