docs: quickstart filesystem config should document that argless form delegates scope to client roots
Nobody has claimed this yet.
Assessment
- Difficulty
- 1/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 84/100
- Issue type
- Documentation
- Clarity
- Clearly specified
- Activity status
- Quiet
- Tech stack
- typescript
- Domain
- documentation
Research direction
Update the quickstart .mcp.json filesystem example with an explicit project path, then add a note explaining that the argless form delegates scope to client-provided roots at runtime. Verify the documentation distinguishes client-determined access from an auditable, config-defined boundary; no behavior change is needed.
Written by the indexing model from the issue text.
Description
Finding
When @modelcontextprotocol/server-filesystem is launched without path arguments, as in the quickstart .mcp.json example, it does not default to broad filesystem access. I verified this in v2026.1.14:
path-validation.jslines 16-18: returnsfalsefor all paths whenallowedDirectoriesis empty (fail-closed)index.jslines 563-585: the server starts, requests roots from the MCP client via the roots protocol, and throws on init if neither CLI args nor client roots are provided
The fail-closed behavior is correct and intentional. This is not a security bug report.
The legibility gap
The quickstart ships this config:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem"]
}
}
}
This config is not self-contained: the actual filesystem access boundary is invisible at config-review time. The scope is whatever roots the MCP client sends at runtime, which varies by client (Claude Desktop, Cursor, VS Code, etc.) and is not recorded in the committed file.
In practice: people copy this from the quickstart, commit it, and an auditor reviewing the repository cannot determine what filesystem paths the agent can actually access. Two different clients connecting to the same config get different scopes. Neither is visible in the file.
The ask
No behavior change needed. Two small documentation additions would close the gap:
1. Show an explicit path arg in the quickstart example:
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/your/project"]
2. Add a note that the argless form is valid but delegates scope to client roots at runtime, so the access boundary is client-determined rather than config-defined. Developers who want an auditable, self-contained config should use explicit path args.
Happy to open a PR for the docs change if that is easier.
- Dominant language
- TypeScript
- Stars
- 90.5k
- Forks
- 11.7k
- Avg merge
- 2d 2h
- Merged PRs (30d)
- 5
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from modelcontextprotocol/servers
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
modelcontextprotocol/servers#4830 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
modelcontextprotocol/servers#4829 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
modelcontextprotocol/servers#4812 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
modelcontextprotocol/servers#4804 · 1 comment ·
-
README gate confirmation command can be used by any commenter, bypassing the "readme: pending" gate Open
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
modelcontextprotocol/servers#4796 ·
All issues in modelcontextprotocol/servers
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Eynzof/Hermes-CN-Desktop#610 ·
-
bug clawsweeper:linked-pr-open clawsweeper:needs-live-repro clawsweeper:no-new-fix-pr impact:message-loss issue-rating: 🐚 platinum hermit P2 regression
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
calcite-components needs triage refactor
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
Esri/calcite-design-system#15203 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
danielmiessler/LifeOS#2218 ·