Skip to content

原文(日本語に翻訳)

/mcp メニューが headersHelper で設定されたMCPサーバーに対してOAuth専用のアクションを提供していた問題を修正しました。代わりに、ヘルパースクリプトを再呼び出しするために「Reconnect」が提供されるようになりました。

原文(英語)

Fixed the /mcp menu offering OAuth-specific actions for MCP servers configured with headersHelper; Reconnect is now offered instead to re-invoke the helper script

概要

headersHelper を使用してカスタムヘッダーを提供するように設定されたMCPサーバーに対して、/mcp メニューがOAuth認証専用のアクション(ログイン、トークン更新など)を誤って表示していました。headersHelper はOAuthとは異なる認証方式であるため、これらのアクションは意味を持ちません。このアップデートにより、headersHelper で設定されたMCPサーバーには「Reconnect」アクションが表示されるようになりました。

基本的な使い方

bash
# MCPメニューを開く
/mcp

# headersHelperで設定されたサーバーの場合:
# 修正前: OAuth専用アクションが表示される
#   - [Login with OAuth]
#   - [Refresh Token]
# 修正後: 適切なアクションが表示される
#   - [Reconnect]  ← headersHelperスクリプトを再呼び出し

実践例

headersHelperを使ったMCPサーバー設定

json
// settings.json
{
  "mcpServers": {
    "my-api-server": {
      "command": "npx",
      "args": ["my-mcp-server"],
      "headersHelper": "/usr/local/bin/get-api-token.sh"
    }
  }
}
bash
#!/usr/local/bin/get-api-token.sh
# headersHelperスクリプトの例
# このスクリプトは認証ヘッダーをJSON形式で出力する

# APIトークンを取得(例: vault、環境変数、ファイルなど)
TOKEN=$(cat ~/.config/my-app/token)

# ヘッダーをJSON形式で出力
echo "{
  \"Authorization\": \"Bearer $TOKEN\",
  \"X-API-Version\": \"2026-01-01\"
}"

Reconnectアクションの使い方

bash
# MCPサーバーの接続を更新
/mcp

# 「my-api-server」を選択
# [Reconnect] を選択

# headersHelperスクリプトが再実行される:
# 1. /usr/local/bin/get-api-token.sh が実行される
# 2. 新しいトークンでヘッダーが更新される
# 3. MCPサーバーに再接続される

トークン期限切れ時の対処

bash
# APIトークンが期限切れになった場合

# 症状: MCPツールの呼び出しが401エラーで失敗
# Error: 401 Unauthorized - Token expired

# 対処法: MCPメニューからReconnect
/mcp
# → my-api-server を選択
# → [Reconnect] を実行
# headersHelperが新しいトークンを取得して再接続

# トークンを自動更新するheadersHelperの例
cat /usr/local/bin/get-api-token.sh
bash
#!/bin/bash
# 自動トークン更新付きheadersHelperスクリプト

TOKEN_FILE="$HOME/.config/my-app/token"
TOKEN_EXPIRY_FILE="$HOME/.config/my-app/token-expiry"

# トークンの有効期限を確認
if [ -f "$TOKEN_EXPIRY_FILE" ]; then
  expiry=$(cat "$TOKEN_EXPIRY_FILE")
  now=$(date +%s)
  
  if [ "$now" -gt "$expiry" ]; then
    # トークンを更新
    echo "トークンを更新中..." >&2
    new_token=$(curl -s -X POST https://api.example.com/token \
      -d "client_id=$CLIENT_ID&client_secret=$CLIENT_SECRET")
    
    echo "$new_token" | jq -r '.access_token' > "$TOKEN_FILE"
    echo "$new_token" | jq -r '.expires_at' > "$TOKEN_EXPIRY_FILE"
  fi
fi

TOKEN=$(cat "$TOKEN_FILE")
echo "{\"Authorization\": \"Bearer $TOKEN\"}"

MCPサーバー設定のデバッグ

bash
# headersHelperの動作確認
/usr/local/bin/get-api-token.sh
# 出力: {"Authorization": "Bearer eyJhbGc..."}

# MCPサーバーの状態確認
/mcp
# サーバー一覧が表示される
# headersHelperで設定されたサーバーには [Reconnect] が表示される

# 接続テスト
claude "MCPサーバーのツール一覧を教えて"

注意点

  • headersHelper と OAuth 認証は異なる仕組みです。headersHelper はスクリプトでヘッダーを動的に生成します
  • Reconnect アクションは headersHelper スクリプトを再実行して新しいヘッダーを取得します
  • OAuth で認証するサーバーには引き続き OAuth 関連のアクションが表示されます
  • headersHelper スクリプトは JSON 形式でヘッダーを標準出力に出力する必要があります
  • スクリプトのパスは絶対パスを使用することを推奨します

関連情報