開発と AI · Clash 技術ブログ

Cursor で Clash プロキシを設定する方法:ログイン、モデル接続、MCP、ターミナルのタイムアウトを修正する

Cursor のログイン、モデルの応答、MCP の子プロセス、内蔵ターミナルは、それぞれ異なる四つの経路を使う場合があります。まず Network Diagnostics で失敗している経路を特定し、その経路を Clash へ接続してください。

  • Cursor
  • MCP
  • AI プラグイン
目次

ブラウザは使えるのに Cursor がタイムアウトする場合は、四つのネットワーク経路を分けて確認する

Cursor を Clash 経由に設定するときは、ブラウザでWebページが開くことだけを証拠にできません。アカウントのサインイン、モデルのストリーミングリクエスト、MCP サブプロセス、統合ターミナルは、それぞれ別に接続します。ある経路はシステムプロキシを参照し、別の経路は自身の環境変数だけを見る場合があります。

まず失敗する操作を特定する

失敗する場所確認する内容
サインインまたはアカウントページリダイレクト後の HTTP ステータス、アプリ診断、Clash Connections
モデルが Connecting のまま / リクエストがタイムアウトするCursor Network Diagnostics、固定ノード、ストリーミング接続
MCP ツールが赤く表示される、または起動に失敗する転送方式、プロセスログ、mcp.json、環境変数
統合ターミナルの git / npm がタイムアウトするshell の HTTP_PROXY / HTTPS_PROXY と実際のポート

以降は、現在失敗している経路だけに対処してください。結果を比較できるよう、Clash の Proxies でノードを固定し、Rule モードを維持します。自動グループがリクエスト途中で送信経路を変えると、サインイン、ダウンロード、長い応答の判断が難しくなります。

システムプロキシで Cursor の基本接続を確立する

Cursor の基本プロキシ設定

  1. Clash の Proxies でノードを固定する

    動作確認済みの特定ノードを選び、モードは Rule のままにします。

  2. Clash の System Proxy を有効にする

    システムプロキシが現在の mixed-port を参照していることを確認し、ほかのプロキシクライアントを終了します。

  3. Cursor を完全に終了して開き直す

    新しい Cursor プロセスに、OSのプロキシ設定を再度読み込ませます。

  4. Cursor の Network ページを開く

    Cursor Settings > Network へ進み、組み込み診断を実行する準備をします。

この手順は、Cursor に明確なシステムプロキシの開始点を与えるだけです。続いて組み込み診断を実行し、その結果を Clash Connections と照合して初めて、入口、ノード、アカウント、MCP 自体のどこに問題があるか判断できます。

Network Diagnostics の結果から、次に調べる経路を決める

診断結果に応じた次の確認先

結果次に確認する場所
診断に成功し、サインインとモデルも正常基本接続は完了しています。まだ失敗する MCP またはターミナルだけに対処してください
診断に失敗し、Connections に新しいリクエストがないCursor がシステムプロキシを使っていません。TUN と比較してください
診断に失敗し、リクエストは固定ノードを使うが timeout になるノード、接続ネットワーク、接続の持続性を比較する
診断またはサインインで 401 / 403 / 429 が返るアカウント、権限、使用量の表示を確認し、プロキシポートを変更し続けない

Run Diagnostics を実行するときは、失敗した項目と時刻を記録し、その直後に Connections で同時刻のリクエストを探します。この対応関係は、赤いアイコンだけを保存するより役立ちます。その後のサインインとモデルのテストでも、同じ固定ノードを使ってください。

Cursor のサインインが失敗する場合は、サインインボタン後のリダイレクトを確認する

Sign in をクリックした後にページが開かない、元のサインイン画面へ戻る、または待機し続ける場合は、固定ノードを維持してもう一度クリックし、同時に Connections を確認します。サインインリクエストがなければ、Cursor アプリは現在のシステムプロキシに入っていません。リクエストが表示されたら、timeout、401、403 を分けて対処してください。

401 はサインイン状態に近い問題です。403 ではページに表示されるアカウントまたは地域の案内を確認し、timeout の場合にノードとネットワークを比較します。サインイン中に自動ポリシーで送信経路を変えないでください。認証ページとコールバックが異なるアドレスから届き、リダイレクトを繰り返すことがあります。

Cursor のサインイン修正後に確認する結果

  • Sign in のリダイレクトリクエストが Connections に表示される
  • 認証ページとコールバックが同じ固定送信経路を使う
  • Cursor のアカウント領域にサインイン済みと表示される
  • Cursor を再起動してもサインイン状態が維持される

サインインできてもモデルがタイムアウトするなら、アカウント情報を繰り返し消さない

サインイン成功から分かるのは、認証ページへの経路が少なくとも動作したことです。モデルが Connecting のまま、Network Error が出る、または応答が途中で止まる場合は、モデルリクエストを別に再現してください。短い質問で応答開始を確認し、次に少し長い質問でストリーミング接続が続くかを確認します。その間はノードを切り替えないでください。

Cursor の開発者ツールでは、リクエスト状態を確認できます。コマンドパレットを開き、Developer: Toggle Developer Tools を実行してください。より完全な記録が必要な場合は、Developer: Open Logs Folder を実行します。

Request ID、発生時刻、Cursor のバージョンを記録します。ログを共有する前に、token、コード内容、個人パスを削除してください。

短い応答は成功するが、長い応答が繰り返し中断する

送信経路を固定し、別のノードと別のネットワークを比較して、ストリーミング接続の安定性を確認します。

モデルリクエストが 401 を返す

Cursor のサインイン状態または関連する認証情報を確認してください。通信はすでにサービスへ到達しています。

診断とモデルリクエストが両方 timeout になる

Clash に記録があるかを比較してから、入口とノードのどちらに対処するか決めます。

ページが 429 を返す

アカウントの使用量またはレート制限を確認してください。プロキシポートを変更し続ける必要はありません。

Connections に Cursor がなければ、リクエストはまだ Clash に入っていない

システムプロキシを有効にしてから Network Diagnostics を再実行してください。ブラウザの記録はあるのに Cursor がまだ表示されない場合、現在のバージョンまたは一部のサブプロセスがシステムプロキシを使っていない可能性があります。TUN と比較し、より多くのプロセストラフィックを Mihomo へ取り込んでください。TUN が解決するのは入口の問題だけであり、401、403、MCP の設定エラーは修正できません。

TUN を有効にした後、同じ診断をもう一度実行します。Connections に Cursor のリクエストが新しく表示されて成功した場合、それまではシステムプロキシを迂回していました。記録は表示されても timeout のままなら、ノードとネットワーク経路へ戻ってください。この前後比較は、複数のプロキシ方式を常時有効にするより確実です。

入口を切り替えた後の判断

  • システムプロキシ使用時に Cursor リクエストが Connections に表示されるか
  • TUN を有効にした後、同じ対象への接続が新しく表示されるか
  • 新しい接続が DIRECT とプロキシポリシーのどちらに一致するか
  • エラーが記録なしから timeout に変わったか、または解消したか

MCP ではまず transport を確認する。stdio とリモート HTTP は異なる接続方式

Cursor は、ローカル stdio、SSE、Streamable HTTP などの MCP 転送方式に対応しています。stdio サービスは Cursor が起動するローカルコマンドです。最初に実行ファイル、引数、環境が正しいか確認してください。リモート URL、認証、プロキシ経路の確認が必要なのは、SSE または Streamable HTTP の場合です。

プロジェクト設定は通常 .cursor/mcp.json、グローバル設定は ~/.cursor/mcp.json にあります。編集前にどちらが有効かを確認し、プロジェクトファイルとグローバルファイルで同名の server を定義しないでください。JSON の解析に成功しても、構文が正しいことしか分かりません。サービスプロセスが起動したかは MCP ログで確認します。

stdio 設定の例。command、ファイルパス、ポートはローカル環境の実際の値へ置き換える
{
  "mcpServers": {
    "local-tool": {
      "command": "/absolute/path/to/node",
      "args": ["/absolute/path/to/server.js"],
      "env": {
        "HTTP_PROXY": "http://127.0.0.1:7890",
        "HTTPS_PROXY": "http://127.0.0.1:7890",
        "NO_PROXY": "localhost,127.0.0.1,::1"
      }
    }
  }
}

MCP の「起動失敗」と「ツール呼び出しのタイムアウト」は分けて扱う

spawn ENOENT
Cursor が command を見つけられません。実行ファイルの正しいパスを使い、同じ環境で手動実行してください。
JSON parse error
mcp.json の構文が無効です。カンマ、引用符、オブジェクトの階層を確認してください。
server exited
ローカルプロセスが起動後に終了しています。stderr、依存関係、作業ディレクトリを確認してください。
HTTP 401 / 403
リモート MCP はリクエストを受信済みです。認証とサービス権限を確認してください。
tool call timeout
サービスには接続しましたが、呼び出しが時間内に完了していません。サーバーログと外部依存関係を確認してください。

修正後、Cursor の MCP パネルでサービスを再読み込みします。緑の表示だけでは利用可能とはいえません。最小限のツール呼び出しを一度完了し、ログでリクエストと応答を確認してください。ツール自体が外部へアクセスする場合は、そのツールにも独自のプロキシ環境が必要です。

Cursor ターミナルがタイムアウトする場合は、そのターミナル内で環境変数を確認する

統合ターミナルは shell 環境を継承するため、Cursor 画面のネットワーク設定に従うとは限りません。まず HTTP_PROXY、HTTPS_PROXY、NO_PROXY を表示し、curl でテストアドレスへアクセスしてください。Clash Connections に記録がなければ、変数が反映されていないか、ポートが誤っています。

macOS / Linux での一時比較。7890 は置き換えるポート
CLASH_PORT=7890
export HTTP_PROXY="http://127.0.0.1:${CLASH_PORT}"
export HTTPS_PROXY="http://127.0.0.1:${CLASH_PORT}"
export NO_PROXY="localhost,127.0.0.1,::1"
curl -I https://example.com

Windows PowerShell、Git、npm、各言語のパッケージマネージャーでは、プロキシの読み取り方が異なる場合があります。各ツールのドキュメントに従って設定してください。プロジェクトのソースコードやコミット履歴にプロキシ認証情報をハードコードしないでください。ポートは現在 Clash に表示される値を使い、7890 は例にすぎません。

修正した手順に対応する、当時失敗した操作をやり直す

サインインの問題はアカウントへ入れた時点、モデルの問題は応答が一つ最後まで完了した時点、MCP は実際にツールを一つ呼び出した時点が完了です。ターミナルでは、以前失敗した git、npm、curl が結果を返す必要があります。四項目を同時にテストする必要はありませんが、それぞれに対応する Connections またはログの証拠を残してください。

モデルが安定していても特定の MCP が spawn ENOENT を返す場合、この記事の手順で問題は MCP のローカルコマンド階層まで絞られています。command とファイルパスだけを確認し、すでに動作する Cursor のネットワーク設定は変更しないでください。

参考資料