Skip to content

Migrate the MCP plan-path sandbox off the deprecated Roots feature (SEP-2577) #514

Description

@erikdarlingdata

The MCP specification deprecated the Roots feature as of spec version 2026-07-28 (SEP-2577), and the ModelContextProtocol C# SDK now marks its Roots types obsolete (MCP9005 warnings).

Roots is still the contract our stdio MCP server's file sandbox enforces: McpPlanPathPolicy (src/PlanViewer.Cli/ReplSurface/McpPlanPathPolicy.cs) resolves the client's advertised roots via Repl.Mcp's IMcpClientRoots and denies plan_open outside them (including symlink escapes and empty-roots clients). McpSmokeTests.cs is the regression coverage for that guard, and its client-side Roots setup is what trips MCP9005 — suppressed there with a comment referencing this issue as of the 2026-09 maintenance pass.

What eventually needs to happen:

  • Decide the replacement mechanism for scoping which plan files the server may open once Roots is removed from the spec/SDK (whatever SEP-2577 points to, or an explicit allowlist argument at serve time).
  • This also depends on Repl.Mcp: the IMcpClientRoots abstraction comes from the Repl packages, so their migration path matters.
  • When migrated, remove the pragma warning disable MCP9005 from tests/PlanViewer.Core.Tests/McpSmokeTests.cs and re-point the smoke tests at the new mechanism.

No urgency until the SDK actually removes the feature, but a future ModelContextProtocol bump may force the decision. Found during the 2026-09 quarterly maintenance pass.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions