Skip to content

原文(日本語に翻訳)

MCP headersHelper 認証を改善: ツール呼び出しが401/403を返した場合、ヘルパーが自動的に再実行されて再接続する。

原文(英語)

Improved MCP headersHelper auth: the helper now re-runs and reconnects automatically when a tool call returns 401/403

概要

MCPサーバーの headersHelper 認証機能が強化されました。ツール呼び出し中に認証エラー(HTTP 401/403)が発生した場合、headersHelper が自動的に再実行されてトークンを更新し、MCPサーバーへの再接続を試みるようになります。OAuth等のトークンが期限切れになった場合でも、ユーザーが手動で再起動する必要がなくなります。

基本的な使い方

headersHelper を使用するMCPサーバーの設定例:

json
{
  "mcpServers": {
    "my-api": {
      "command": "npx",
      "args": ["-y", "@company/mcp-server"],
      "headersHelper": {
        "command": "get-auth-token",
        "args": ["--format", "bearer"]
      }
    }
  }
}

この設定で、my-api サーバーのツール呼び出しが401/403を返すと:

  1. headersHelper コマンドが自動的に再実行される
  2. 新しい認証ヘッダーを取得
  3. MCPサーバーへ再接続
  4. 元のツール呼び出しをリトライ

実践例

OAuthトークンの自動更新

json
{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "headersHelper": {
        "command": "gh",
        "args": ["auth", "token"]
      }
    }
  }
}

GitHubのトークンが期限切れになっても、gh auth token が再実行されて新しいトークンを取得します。

カスタム認証スクリプトの使用

bash
#!/bin/bash
# get-token.sh - 認証トークンを取得するスクリプト
curl -s -X POST https://auth.example.com/token \
  -d "client_id=$CLIENT_ID" \
  -d "client_secret=$CLIENT_SECRET" \
  | jq -r '.access_token'
json
{
  "mcpServers": {
    "internal-api": {
      "command": "npx",
      "args": ["-y", "@company/mcp-internal"],
      "headersHelper": {
        "command": "./get-token.sh"
      }
    }
  }
}

企業SSO環境での活用

json
{
  "mcpServers": {
    "enterprise-tool": {
      "command": "mcp-enterprise-server",
      "headersHelper": {
        "command": "az",
        "args": ["account", "get-access-token", "--output", "tsv", "--query", "accessToken"]
      }
    }
  }
}

Azure ADのアクセストークンが期限切れになっても自動更新されます。

注意点

  • headersHelper は401または403レスポンスを受け取った場合のみ再実行されます。その他のエラーでは再実行されません
  • 再認証の試行回数には上限があります(無限ループ防止)
  • headersHelper コマンドが失敗した場合、エラーが報告されてツール呼び出しは失敗します
  • ネットワーク問題による403(Forbidden)とアクセス権限による403(Permission Denied)は区別されない場合があります

関連情報