Claude Codeの公式Changelogをリリースから最速で翻訳・解説しています。
v2.1.231 は修正 1 件のみ。事前登録済みの OAuth クライアントを使う MCP サーバー、代表例は Slack で、サインインが redirect URI の不一致で落ちていた問題が直りました。コールバックの受け口は http://localhost:<port>/callback の形なので、この <port> が毎回変われば事前登録した URI と当然合いません。
今回の注目ポイント
- 事前登録 OAuth クライアントのサインインが通る redirect URI の不一致で弾かれていた MCP サーバー (Slack など) にログインできるように (v2.1.231)
Slack のログインが redirect URI の不一致で止まっていた
対象読者: --transport http で Slack など OAuth が要る MCP サーバーを繋いでいる人
認可コードの受け取り口は、Claude Code がその場でローカルに立てるリスナーです。 リスナーの URL は http://localhost:<port>/callback で、<port> は空きポートから選ばれます。ブラウザから /callback 以外を叩いたときに返る文言がこれ。末尾には実際の redirect URI が入ります。
This is the Claude Code MCP OAuth callback listener. It only handles /callback. If your OAuth provider redirected here, the registered redirect_uri must be http://localhost:/callback.
Dynamic Client Registration (DCR) に対応した MCP サーバーなら、クライアント登録のたびに redirect URI を送り直せるので、ポートが変わっても問題になりません。詰まるのは DCR 非対応で、client_id を事前に発行しておくタイプ。Slack がこれにあたります。事前登録した redirect URI は固定なのに、Claude Code 側のポートが認証のたびに動くと、認可サーバーは不一致として弾く。
2.1.231 のバイナリを覗くと、リダイレクトポートの選択ログに (from config) と (reusing registered port) の 2 経路が入っています。設定で固定していればそのポート、していなければ前回のクライアント登録で使ったポートを引き継ぐ。
ポートを固定して登録する
claude mcp add --transport http slack https://example.com/mcp \
--client-id <発行された client_id> \
--client-secret \
--callback-port 51999
--callback-port のヘルプは「Fixed port for OAuth callback (for servers requiring pre-registered redirect URIs)」。名指しされている pre-registered redirect URIs が、そのまま Slack のケースにあたります。指定できる範囲は 1〜65535 で、外れるとエラーになります。--client-secret はプロンプト入力式。MCP_CLIENT_SECRET 環境変数でも渡せます。
書き込まれる設定は oauth オブジェクトです。
{
"type": "http",
"url": "https://example.com/mcp",
"oauth": {
"clientId": "abc123",
"callbackPort": 51999
}
}
入ったかどうかの確認は claude mcp get <名前>。
OAuth: client_id configured, callback_port 51999
--client-id / --client-secret / --callback-port は HTTP・SSE トランスポート専用です。stdio サーバーに付けると Warning: --client-id, --client-secret, --callback-port, and --xaa are only supported for HTTP/SSE transports and will be ignored for stdio. が出て、設定には保存されません。
更新しても通らないときに切る手
古い認可情報が残っていると、更新後もサインインが通らない。claude mcp logout <名前> で保存済みの OAuth 認証情報を消してから claude mcp login <名前> をやり直します。SSH やヘッドレスなら --no-browser を付けると認可 URL が標準出力に出て、リダイレクト先の URL を貼り戻す形になります。
固定したポートが他プロセスに取られていると、そもそもリスナーが立ちません。Claude Code は EADDRINUSE を検知すると調べ方まで出してくれます。macOS と Linux は lsof -ti:<port> -sTCP:LISTEN、Windows は netstat -ano | findstr :<port>。
変更点の一覧
| バージョン | カテゴリ | 変更点 | 概要 |
|---|---|---|---|
| v2.1.231 | 修正 | MCP OAuth のサインイン | 事前登録済み OAuth クライアントを使うサーバー (Slack など) で、redirect URI の不一致により失敗していた |
原文は Fixed MCP OAuth sign-in failing with a redirect URI mismatch for servers that use a pre-registered OAuth client, such as Slack の 1 行のみ。
まとめ
v2.1.231 の変更は MCP OAuth の redirect URI 不一致の修正 1 件。Slack のように client_id を事前発行するサーバーを繋いでいるなら、更新後に claude mcp logout と claude mcp login で入り直せば通ります。--callback-port で固定済みの設定は、そのまま残して問題ありません。