Skip to content

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 .mcp override - 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)

json
{
  "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:

bash
/Users/sand/.nvms/versions/node/v20.19.5/bin/npx -y @modelcontextprotocol/server-filesystem /Users/sand/GitHub/webseriously /Users/sand/GitHub/designintuition

yields: Secure MCP Filesystem Server running on stdio

Check config for weirdness:

bash
cat ~/Library/Application\ Support/Claude/claude_desktop_config.json

nothing 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 found

Theories

  1. Something in Claude Desktop is caching the old config
  2. Invisible characters or encoding issue in the JSON
  3. Server silently dropping the second path for unknown reason
  4. 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:

  1. MCP server's directory listing response (only returning first path)
  2. 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:

json
"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/webseriously

Still shows webseriously even though designintuition is first.

This rules out "first path only" theory. Something is specifically selecting webseriously regardless of position.

New Theories

  1. Something about the directories themselves differs (permissions, type, contents)
  2. Claude Desktop caches allowed paths in non-obvious location (plist? sqlite?)
  3. Server has path validation that designintuition fails

Next Diagnostics

bash
# Permissions comparison
ls -la ~/GitHub/ | grep -E "webseriously|designintuition"

# Is designintuition a symlink?
file ~/GitHub/designintuition

# Contents check
ls ~/GitHub/designintuition

Nuclear 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

bash
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
designintuitionwebseriously
Permissionsdrwxr-xr-x (755)drwxrwxrwx (777)
Typereal directoryreal directory
Contentsbasic node projectmain repo

Permission difference (755 vs 777) is notable but shouldn't matter - both readable.

Next Tests

  1. chmod 777 ~/GitHub/designintuition then restart
  2. Nuclear test: Change second path to /tmp in config. If /tmp works, problem is designintuition specifically. If /tmp fails, 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/webseriously

Permission was not the issue. Still only one path visible.


Nuclear Test Result (2025-01-05)

Changed config to:

json
"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

  1. File bug report with Anthropic / MCP server repo
  2. Workaround: configure a higher-level directory (e.g., /Users/sand/GitHub) to cover multiple repos
  3. Wait for fix

Workaround Applied (2025-01-05)

json
"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).