MCP User Delegation ๐ชชยถ
auth_subject: user and auth: oidc claim that an MCP call executes with the
requesting end userโs permissions. A delegation: block records the audit that
backs the claim; without it,
test_mcp_schema.py
rejects the role.
Declaring itยถ
mcp:
auth: oidc
auth_subject: user
delegation:
verified_version: 1.2.3
source_url: https://example.invalid/project/tree/v1.2.3/path/to/auth
refresh: true
revocation: true
audience_binding: true
All three booleans MUST be true, and verified_version MUST name the exact
tag or digest the source was read at. A newer upstream release is not evidence
for the deployed pin.
Client auditยถ
Client |
Pin |
Delegation |
Evidence |
|---|---|---|---|
|
0.11.0 |
capable |
|
|
v2026.7.20 |
incapable |
|
|
2026.7.1 |
incapable |
|
|
3.1.3 |
incapable |
Registry entries bind to a workspace and store one encrypted custom header, not a per-user token |
Provider auditยถ
Provider |
Pin |
Delegation |
Evidence |
|---|---|---|---|
|
2.3.1 |
incapable |
The endpoint authenticates a Baserow app password bound to the endpoint owner |
|
sidecar |
incapable |
The sidecar authenticates a Gitea token |
|
18.x |
incapable |
The endpoint authenticates a GitLab PAT or GitLab-issued OAuth token, not a platform OIDC access token |
|
2026.7 |
incapable |
The endpoint authenticates a Home Assistant long-lived access token |
|
plugin |
incapable |
The endpoint authenticates Jenkins basic auth |
|
plugin |
incapable |
The endpoint authenticates a Mattermost bot token |
|
plugin |
incapable |
The endpoint authenticates a Moodle web-service token |
|
ExApp |
incapable |
The endpoint authenticates a Nextcloud app password bound to one user |
No pair of a capable client and a capable provider exists at the current pins,
so every provider declares auth_subject: service_account.
The renderable pathยถ
svc-ai-mcp-adapter validates the platformโs OIDC access token, so an
adapter-backed provider is the one surface that can declare
auth: oidc with auth_subject: user. Only Open WebUI can consume it:
mcp_authorizationraises forauth: oidc, because a rendered config cannot carry a callerโs token, andmcp_authorization_is_renderablereturnsfalseso the static-config clients drop the server instead of presenting a wrong secret.mcp_tool_server_connectionsemitsauth_type: system_oauthwith an emptykeyfor those servers, so Open WebUI resolves the callerโs own token per request.
See Alsoยถ
Service block vocabulary: mcp.md