modelcontextprotocol / modelcontextprotocol/servers
Claude Desktop Filesystem extension ships outdated dist with root path normalization bug
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 90.5k
- Forks
- 11.7k
- Avg merge
- 2d 2h
- Merged PRs (30d)
- 5
Description
Bug
The Filesystem MCP server extension bundled with Claude Desktop (macOS) ships a compiled dist/path-utils.js that contains a bug already fixed in the source.
The bug
normalizePath("/") returns "" (empty string), causing the server to crash on startup with:
Error accessing directory : Error: ENOENT: no such file or directory, stat ''
Root cause
The installed extension (version 2025.8.21) has the old regex in dist/path-utils.js:
return p.replace(/\/+/g, '/').replace(/\/+$/, '');
This strips the trailing slash from /, producing an empty string.
Already fixed in source
The current TypeScript source (src/filesystem/path-utils.ts) uses a negative lookbehind that correctly preserves /:
return p.replace(/\/+/g, '/').replace(/(?<!^)\/$/, '');
There are even existing tests for this case:
expect(normalizePath('/')).toBe('/');
expect(normalizePath('///')).toBe('/');
Steps to reproduce
- Install the Filesystem MCP server extension in Claude Desktop (macOS)
- Add
/as an allowed directory - Restart Claude Desktop
- Server crashes immediately — visible in
~/Library/Logs/Claude/mcp-server-Filesystem.log
Expected
The extension should ship a build that includes the root path fix from the source.
Environment
- Claude Desktop on macOS (Darwin 25.3.0, Apple Silicon)
- Extension:
ant.dir.ant.anthropic.filesystem - Installed
@modelcontextprotocol/server-filesystemversion:2025.8.21 - Upstream source version:
0.6.3
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.
Research direction
Compare src/filesystem/path-utils.ts with the bundled dist/path-utils.js, then run the existing normalizePath tests for '/' and '///'. Trace the build and extension release process to determine why the current source was not included; done means the published Claude Desktop extension contains the fixed behavior and the root-directory startup case no longer produces an empty path.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- build-system, release
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100