EKO3-2: MCP projektů s OAuth přes OnPass
Agenti (Elaris, OnChat, Claude) se k MCP serveru projektu připojí přihlášením přes OnPass, ne statickým klíčem.
Autorizační server (OnPass, hosting McpAuthorization, wave 13) už umí RFC 8414, RFC 8707 resource, DCR s initial tokenem
a introspekci. Tento kit doplňuje stranu resource serveru v projektu:
1. Metadata (RFC 9728): GET /.well-known/oauth-protected-resource/mcp vrací
ProtectedResourceMetadata::document('https://<projekt>/mcp', 'https://onpass.cz', [scopy]).
2. Ověření (BearerGuard): každý požadavek na /mcp → authenticate($request->header('Authorization'), $tenant).
- bez tokenu → 401 a
WWW-Authenticate: Bearer resource_metadata="…"(klient si najde OnPass a přihlásí uživatele); - jiný
aud(token pro jiný MCP server), cizíiss, prošlý, neaktivní, refresh token → 401invalid_token; - chybí scope → 403
insufficient_scope.
Výsledné McpContext (sub, tenant, scopy) se předá McpServer::handle(), a Tool se scope se tak zpřístupní jen s udělením.
3. Introspekce (Introspector): RFC 7662 vlastním důvěrným klientem MCP serveru (jen ten smí introspektovat tokeny svého
resource). Jakákoli chyba = neaktivní (fail closed). Tajemství klienta přes SecretResolver projektu, nikdy v repozitáři.
Registrace resource v OnPass: staff založí řádek onhost_id_mcp_resources (URI, scopy, serverový klient). Za příznakem
onhost.identity.oidc.mcp.enabled (výchozí off) v OnPass a za vlastním příznakem projektu (např. features.mcp_oauth).
Katalog brány (list_services) vrací links.mcp služeb; klient z něj zjistí metadata podle bodu 1.