Claude Debugs and Fixes Its Own MCP Filesystem Server UNC Path Bug on Windows

A developer documented using Claude Opus to debug and fix a bug in the MCP Filesystem Server (Desktop Extension version) on Windows. The issue affected UNC network share paths (e.g., \\server\share\).
The Problem
When using a UNC share as an allowed directory, list_directory on the share root worked, but any operation on subdirectories or files failed with an "Access denied - path outside allowed directories" error. Writing files to the root also failed, despite the share being fully accessible from Windows Explorer and mapped drives.
The Debugging Process
Claude helped identify that:
- The configuration for the Desktop Extension version is stored in
%APPDATA%\Claude\Claude Extensions Settings\ant.dir.ant.anthropic.filesystem.json, notclaude_desktop_config.json. - Switching to a mapped drive letter didn't work because Node.js
fs.realpath()resolves mapped drives back to UNC paths during server startup. - The server source files (
index.js→lib.js→path-validation.js) were examined to find the root cause.
Root Cause
In path-validation.js, the function isPathWithinAllowedDirectories() checks subdirectory membership with:
return normalizedPath.startsWith(normalizedDir + path.sep);UNC share roots are filesystem roots (like C:\) and retain their trailing backslash after normalization: \\server\share\. This creates a double trailing backslash (\\server\share\\) that never matches real paths. The code had special handling for drive roots like C:\ but not for UNC roots.
The Fix
Replace the problematic line with:
const dirWithSep = normalizedDir.endsWith(path.sep) ? normalizedDir : normalizedDir + path.sep;
return normalizedPath.startsWith(dirWithSep);Apply the patch with this PowerShell one-liner:
$file = "$env:APPDATA\Claude\Claude Extensions\ant.dir.ant.anthropic.filesystem\node_modules\@modelcontextprotocol\server-filesystem\dist\path-validation.js"
Copy-Item $file "$HOME\Desktop\path-validation.js.backup"
$content = Get-Content $file -Raw
$content = $content.Replace(
'return normalizedPath.startsWith(normalizedDir + path.sep);',
'const dirWithSep = normalizedDir.endsWith(path.sep) ? normalizedDir : normalizedDir + path.sep; return normalizedPath.startsWith(dirWithSep);'
)
[System.IO.File]::WriteAllText($file, $content)Then fully quit and restart Claude Desktop. Claude tested the fix itself using MCP tools after restarting—listing subdirectories and writing a test file to confirm functionality.
Note: This patch will be overwritten if the extension auto-updates. The fix should be implemented upstream in @modelcontextprotocol/server-filesystem. Related GitHub issues: #1838, #470.
📖 Read the full source: r/ClaudeAI
👀 See Also

ClawControl iOS client released for OpenClaw self-hosted servers
ClawControl v1.50 is now available on iOS as a privacy-focused mobile client for self-hosted OpenClaw/Claw servers. The open-source app enables real-time chat with streaming responses, agent management, and session control from mobile devices.

GrapeRoot MCP Tool Reduces Claude Code Token Usage by 50-70%
A developer built GrapeRoot, an MCP tool using Claude Code, that tracks explored files and avoids re-reading unchanged content, reducing token usage by 50-70% and making $20 Claude Code plans last 2-3× longer.

Claude Code's Tool API Details Revealed
A Reddit user extracted details about Claude Code's tool API, including file system operations, bash execution, web search, and how tool calls are structured using XML-like blocks.

Claude Hindsight: Observability Tool for Claude Code Sessions
Claude Hindsight is an open-source observability layer for Claude Code that captures tool calls, tokens, and errors into an explorable dashboard. The creator used it to refactor an open-source project in a single 11-hour session with 733 tool calls and 692.8M cache tokens.