Google Workspace MCP OAuth fails on accounts.google.com trailing-slash issuer mismatch
まだ誰も着手していません。
- 主要言語
- Shell
- スター
- 11.2k
- フォーク
- 1.9k
- 平均マージ
- 14時間 16分
- マージ済み PR(30日)
- 6
説明
Describe the bug
Native HTTP MCP authentication fails for Google's official Workspace MCP
endpoints before the browser authorization flow begins.
The protected-resource metadata advertises this authorization server:
https://accounts.google.com/
Google's authorization-server/OpenID metadata advertises this issuer:
https://accounts.google.com
These URLs differ only by the trailing slash on the origin root, but Copilot CLI
compares them literally and rejects the server:
OAuth authentication failed for google-calendar: MCPOAuthError:
Incompatible authorization server: authorization server advertised an issuer
that does not match the URL its metadata was discovered from (RFC 8414 §3.3);
refusing to connect
This affects all seven currently documented Google Workspace MCP endpoints:
- Calendar:
https://calendarmcp.googleapis.com/mcp/v1 - Gmail:
https://gmailmcp.googleapis.com/mcp/v1 - Drive:
https://drivemcp.googleapis.com/mcp/v1 - People:
https://people.googleapis.com/mcp/v1 - Docs:
https://docsmcp.googleapis.com/mcp/v1 - Slides:
https://slidesmcp.googleapis.com/mcp/v1 - Sheets:
https://sheetsmcp.googleapis.com/mcp/v1
Each endpoint's protected-resource metadata currently returns:
{
"resource": "<the MCP endpoint>",
"authorization_servers": ["https://accounts.google.com/"]
}
Google's public metadata returns:
GET https://accounts.google.com/.well-known/openid-configuration
{
"issuer": "https://accounts.google.com"
}
Affected version
GitHub Copilot CLI 1.0.81-10
Steps to reproduce the behavior
-
Register the localhost OAuth redirect URI required by Google and configure
Calendar as a native HTTP MCP server (credentials redacted):{ "mcpServers": { "google-calendar": { "type": "http", "url": "https://calendarmcp.googleapis.com/mcp/v1", "oauthClientId": "<redacted>", "auth": { "clientSecret": "<redacted>", "redirectPort": 8080 } } } } -
Start Copilot CLI.
-
Run
/mcp auth google-calendar. -
Authentication fails with the RFC 8414 issuer-mismatch error above. The
browser consent flow never starts.
The same behavior occurs with the other Google Workspace MCP endpoints.
Expected behavior
Copilot CLI should be able to authenticate with Google's official Workspace MCP
endpoints.
Ideally, the implementation would preserve strict issuer validation while
canonicalizing only semantically equivalent origin-root URLs before selecting
the discovery issuer (or otherwise handling the empty-path/trailing-slash
equivalence safely). If that is not acceptable under the CLI's RFC 8414
validation policy, the error should identify the two compared values and
provide an actionable, narrowly scoped compatibility option.
Additional context
- OS: macOS 26.6
- Architecture: Apple Silicon (
arm64) - Terminal: iTerm2
- Shell: zsh
A pinned mcp-remote@0.2.4 stdio proxy using the same endpoint, OAuth client,
redirect URI, and Google account completes the OAuth flow successfully and can
call the Google tools. This confirms the client registration, consent, token
exchange, scopes, and MCP endpoints are functional; the failure is specific to
Copilot CLI's native HTTP MCP OAuth discovery/issuer validation.
Related reports:
- #4480 covers an Atlassian hostname mismatch.
- #4439 covers malformed GitLab protected-resource metadata and fallback
discovery.
This Google case is distinct: the protected-resource metadata uses the
RFC 9728 resource string and authorization_servers array correctly, and the
issuer differs only by a trailing slash at the authorization server's root.
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
まず、文書化された Calendar MCP endpoint を使って /mcp auth google-calendar を再現し、ネイティブの HTTP MCP OAuth discovery および issuer 検証パスを調査します。保護されたリソースの authorization server URL と検出された issuer を比較し、そのうえで、一般的な issuer 検証を弱めることなく Google の endpoints に対する認証が成功することを確認するか、互換性の失敗があれば両方の値を明確に報告することを確認します。
索引モデルが issue の本文から書いたものです。
評価
- 領域
- api, authentication, cli
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 活発
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 48/100