claude.write
Problem
MCP filesystem server is configured with two paths, but only one is accessible. This is the sixth chat about this issue. The config appears correct, no errors in server logs, but list_allowed_directories only returns one path.
Goal
Get /Users/sand/GitHub/designintuition accessible alongside /Users/sand/GitHub/webseriously via the MCP filesystem server.
Approach
Ruled Out
- [x] Config syntax - looks correct
- [x] Directory existence - confirmed exists
- [x] Multiple config files - user unaware of any others
- [x] Full restart (nuclear option) - done, no change
- [x] Project-level
.mcpoverride - searched, none found
Confirmed
- Direct access attempt returns:
Access denied - path outside allowed directories - Server starts without errors but only reports one path
Pending Diagnostics
- [x] Run server directly from terminal to see startup output
- [x] Check config file for invisible characters/encoding issues
- [x] Check Claude Desktop cache directories
- [x] Verify server version
- [ ] Try fresh conversation after restart
- [ ] Swap path order in config to test "first path only" bug theory
Notes
The Config (confirmed by user)
{
"preferences": {
"quickEntryShortcut": {
"accelerator": "Alt+Space"
}
},
"mcpServers": {
"filesystem": {
"command": "/Users/sand/.nvms/versions/node/v20.19.5/bin/npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/sand/GitHub/webseriously",
"/Users/sand/GitHub/designintuition"
],
"env": {
"PATH": "/Users/sand/.nvms/versions/node/v20.19.5/bin:/usr/local/bin:/usr/bin:/bin"
}
}
}
}Terminal Commands to Try
Run server directly:
/Users/sand/.nvms/versions/node/v20.19.5/bin/npx -y @modelcontextprotocol/server-filesystem /Users/sand/GitHub/webseriously /Users/sand/GitHub/designintuitionyields: Secure MCP Filesystem Server running on stdio
Check config for weirdness:
cat ~/Library/Application\ Support/Claude/claude_desktop_config.jsonnothing wierd
Access Test Results
Filesystem:list_allowed_directories
→ Allowed directories: /Users/sand/GitHub/webseriously
Filesystem:list_directory /Users/sand/GitHub/designintuition
→ Error: Access denied - path outside allowed directories:
/Users/sand/GitHub/designintuition not in /Users/sand/GitHub/webseriously
Filesystem:search_files .mcp in /Users/sand/GitHub/webseriously
→ No matches foundTheories
- Something in Claude Desktop is caching the old config
- Invisible characters or encoding issue in the JSON
- Server silently dropping the second path for unknown reason
- Another config file somewhere taking precedence
Terminal Server Test Result
Server started with: Secure MCP Filesystem Server running on stdio
No errors, no complaints about paths. Server accepts both paths fine. Problem is between server and Claude Desktop.
Hex Dump Verification
Config is perfectly clean - no invisible characters, no encoding issues. Both paths clearly visible:
00000120: 2022 2f55 7365 7273 2f73 616e 642f 4769 "/Users/sand/Gi
00000130: 7448 7562 2f77 6562 7365 7269 6f75 736c tHub/webseriousl
00000140: 7922 2c0a 2020 2020 2020 2020 222f 5573 y",. "/Us
00000150: 6572 732f 7361 6e64 2f47 6974 4875 622f ers/sand/GitHub/
00000160: 6465 7369 676e 696e 7475 6974 696f 6e22 designintuition"Cache Directory Check
~/Library/Caches/Claude/- does not exist~/Library/Application Support/Claude/- exists, contains config + standard dirs- No obvious cache to clear
Server Version
@modelcontextprotocol/server-filesystem version: 2025.12.18 (recent, not a version bug)
Current Theory
Bug in either:
- MCP server's directory listing response (only returning first path)
- Claude Desktop's parsing of the response
Next test: Swap path order in config. If only designintuition shows up, confirms "first path only" bug.
Path Order Swap Test (2025-01-05)
Swapped order in config:
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/sand/GitHub/designintuition",
"/Users/sand/GitHub/webseriously"
]Quit Claude, relaunched, new chat. Result:
Filesystem:list_allowed_directories
→ Allowed directories: /Users/sand/GitHub/webseriouslyStill shows webseriously even though designintuition is first.
This rules out "first path only" theory. Something is specifically selecting webseriously regardless of position.
New Theories
- Something about the directories themselves differs (permissions, type, contents)
- Claude Desktop caches allowed paths in non-obvious location (plist? sqlite?)
- Server has path validation that
designintuitionfails
Next Diagnostics
# Permissions comparison
ls -la ~/GitHub/ | grep -E "webseriously|designintuition"
# Is designintuition a symlink?
file ~/GitHub/designintuition
# Contents check
ls ~/GitHub/designintuitionNuclear test: Change second path to something completely different (e.g., /tmp or ~/Desktop). If that works, problem is designintuition specifically. If it fails, server only ever returns one path.
Directory Comparison Results
ls -la ~/GitHub/ | grep -E "webseriously|designintuition"
drwxr-xr-x 6 sand staff 192 Jan 5 04:06 designintuition
drwxr-xr-x 17 sand staff 544 Apr 11 2025 freshwebseriously
drwxr-xr-x 13 sand staff 416 Dec 17 01:09 help.webseriously
drwxrwxrwx 37 sand staff 1184 Jan 5 03:19 webseriously
file ~/GitHub/designintuition
/Users/sand/GitHub/designintuition: directory
ls ~/GitHub/designintuition
node_modules package.json yarn.lock| designintuition | webseriously | |
|---|---|---|
| Permissions | drwxr-xr-x (755) | drwxrwxrwx (777) |
| Type | real directory | real directory |
| Contents | basic node project | main repo |
Permission difference (755 vs 777) is notable but shouldn't matter - both readable.
Next Tests
chmod 777 ~/GitHub/designintuitionthen restart- Nuclear test: Change second path to
/tmpin config. If/tmpworks, problem isdesignintuitionspecifically. If/tmpfails, server only ever returns one path.
Permission Test (2025-01-05)
chmod 777 ~/GitHub/designintuition - done, restarted Claude.
Result:
Filesystem:list_allowed_directories
→ Allowed directories: /Users/sand/GitHub/webseriouslyPermission was not the issue. Still only one path visible.
Nuclear Test Result (2025-01-05)
Changed config to:
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/sand/GitHub/webseriously",
"/tmp"
]Result after restart:
Filesystem:list_allowed_directories
→ Allowed directories: /Users/sand/GitHub/webseriously/tmp did NOT appear. This confirms the bug is NOT designintuition-specific.
Conclusion
Bug confirmed: MCP filesystem server (or Claude Desktop's parsing of it) only ever exposes ONE allowed directory, regardless of how many are configured.
The server runs fine with multiple paths (verified via terminal), but only the first path makes it through to Claude.
Options
- File bug report with Anthropic / MCP server repo
- Workaround: configure a higher-level directory (e.g.,
/Users/sand/GitHub) to cover multiple repos - Wait for fix
Workaround Applied (2025-01-05)
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/sand/GitHub"
]RESOLVED (2025-01-05)
Root cause: A Claude Extension called "Filesystem" (capital F, managed by extension) was overriding the manual filesystem config. The extension was hardcoded to /Users/sand/GitHub/webseriously.
Fix: Disabled the Filesystem extension in Settings → Extensions. Now the manual config (/Users/sand/GitHub) is used.
Irony: The extension actually DID allow access to the parent directory—list_allowed_directories was just reporting incorrectly. We had access the whole time.
Lesson: When debugging MCP issues, check for duplicate server entries (especially extension-managed vs manual config).