Skip to content

fix(filesystem): only apply MCP roots when no CLI directories are provided#4014

Open
Will-hxw wants to merge 4 commits intomodelcontextprotocol:mainfrom
Will-hxw:fix/3929-roots-override
Open

fix(filesystem): only apply MCP roots when no CLI directories are provided#4014
Will-hxw wants to merge 4 commits intomodelcontextprotocol:mainfrom
Will-hxw:fix/3929-roots-override

Conversation

@Will-hxw
Copy link
Copy Markdown

Summary

  • Only call updateAllowedDirectoriesFromRoots when allowedDirectories.length === 0, so CLI arguments take precedence over MCP roots

Why

Issue #3929: When clientCapabilities.roots is true, the server unconditionally replaces CLI-specified directories with client roots, preventing the server from being limited to directories outside the client project root.

Validation

  • Code review passed
  • Branch pushed to fork

Will-hxw and others added 4 commits April 21, 2026 04:35
The resourceType argument in the resource-prompt was missing a
description of allowed values. Added "must be 'Text' or 'Blob'" to
help automated callers understand the expected input format.

Issue: modelcontextprotocol#3985

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Prevent leaking all process.env variables by requiring a specific key.
This addresses a security concern where the tool was returning the
entire environment without any parameter or filtering.

Issue: modelcontextprotocol#3986

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
When a client supports MCP roots, the server was unconditionally
replacing CLI-provided allowed directories with the client's roots.
This made it impossible to scope the server to a directory outside
the client's project root.

Now CLI arguments take precedence - only fetch and apply MCP roots
when no CLI directories were provided.

Fixes: modelcontextprotocol#3929

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The roots/list_changed handler was unconditionally replacing allowedDirectories with MCP roots, even when CLI directories were set. Adding the same guard as oninitialized to prevent MCP roots from overriding CLI directories when both are present.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant