modelcontextprotocol / modelcontextprotocol/servers

Claude Desktop Filesystem extension ships outdated dist with root path normalization bug

Open
#3,417 1 comment 0 reactions 0 assignees View on GitHub

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
  1. Install the Filesystem MCP server extension in Claude Desktop (macOS)
  2. Add / as an allowed directory
  3. Restart Claude Desktop
  4. 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-filesystem version: 2025.8.21
  • Upstream source version: 0.6.3

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.