Parent epic: #2527
User Story
As an MCP App developer, I want AppBridge calls to tools/resources to be authorized through the same server and session context so that apps cannot cross boundaries or bypass RBAC.
One-Week Deliverable
Implement the server-side AppBridge authorization/routing path for app-originated JSON-RPC calls under generic extension governance.
Acceptance Criteria
- UI view sessions bind app calls to a specific server, UI resource, caller, token scope, team scope, and MCP session.
- AppBridge
tools/call and resources/read enforce same-server constraints.
- RBAC, token scoping, extension enabled state, server visibility, and tool/resource visibility are checked before execution.
- App-originated calls run through plugin, sanitizer, audit, and observability hooks.
- Cross-server app calls are denied and audited.
- Expired, missing, forged, disabled-extension, wrong-team, and insufficient-permission UI sessions are denied.
- Tests cover allowed same-server calls, cross-server deny, expired session deny, disabled extension deny, wrong-team deny, and insufficient-permission deny.
Demo
From a simulated app session, call an allowed same-server tool successfully, then attempt a cross-server call and show it denied with an audit event.
Parent epic: #2527
User Story
As an MCP App developer, I want AppBridge calls to tools/resources to be authorized through the same server and session context so that apps cannot cross boundaries or bypass RBAC.
One-Week Deliverable
Implement the server-side AppBridge authorization/routing path for app-originated JSON-RPC calls under generic extension governance.
Acceptance Criteria
tools/callandresources/readenforce same-server constraints.Demo
From a simulated app session, call an allowed same-server tool successfully, then attempt a cross-server call and show it denied with an audit event.