Claude Media
/mcp reconnect allで失敗したMCPサーバーを一括再接続する

/mcp reconnect allで失敗したMCPサーバーを一括再接続する

Claude Code v2.1.284で追加された/mcp reconnect allの使いどころと、サーバー単位の再接続との使い分け、効かないケースをまとめます。

/mcp reconnect allは、接続に失敗したMCPサーバーと認証待ちのMCPサーバーを、1コマンドでまとめて再試行するコマンドです。Claude Code v2.1.284で追加されました。対象は対話ターミナルで、ネットワーク断やVPN切り替えのあとに複数のサーバーが一斉に落ちたときの後始末が短くなります。

この記事では、コマンドの使い方、サーバー単位の再接続との使い分け、一括再接続をかけても直らないケースをまとめます。

/mcp reconnect allは何をするコマンドか

更新履歴にある説明は1行です。対話ターミナルで、接続に失敗した、または認証が必要なMCPサーバーをすべて一度に再試行する、というものです。

以前は/mcpのパネルを開き、失敗したサーバーを1つずつ選んで「Reconnect」を実行する必要がありました。サーバーが5つ落ちていれば5回の操作です。reconnect allはこの繰り返しを1回にまとめます。失敗ではなく接続中のサーバーを待つ仕組みは別で、WaitForMcpServersの記事にあります。

/mcp reconnect all

コマンドの書式は、コマンド一覧では次のように載っています。

書式できること
/mcpできること対話式のサーバー一覧を開く
/mcp reconnect <server>できること切断されているサーバー1つを再接続する
/mcp reconnect allできること失敗・認証待ちのサーバーをまとめて再試行する(v2.1.284〜、対話ターミナル)
/mcp enable / /mcp disableできることサーバー名またはallを渡して、接続の有効・無効を切り替える

reconnect allはコマンド一覧のページにも載っていて、MCPのページには「v2.1.284より前のバージョンではMCP server "all" not foundと表示される」と書かれています。この表示が出たら、原因はサーバーではなくバージョンです。claude --versionで確かめます。

シェル側のclaude mcpには、再接続のサブコマンドがありません。v2.1.289でclaude mcp --helpを見ると、サブコマンドは次のとおりです。

claude mcp --help
# Commands:
#   add / add-from-claude-desktop / add-json
#   get / list / login / logout / remove
#   reset-project-choices / serve

再接続は対話ターミナルの/mcpで行い、シェルから使えるのは状態の表示(list・get)とサインイン(login <name>)です。

失敗したサーバーはまず自動で再接続される

一括再接続に頼る前に、Claude Codeがすでに何を自動でやっているかを押さえておくと、手動操作の出番が見えます。

手順

サーバーが落ちてから手動操作に回るまで

  1. 1

    切断を検知する

    リモートサーバーが接続中に落ちると、/mcpはそのサーバーを「pending」と表示します。

  2. 2

    指数バックオフで最大5回つなぎ直す

    最初の遅延は1秒で、試行のたびに倍になります。1、2、4、8、16秒と伸びます。

  3. 3

    失敗または要認証になる

    5回失敗すると「失敗」、再認証が必要なときは「要認証」に変わります。失敗のときはMCP server "<name>" disconnected · open /mcp to reconnectという通知が出ます。

最初の接続は別扱いです。HTTP・SSEサーバーが5xx、接続拒否、タイムアウトで失敗したときは、最大3回再試行します。WebSocketサーバーの最初の接続と、認証エラー・見つからないエラーは再試行されません。設定の変更が要るからです。

例外は、Authorizationヘッダーの供給源がheadersHelperだけの場合です。ヘルパーが試行のたびに再実行され、新しい資格情報を拾えるため、認証エラーでも再試行されます。

ネットワークが戻った直後に/mcpが「pending」なら、自動再接続の最中なので少し待ちます。「失敗」に変わったのを見てからreconnect allを打つと無駄がありません。

バックオフの仕組み自体はMCPのツール更新と接続断からの自動再接続の仕組みで詳しく扱っています。

一括再接続が向く場面

向くのは、原因が1つで、サーバーが複数まとめて落ちたときです。

  • ノートPCのスリープ復帰やWi-Fiの切り替えで、リモートサーバーが一斉に切れた
  • VPNをつなぎ直したあと、社内向けのHTTPサーバーが失敗のままになっている
  • 認証の有効期限が切れ、複数のサーバーが「要認証」に変わった
  • 一時的な障害から復旧したあと、失敗状態が残ったサーバーをまとめて戻したい

原因が1台に絞れているなら、全部を再試行する意味は薄くなります。

くらべる

全部つなぎ直すか、1台だけつなぎ直すか

原因が共通

/mcp reconnect all

ネットワーク、VPN、認証期限など共通の原因で、複数のサーバーが失敗・要認証になっているとき。1回の入力で済みます。

1台だけ

/mcp reconnect サーバー名

落ちているサーバーが分かっているとき。他のサーバーには触れません。

サーバー名を指定する形は次のとおりです。パネルなら、サーバーを選んでメニューから「Reconnect」を選びます。認証が切れたサーバーは同じメニューの「Re-authenticate」でサインインし直します。

/mcp reconnect my-server

手順: 状態を見てから一括再接続する

手順

一括再接続の流れ

  1. 1

    状態を見る

    /mcpで各サーバーの状態を確認します。失敗や要認証になっているものが対象です。

  2. 2

    一括で再試行する

    /mcp reconnect allを実行します。

  3. 3

    結果を確かめる

    もう一度/mcpを開き、connectedに戻ったかを見ます。

  4. 4

    戻らないサーバーを個別に調べる

    残ったサーバーだけ、失敗の詳細(下記)から原因を探します。

シェルから確認するなら、次のコマンドが使えます。ただしclaude mcp listは各サーバーの接続を試して状態を表示するコマンドで、再接続そのものではありません。

# 状態の一覧(失敗したサーバーには詳細が付く)
claude mcp list
 
# 1つのサーバーの詳細(Issue: 行に失敗の原因が出る)
claude mcp get my-server

✘ Failed to connectのサーバーには、HTTPステータスやエラーコード、サーバーが返したエラー文が付きます(v2.1.219以降)。認証情報らしい文字列は伏せられます。✘ Connection errorの行には詳細が付きません。一括再接続の前に、この詳細が「設定の誤り」を示していないかを見ておくと、無駄打ちを避けられます。

一括再接続では直らないケース

再試行は、原因が一時的なときにだけ効きます。次のケースは、コマンドを何度実行しても同じ結果になりやすいものです。

設定や資格情報が間違っている

ヘッダーのトークンに前後の空白や改行が混ざっている、URLが違う、urlがあるのにtypeがない。こうした設定の問題は、再接続では解消しません。最初の接続の自動再試行でも、認証エラーや「見つからない」エラーは設定変更が必要なため対象外です。

認証情報の環境変数も落とし穴です。Bearer ${ANTHROPIC_AUTH_TOKEN}のように書くと、Claude Codeはその変数を空として読み、サーバーはBearer だけを受け取ります。たいていは401で拒否され、接続は失敗として扱われます。

claude mcp listや/mcpは、設定の問題を警告として出します。警告は空白、同名サーバーの定義衝突、予約名、未設定の環境変数の4種類です。再接続の前にこの警告を見てください。

未設定の環境変数は、${VAR}のテキストが展開されないままサーバーが読み込まれ、警告に変数名が出ます。一方、リモートサーバーのurlとheadersで空として読まれる認証情報の変数には警告が出ません。

headersかheadersHelperでAuthorizationヘッダーを設定しているサーバーでは、接続時の401や403は「要認証」ではなく「失敗」として扱われます。直すべきなのは設定した資格情報のほうだからです。

stdioサーバーがクラッシュしている

stdioサーバーはローカルプロセスで、Claude Codeは自動再接続しません。プロセスが起動しない原因(コマンドのパス、依存パッケージ、環境変数)が残っていれば、再接続しても同じ理由で失敗します。手動で単体起動して、エラー出力を読むのが近道です。起動待ちの時間切れが疑わしいならMCP接続待機の設定も関係します。

実行後も要認証が残るときは再サインインする

reconnect allの対象には「認証が必要なサーバー」が含まれます。実行後も要認証のまま残るサーバーは、/mcpのサーバーメニューで「Re-authenticate」を選んでサインインし直します。毎日同じ時間帯に要認証へ戻る場合は、MCP OAuthが毎日Connection expiredになる問題も参照してください。

claude.aiコネクターとクラウドセッション

クラウドセッションに渡されたコネクターは、セッション側ではサインインの流れを持ちません。再認証が必要なときは、セッションではなくclaude.aiのコネクター設定で接続し直します。

reconnect allの対象は対話ターミナル

更新履歴もMCPのページも、reconnect allを「対話ターミナル」(interactive terminal)の機能として書いています。claude -pでは/mcpのパネルを開けないため、サインインはclaude mcp login <name>で行います。

/mcp自体は非対話モードでも使えます(v2.1.205以降)。ただし引数なしで実行すると、一覧を開く代わりにサーバー状態のテキスト要約が出ます。-pで動いている間も、リモートサーバーの切断はパネルなしで同じ間隔で自動再接続されます。

非対話モードで認証が必要なサーバーがあると、tool searchが有効なら(既定)Claudeは「そのサーバーのツールは認証するまで使えない」と認識し、サーバー名を挙げて報告できます。サインインはclaude mcp login <name>か、対話ターミナルの/mcpで済ませます。

cachedサーバーとの関係

以前に使ったリモートサーバーは、cached 2h ago · connects on first useのように、発見キャッシュから読み込まれた状態で表示されることがあります。この場合、実際の接続は最初にツールが呼ばれたときです。サーバーメニューの「Reconnect」は、cached状態のサーバーをその場で接続し、キャッシュエントリを保持します。キャッシュの仕組みはMCP_DISCOVERY_CACHEの解説にまとめています。

reconnect allの説明にあるのは「失敗または認証が必要」なサーバーだけで、cachedのサーバーには触れていません。cachedのサーバーを今すぐつなぐなら、サーバーメニューの「Reconnect」が確実です。

運用メモ: つなぎ直す前に見る警告

複数のMCPサーバーを常用している環境では、/mcpとclaude mcp listに出る警告を読み分けると手戻りが少なくなります。

警告の表示原因直し方
Leading or trailing whitespace in: headers.Authorization原因設定値の前後に空白や改行がある(トークンの貼り付けで混ざりやすい)直し方設定を編集して取り除く。Claude Codeは空白を削らず、書かれたまま使う
同名サーバーの定義衝突原因複数のスコープに、同じ名前で別のエンドポイントがある直し方残す定義を決め、claude mcp remove <name> --scope <scope>で他を消す
予約名原因workspaceやclaude-in-chromeなど、組み込みサーバーの名前を使っている直し方名前を変える。予約名のサーバーは読み込み時にスキップされる
未設定の環境変数原因${VAR}が未設定で、:-defaultもない直し方変数を設定するか、${VAR:-default}で既定値を置く

Claudeに任せる運用なら、CLAUDE.mdに「MCPツールが使えないときは、まず/mcpで状態を確認する。一括で復旧できそうならユーザーに/mcp reconnect allの実行を案内する」と書いておく方法があります。MCP全般の設定はClaude Code MCP設定ガイドにまとめています。

よくある質問

一括再接続で有効化していない(disabled)サーバーも動きますか

reconnect allの対象として挙げられているのは、失敗または認証待ちのサーバーです。無効にしたサーバーを戻すには/mcp enable <server>で有効にします。無効の記録は~/.claude.jsonにプロジェクトごとに残るので、次のセッションでも無効のままです。

まとめ

打つ前に/mcpの表示を1回見る習慣が、無駄打ちを減らします。「pending」なら自動再接続が終わるのを待ち、警告が出ていれば設定を直し、それでも失敗が複数残ったときに/mcp reconnect allを使います。

この記事を共有:XはてブLinkedIn