claude mcp login/logoutでMCPサーバーの認証をCLIから操作する
MCPサーバーのOAuth認証を/mcpパネルを開かずCLIだけで完結させるclaude mcp loginとlogoutの使い方と、対応できない環境の見分け方をまとめました。
claude mcp login/logoutとは
claude mcp login <name> は、設定済みのMCPサーバーのOAuth認証フローを、Claude Codeセッション内の /mcp パネルを開かずにシェルから直接実行するコマンドです。claude mcp logout <name> はその逆で、保存済みのOAuth認証情報だけを消去します。どちらもClaude Code v2.1.186以降が必要です。
対応するのはHTTP・SSE方式のリモートサーバーとclaude.aiのコネクタです。対応していない相手が2種類あり、この記事の後半で扱います。ひとつはMicrosoft 365・Gmail・Google CalendarのようにAnthropicがホストするコネクタ(ローカルOAuth自体に非対応)、もうひとつはクラウドセッションへ配信されるコネクタ(認証がすでにclaude.ai側で完結している)です。
OAuthフロー自体の仕組み(401起点の認可サーバー発見からPKCE付きトークン取得までの流れ)はリモートMCPのOAuth認証の仕組みで扱っています。本記事は claude mcp login / logout コマンドの使い方に絞り、claude mcp login が追加されたClaude Code v2.1.186のリリースノートでは他の同時変更点(bash出力への応答など)も含めて確認できます。
前提条件: 対象のMCPサーバーがすでに claude mcp add で登録されていること。未登録のサーバー名を指定すると、そもそもログイン先が存在せずコマンドは失敗します。プロジェクト単位で読み込むサーバーを固定したい場合は、--mcp-configと--strict-mcp-configの使い分けで登録経路を先に整理しておくとログイン対象を取り違えにくくなります。
ステップ1: 認証が必要なサーバーを確認する
claude mcp list を実行すると、登録済みサーバーごとに接続状態が表示されます。
claude mcp list! Needs authentication と表示されたサーバーが、ログインが必要な相手です。✔ Connected はすでに認証済み、✘ Failed to connect は接続できていない状態です。URL誤りやネットワーク不通のほか、headersの資格情報が拒否された場合もここに出ます。login では解消しません。
注意が要るのは、設定ファイルの headers で Authorization を自分で設定したサーバーです。このタイプは401・403が返っても「認証が必要」にはならず、✘ Failed to connect の接続失敗として扱われます。直すべき資格情報はClaude Code側ではなく設定側にあるため、OAuthへは自動フォールバックしません。設定したトークンがそのエンドポイントに対してまだ有効か確認するか、headers.Authorization を削除してOAuthフローに任せます。
ステップ2: claude mcp loginでOAuthフローを実行する
対象サーバー名を指定して実行します。
claude mcp login sentryローカルにブラウザが検出できれば、Claude Codeが自動でブラウザを開き、認証後にターミナルへ戻ります。認証情報は安全に保存され、以降のセッションで自動的に使われます。認証が完了すると、そのサーバーが公開するツールに加えて、MCPのPrompts仕様に対応したサーバーならスラッシュコマンドとして呼び出せるプロンプトも利用可能になります。
ステップ3: ブラウザを開けない環境ではURLを手動で開く
SSH接続先や、ディスプレイサーバーのないLinux環境では、ブラウザを自動起動できません。この状況を検知すると、claude mcp login はブラウザを開こうとせず認証URLを表示します。
URL表示モードでの認証の流れ
- 1
SSHは-t付きで接続する
貼り付けの手順に、対話的なターミナルが要ります。
- 2
表示されたURLを手元のマシンで開く
認証を済ませると、ブラウザのアドレスバーにリダイレクトURLが出ます。
- 3
リダイレクトURL全体をプロンプトに貼る
一部ではなく、アドレスバーのURLをそのまま貼ります。
ssh -t user@host
claude mcp login sentry --no-browser--no-browser を付けると、ローカルにブラウザが検出できる環境でもURLの入力プロンプトに切り替わります。どちらの場合も最後に貼り付けが要るので、このコマンドだけでは無人実行になりません。
認証情報を消すときはclaude mcp logout
サーバーの設定は残したまま認証情報だけをクリアしたいときは、claude mcp logout を使います。
claude mcp logout sentry似たコマンドに claude mcp remove がありますが、消える範囲が違います。
logoutとremoveで消えるもの
claude mcp logout
保存済みのOAuth認証情報をクリアします。サーバー定義はそのまま残るので、同じ名前でもう一度 claude mcp login すれば入り直せます。
claude mcp remove
サーバー定義を削除し、そのサーバー用に保存されたOAuthトークンとクライアント登録も一緒に消えます。
クライアントシークレットは claude mcp add のときにしか設定できません。ログイン時は保存済みの値が使われ、入力を求められることも MCP_CLIENT_SECRET が読まれることもありません。後から変えるには remove してから、同じ --scope で --client-secret を付けて追加し直します。
claude mcp 系のサブコマンドは秘密情報の扱いにも改修が入っており、Claude Code v2.1.161では管理コマンドの出力からトークンなどの秘密情報が伏せ字化されています。
リダイレクトURIが固定のサーバーにはコールバックポートを指定する
既定では、OAuthのコールバック用ポートは空いているものがランダムに選ばれます。サーバー側が http://localhost:PORT/callback の形で事前登録したリダイレクトURIしか受け付けない場合は、ポートを固定します。
claude mcp add --transport http \
--callback-port 8080 \
my-server https://mcp.example.com/mcp動的クライアント登録に対応したサーバーなら --callback-port だけで足ります。事前登録したクライアントIDがある場合は --client-id と組み合わせます。設定ファイルに書くなら、oauth オブジェクトの callbackPort が同じ役割です。
使い分け早見表
| 状況 | 使うコマンド | 補足 |
|---|---|---|
| 対話セッション内で素早くログインしたい | 使うコマンド/mcp パネル | 補足ブラウザ操作込みで完結、コマンド不要 |
| セッションを開かずシェルから認証したい | 使うコマンドclaude mcp login <name> | 補足--no-browser やブラウザ非検出時は貼り付けが要る |
| SSH越し・ヘッドレス環境 | 使うコマンドclaude mcp login <name> --no-browser | 補足ssh -t で接続しURLを手動で開く |
| 認証情報だけリセットしたい | 使うコマンドclaude mcp logout <name> | 補足サーバー定義は保持される |
| サーバーごと作り直したい | 使うコマンドclaude mcp remove <name> | 補足OAuthトークンも道連れで削除 |
| Microsoft 365・Gmail・Google Calendar等のコネクタ | 使うコマンドclaude.ai側で再接続 | 補足ローカルOAuth非対応(次節で詳述) |
401エラーが出るたびにログインし直す必要はない
サインイン済みのサーバーが 401 Unauthorized を返しても、毎回 claude mcp login を打つ必要はありません。流れは次のとおりです。
サインイン済みサーバーが401を返したとき
- 1
保存済みトークンを更新して再接続する
リクエストは1回だけリトライされます。
- 2
リトライも失敗したらサーバーが要認証と表示される
claude mcp listの表示が! Needs authenticationに変わるのはこの時点です。 - 3
リフレッシュトークン自体が拒否されたら通知が出る
/mcpを案内する通知が出ます。対象サーバーで「Re-authenticate」を選ぶと、次のツール呼び出しが失敗する前に入り直せます。
v2.1.206より前は、ネットワークエラーのような一時的な理由でトークン更新に失敗しただけでも、リフレッシュトークンが有効なままセッション中ずっと「認証が必要」の表示が残りました。
/mcp のサーバーメニューにある「Clear authentication」は、CLIの claude mcp logout に対応する操作です。ここから実行すると、そのサーバーのツール一覧のディスカバリーキャッシュも破棄されます。このキャッシュはv2.1.238より前は既定でオン、それ以降は既定でオフです。MCP_DISCOVERY_CACHE=1 で明示的にオンにできます。
Claude Code v2.1.193以降は、認証が必要なサーバーがあると起動時に通知が出ます。通知はサインインをClaude Code側から完結できるサーバーだけを数え、一度通知したサーバーは、接続できた後に再び要認証になるまで次回以降の起動で数えません。
よくあるつまずき
claude.aiコネクタが「session token rejected」と表示される: claude.aiのコネクタでは、401 の原因が「サーバー側の認証切れ」ではなく「Claude Code自体のログインセッションがclaude.aiに拒否された」ことがあります。この場合 /mcp は通常の「認証が必要」ではなく session token rejected という別の状態を示し、claude mcp login でコネクタを再認証しても直りません。原因はClaude Codeへのログイン自体が失効していることなので、/login でサインインし直したうえで、/mcp からコネクタを再接続します。
認証後にブラウザがリダイレクトで接続エラーになる: ブラウザがローカルのコールバックに届かないときは、アドレスバーに残ったURL全体をコピーし、Claude Code側に出るURL入力のプロンプトへ貼ります。
「Incompatible auth server」や認証が進まない: 一部のMCPサーバーはDynamic Client Registration(認証時にクライアントを自動登録する仕組み)に対応しておらず、claude mcp login だけでは解決しません。サーバー提供元の開発者ポータルでクライアントID・シークレットを事前登録し、claude mcp add --client-id の形で追加し直す必要があります。
Anthropicがホストするコネクタでログインが失敗する: Microsoft 365・Gmail・Google Calendarのようなコネクタは、上流のIDプロバイダーがclaude.aiの登録済みリダイレクトURLしか受け付けないため、claude mcp login や /mcp からのローカルOAuthに対応していません。is Anthropic-hosted and doesn't support local OAuth というエラーが出たら、claude mcp remove でローカルの登録を外し、claude.ai/customize/connectors 側で接続し直します。接続が完了すると、そのコネクタはClaude Code側に自動的に反映されます。
クラウドセッションでコネクタのログイン画面が出ない: クラウド上で動くセッションに配信されるコネクタは、claude.aiで付与した認可をプロキシ経由でそのまま使うため、Claude Code側でサインインフローを実行しません。認証をやり直したいときは、セッション側ではなくclaude.aiのconnectors設定から再接続します。
claude mcp login を実行したのにサーバーがまだ「認証が必要」のまま: 対象サーバー名が claude mcp list の表示と完全一致しているか確認します。同名サーバーを複数スコープ(ローカル / プロジェクト / ユーザー)に定義していると、OAuthのサインインはエンドポイントごとに個別管理されるため、想定と違うスコープの定義に対してログインしてしまっている場合があります。原因の切り分けには claude mcp get <name> が有効で、接続失敗時は Issue: の行にHTTPステータスやサーバー側のエラー文言が表示されます(HTTPステータスの表示はv2.1.219以降です。認証情報らしき文字列は自動で伏せ字化されます)。
非対話モード(claude -p)でMCPサーバーの認証を求められる: /mcp パネルが存在しない非対話実行では、その場でOAuthフローを完了できません。v2.1.196以降は、未認証のサーバーがある場合にツールが使えない旨がClaudeに伝わるようになったため、少なくとも「どのサーバーが未認証か」は応答から分かります。認証自体は別の対話セッションで /mcp か claude mcp login <name> を実行して先に済ませておく必要があります。
まとめ
claude mcp login <name> と claude mcp logout <name> は、MCPサーバーのOAuth認証をセッションの外から操作するための一対のコマンドです(Claude Code v2.1.186以降)。ブラウザが開ける通常の開発環境では /mcp パネルの方が手軽ですが、SSH越しの作業やシェルから直接認証したい場面ではCLI経由が有効です。ただし対話的な貼り付け操作が要る都合上、完全な無人自動化はできません。Microsoft 365のようなAnthropicホスト型コネクタは対象外で、claude.ai側での再接続が唯一の手段になる点も覚えておくと、エラーに遭遇したときに迷わずに済みます。
参照した一次ソース
この記事の記述は、次の一次ソースと照合しています。更新時に参照先が変わった場合は一覧も更新します。