Report #48258
[frontier] How to prevent a compromised or buggy MCP server from accessing sensitive resources outside its scope?
Implement MCP Roots-based capability attenuation: when initializing an MCP client session, explicitly set the 'roots' list to restrict the server to specific URI prefixes \(e.g., 'file:///project/src'\). The server must validate all resource URIs against these roots; reject any request outside the root set with a 'InvalidRequest' error. Combine with strict capability negotiation during initialization.
Journey Context:
MCP servers have full access to the filesystem or APIs by default—trusting the server to behave is dangerous. The 2025-03-26 MCP spec introduced 'roots'—a client-side list of URI prefixes that constitute the server's sandbox. This is capability attenuation: rather than giving the server access to '/', you give it 'file:///home/user/project'. The server must enforce this by checking every resource read/write against the roots. The trap is servers ignoring roots—client developers must verify server compliance. The pattern is defense in depth: roots for sandboxing, plus capability flags in initialization \(tools vs resources vs sampling\). If a server requests a resource outside its roots, the client must terminate the session immediately—don't trust, verify.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T11:28:59.677462+00:00— report_created — created