Claude Code と MCP ツールがタイムアウトしがちなとき:2026 年、Clash の分流で CLI・npm・GitHub の取得を安定させる
2026 年、Claude Code やエディタから起動する Model Context Protocol(MCP) サーバーは、ブラウザの Claude とは別経路で Anthropic の API、npm レジストリ、GitHub、拡張マーケットやコミュニティのレジストリ類へ同時多発接続します。出口が混雑していたり、DNS がブラウザと CLI で食い違っていたりすると、画面ではなくターミナル側だけがタイムアウト・ETIMEDOUT・証明書検証の遅延として現れがちです。本稿は既存の Claude ウェブ・API 分流 と棲み分けし、CLI・プラグイン取得・MCP 子プロセスが踏むドメインを Clash のルール順とポリシー分離で整える手順に絞ります。職場ポリシーと各サービスの利用規約は必ず遵守してください。
なぜ「ブラウザは動くのに CLI だけ不安定」になりやすいか
ブラウザは OS のプロキシ設定や拡張に従いやすい一方、node や deno、言語別のパッケージマネージャ、gh などの CLI は環境変数(HTTPS_PROXY など)を見たり見なかったりします。Claude Code や MCP ランチャーはさらにIDE 外の子プロセスを挟むため、親が通っていたはずの経路が子では DIRECT に落ちている、というパターンが典型です。
- 長い HTTPS セッション:SSE やストリーミング、大きな tarball 取得が同一ノードのキューに積み上がる。
- レジストリのリダイレクト連鎖:
registry.npmjs.orgから CDN へ飛ぶ一行が、別ルールに吸われる。 - GitHub のホスト分散:
github.comとobjects.githubusercontent.comで出口が割れると、git / npm の途中で失敗に見える。
切り口
「モデルが弱い」の前に、Connections ログのホスト名と outbound を揃える。ブラウザと同じノード名でも、実際に当たっている行が違えば体感は別物です。
束ねるドメイン:Anthropic・npm・GitHub・周辺
環境ごとに増減しますが、開発者マシンでは次のようなバケット分けが扱いやすいです。いずれも本番設定前に、自環境のログで実名を確認してください。
| バケット | 代表ホスト(例) | メモ |
|---|---|---|
| Anthropic / 認証 | api.anthropic.com、claude.ai 周辺 |
CLI とブラウザでホストが分かれる場合あり |
| npm | registry.npmjs.org、CDN 系 |
ロックファイル取得・publish で負荷が偏る |
| GitHub | github.com、raw.githubusercontent.com、objects.githubusercontent.com |
git clone / release asset でオブジェクトストレージが増える |
| エコシステム | open-vsx.org、marketplace.visualstudio.com など |
拡張・MCP バイナリ配布の参照元として現れやすい |
MCP のマニフェストが任意 URL を指す場合、上表に無いホストが一気に増えます。そのときは「ドメイン辞典を無限に増やす」のではなく、失敗した URL をログから逆引きしてルールを足す方が安全です。リモートのルールセットだけに依存する場合は、rule-providers の取得失敗 と合わせてキャッシュ更新も確認してください。
ルール順:開発者出口を GEOIP より上へ
広い GEOIP や最終 MATCH の直前までに細かい行を置き忘れると、npm だけ意図せず直結・あるいは逆に遅い商用出口へ吸われます。Anthropic・npm・GitHub をまとめたブロックを、エンタメ向けの遅延測定グループとは別の低遅延・安定優先のポリシーグループへ流すのが実務的です。
# Illustrative snippet — replace PROXY_DEV with your policy group name
rules:
- DOMAIN-SUFFIX,anthropic.com,PROXY_DEV
- DOMAIN-SUFFIX,claude.ai,PROXY_DEV
- DOMAIN-SUFFIX,npmjs.org,PROXY_DEV
- DOMAIN-SUFFIX,npm.community,PROXY_DEV
- DOMAIN-SUFFIX,github.com,PROXY_DEV
- DOMAIN-SUFFIX,githubusercontent.com,PROXY_DEV
- DOMAIN-SUFFIX,openvsx.org,PROXY_DEV
- DOMAIN-SUFFIX,visualstudio.com,PROXY_DEV
- GEOIP,CN,DIRECT
- MATCH,PROXY
実際のリストは自宅・会社・クラウド IDE で異なります。DOMAIN-KEYWORD は誤爆しやすいので、まずは DOMAIN-SUFFIX とログで裏取りした DOMAIN 行から始めるのが無難です。
DNS・fake-ip と長接続
fake-ip モードでは、アプリによっては名前解決と実接続の見え方がズレ、再試行ループが増えます。CLI だけおかしいときは、ブラウザのセキュア DNS を一時オフにして検証経路を一本化し、原因切り分け後に元へ戻すのが定石です。詳細は DNS 漏れと fake-ip を参照してください。
- 同一ホストでも解像度が違う:DoH と Clash 内 DNS の二重解決に注意。
- 長めの読み取りタイムアウト:ストリーム型 API とレジストリの大物取得が重なると、ノード側のアイドル切断が表面化しやすい。
- IPv6:IPv4 だけ安定している出口に、AAAA が先行して失敗するケース。
コンプライアンス
企業ネットワークではプロキシ迂回が禁止されていることがあります。本稿の技術は許可された環境での経路最適化を想定しています。
ノード選択:url-test のフラップを避ける
開発者向けポリシーは「帯域テストで一位のノード」より、小さな TLS ハンドシェイクが安定するノードを選びたい場面が多いです。url-test の間隔が短すぎると出口が頻繁に切り替わり、進行中の git / npm が途中で張り直されてタイムアウトに見えます。間隔と tolerance を緩め、フォールバック鎖の深さを抑えると改善することがあります。
OpenAI 系 CLI と併用する場合は Codex / o3 分流 とポリシーを分けると、混雑の伝播を減らせます。エディタ全体の補完トラフィックは Cursor / AI 開発ネットワーク の観点と重なるため、そちらでカバーしたホストは二重に書かず、どちらの記事の分類に寄せるかを決めるとメンテが楽です。
TUN とプロセス名:Node 子プロセスを捕まえる
環境変数だけでは拾えないトラフィックは、Clash Meta(Mihomo)系の TUN と PROCESS-NAME / PROCESS-PATH で IDE 付属の node を明示的にマークする手があります。ゲーム向けの TUN 稿とは別用途ですが、「キャプチャ点をカーネル近くに置く」という発想は共通です。プロセス名は OS ごとに異なるため、タスクマネージャや ps で実名を確認してからルール化してください。
npm / pnpm / yarn を安定させる観点
- レジストリミラーと Clash の組み合わせでループプロキシになっていないか。
strict-ssl周りのエラーが、実際は経路タイムアウトの二重表示になっていないか。- 社内 Nexus / Verdaccio 経由なら、そのホストは
DIRECT固定が安全なことが多い。
MCP サーバー固有の落とし穴
MCP はローカル stdio サーバーから、リモートの SSE まで幅があります。起動時に一度だけ npm で依存を取りに行き、その後はローカルで完結するサーバーもあれば、セッション中も外部 API を叩き続けるサーバーもあります。後者は長接続とレート制限の両方に当たりやすいので、ログで「詰まっているのはモデル API か、レジストリか、GitHub か」を分類してください。
- マニフェスト URL:組織内レジストリを挟むと証明書チェーンが変わる。
- npx 一発起動:毎回キャッシュミスでレジストリへ戻り、渋滞時に失敗しやすい。
- 複数 MCP の同時起動:同じ npm CDN 行に集中し、帯域ではなく同時 TCP 数が限界になる。
よくある質問
ブラウザの Claude は快適なのに Claude Code だけ遅い
CLI が参照するホストが別ルールに落ちている、またはプロキシ環境変数が空の可能性があります。Connections で api.anthropic.com 等の outbound を確認してください。
npm install は通るが git clone だけ失敗する
objects.githubusercontent.com などオブジェクト用ホストが未登録で、遅い/不安定なデフォルト出口に流れているケースがあります。
MCP ツールだけタイムアウトが増えた
そのサーバーが参照する追加ドメインをログから拾い、Anthropic バケットとは別グループへ分離できるか検討してください。モデル API とレジストリを同一測定グループに載せないのがコツです。
チェックリスト
- ブラウザと CLI で、同一ホストの outbound が一致しているか確認する。
- Anthropic・npm・GitHub 系を
GEOIPより上に置く。 - DNS / fake-ip を切り分け、必要なら検証期間だけ経路を揃える。
- 開発者用ポリシーの
url-testがフラップしていないか見る。 - MCP ごとに「起動時のみ外部」「常時外部」を分類し、混在を避ける。
まとめ
2026 年の開発体験は、モデル品質だけでなくレジストリ・GitHub・API の複合レイテンシに左右されます。Clash でドメイン単位の意図した出口を先に決め、DNS と長接続、ノードの切り替わりを整えれば、Claude Code と MCP のタイムアウト体感はかなり改善することが多いです。