Skip to content

原文(日本語に翻訳)

ヘッドレス/SDK モードで認証が必要な MCP サーバーがモデルに認証スタブツールを公開していた問題を修正しました。

原文(英語)

Fixed MCP servers requiring authentication exposing auth-stub tools to the model in headless/SDK mode.

概要

認証が必要な MCP(Model Context Protocol)サーバーを使用する際、ヘッドレスモード(-p)や SDK モードで実行した場合に、認証フロー用のスタブツール(ダミーツール)が誤ってモデルに公開されるバグが修正されました。これにより、モデルが実際には機能しない認証スタブツールを使用しようとして予期しない動作が発生していました。

基本的な使い方

この修正は自動的に適用されます。ヘッドレスモードや SDK での MCP 使用時に:

bash
# ヘッドレスモードでの MCP 使用
claude -p "MCP ツールを使用してタスクを実行してください"
# 修正後: 認証済みツールのみがモデルに公開される
# 修正前: 認証スタブツールも誤って公開されていた

実践例

影響を受けていたシナリオ

bash
# 認証が必要な MCP サーバーの設定例
# .claude/settings.json
{
  "mcpServers": {
    "my-secure-server": {
      "command": "node",
      "args": ["./mcp-server.js"],
      "auth": {
        "type": "oauth"
      }
    }
  }
}

# ヘッドレスモードで実行
claude -p "データを取得してください"
# 修正前: モデルは「認証するにはこのスタブツールを使用してください」というツールを見てしまっていた
# 修正後: ヘッドレスモードでは認証UIがないため、スタブツールは公開されない

SDK での使用

python
# Anthropic SDK での Claude Code 使用例(擬似コード)
import anthropic
client = anthropic.Anthropic()

# 認証付き MCP サーバーを使用するセッション
# 修正後: 認証スタブツールがモデルに見えなくなる
# → モデルが無効なスタブツールを呼び出そうとする問題が解消

注意点

  • この問題は ヘッドレスモード-p フラグ)と SDK モード でのみ発生していました
  • インタラクティブモードでは認証 UI が表示されるため、この問題は発生しませんでした
  • セキュリティ上の観点から、認証できない環境ではスタブツールはモデルに公開すべきでないという修正です
  • MCP サーバーを使用していない場合、この修正の影響を受けません

関連情報