Skip to content

原文(日本語に翻訳)

リフレッシュトークン期限切れ後にOAuthの再認証を促さない問題を修正。HTTP 200でエラーを返すOAuthサーバー(例: Slack)に対して、再認証プロンプトが表示されなかった

原文(英語)

Fixed MCP OAuth refresh never prompting for re-auth after the refresh token expires, for OAuth servers that return errors with HTTP 200 (e.g. Slack)

概要

MCP OAuth認証のリフレッシュトークンが期限切れになった際に、一部のOAuthサーバー(SlackなどHTTP 200でエラーを返すサーバー)では再認証のプロンプトが表示されない問題が修正されました。これにより、リフレッシュトークンが失効しても認証フローが適切に再起動され、Slack等のMCPサーバーへの接続を維持できるようになります。

基本的な使い方

このバグ修正はユーザー操作不要で自動的に適用されます。Slack等のMCPサーバーでOAuth認証が失効した際に、適切な再認証プロンプトが表示されます。

bash
# Slack MCP サーバーを使用している場合
claude mcp list  # 接続状態を確認

実践例

Slack MCPサーバーの認証状態確認

bash
# Slack MCP の設定状態を確認
claude mcp get slack-server

# 認証が失効した際の再認証(修正後は自動でプロンプトが表示)
claude mcp auth slack-server

HTTP 200エラーを返すOAuthサーバーへの対応

SlackなどのOAuth実装では、トークンエラーをHTTP 200で返す場合があります:

json
// Slack OAuth エラーレスポンスの例(HTTP 200 で返される)
{
  "ok": false,
  "error": "token_expired"
}

修正前はこのようなレスポンスが成功として扱われ、再認証プロンプトが表示されませんでした。修正後は、レスポンスボディのエラーを適切に検出して再認証を促します。

MCP認証のトラブルシューティング

bash
# 認証状態をリセットして再設定
claude mcp remove slack-server

# 再設定(OAuth認証フロー全体をやり直し)
claude mcp add slack-server \
  --oauth \
  --url https://slack.example.com/mcp

# 認証ログを確認
claude --debug mcp auth slack-server

複数のMCPサーバーの認証管理

bash
# すべてのMCPサーバーの状態確認
claude mcp list

# 期限切れのトークンを一括更新(各サーバーごとに再認証)
for server in $(claude mcp list --json | jq -r '.[].name'); do
  echo "Checking $server..."
  claude mcp auth $server --check
done

注意点

  • この問題はSlack、その他HTTP 200でエラーを返すOAuthサーバーに影響していました
  • バージョン2.1.74以降で修正されています
  • リフレッシュトークンの有効期限はサービスによって異なります(Slackは一般的に数週間)
  • 長期間使用していないMCP接続は、再認証が必要になる場合があります
  • 企業環境ではSSO/OAuth設定がカスタマイズされている場合があるため、IT管理者に確認してください

関連情報