原文(日本語に翻訳)
ヘッドレス/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 サーバーを使用していない場合、この修正の影響を受けません