目的
v0.10.3 (#184) でリトライ無限ループは修正済みだが、セッション再開時にブラウザOAuth認可ページが毎回開く問題が残っている。
トークンリフレッシュが失敗→performOAuthFlow()にフォールバック→ブラウザが開く、という流れだが、catch {} がエラーを完全に飲み込んでいるため原因が不明。
前提
@cloudflare/workers-oauth-provider v0.3.x はリフレッシュトークンに対応済み
- Worker側のOAuthProvider設定:
accessTokenTTL: 3600(1時間)、refreshTokenTTL: 30日
- v0.10.3で
refresh_token || "" → null に修正済み(Worker側)
- ローカルMCPの
getAccessToken() 内の catch {} がリフレッシュ失敗理由を隠蔽している
- ローカルトークンファイル
~/.github-webhook-mcp/oauth-tokens.json にはrefresh_tokenが保存されている
制約
- リフレッシュ失敗時のエラーをstderrにログ出力すること
- トークン期限切れ後ではなく期限切れ前にプロアクティブにリフレッシュすること(60秒→5分バッファ)
- mcp-server/server/index.js と local-mcp/src/index.ts の両方を修正すること
- 既存のOAuthフロー・トークン保存形式を変更しないこと
対象ファイル
mcp-server/server/index.js — getAccessToken, refreshAccessToken
local-mcp/src/index.ts — getAccessToken, refreshAccessToken
目的
v0.10.3 (#184) でリトライ無限ループは修正済みだが、セッション再開時にブラウザOAuth認可ページが毎回開く問題が残っている。
トークンリフレッシュが失敗→
performOAuthFlow()にフォールバック→ブラウザが開く、という流れだが、catch {}がエラーを完全に飲み込んでいるため原因が不明。前提
@cloudflare/workers-oauth-providerv0.3.x はリフレッシュトークンに対応済みaccessTokenTTL: 3600(1時間)、refreshTokenTTL: 30日refresh_token || ""→nullに修正済み(Worker側)getAccessToken()内のcatch {}がリフレッシュ失敗理由を隠蔽している~/.github-webhook-mcp/oauth-tokens.jsonにはrefresh_tokenが保存されている制約
対象ファイル
mcp-server/server/index.js— getAccessToken, refreshAccessTokenlocal-mcp/src/index.ts— getAccessToken, refreshAccessToken