Project-scope .mcp.json silently skipped during startup in 2.1.141 (native, Linux)

Resolved 💬 2 comments Opened May 14, 2026 by erobertssos Closed Jun 17, 2026

Summary

Project-scope .mcp.json is not auto-loaded in 2.1.141. The startup debug log shows the MCP loader entry/exit but never enumerates the project file or its stdio servers. Passing --mcp-config <path> explicitly works. User-scope MCP servers in ~/.claude.json are unaffected.

Environment

  • Claude Code 2.1.141 (native install)
  • Linux x64 (Ubuntu, kernel 5.15)
  • Launched from a JetBrains Toolbox/Fleet remote-dev terminal (project dir is the cwd)

Repro

  1. Project at /path/to/repo contains a valid .mcp.json with stdio servers (npx-launched MCP servers).
  2. ~/.claude.json for that project has hasTrustDialogAccepted: true and the servers listed in enabledMcpjsonServers (none in disabledMcpjsonServers).
  3. cd /path/to/repo && claude --debug --debug-file /tmp/claude.log
  4. Open /mcp — only user-scope HTTP servers (from ~/.claude.json) appear. Project stdio servers are absent.
  5. grep -i <stdio-server-name> /tmp/claude.log → 0 matches. No npx invocation, no parse error, no skip-reason logged.

Expected

Project .mcp.json servers are loaded and appear in /mcp alongside user-scope servers.

Actual

Debug log shows:

\\\
[STARTUP] Loading MCP configs...
[STARTUP] MCP configs resolved in 47ms (awaited at +213ms)
\
\\

…then immediately initializes only the HTTP servers from ~/.claude.json. The project's .mcp.json is never read or mentioned. No error, no warning.

<details>
<summary>Relevant debug log lines</summary>

\\\`
2026-05-14T03:21:37.771Z [DEBUG] [STARTUP] Loading MCP configs...
2026-05-14T03:21:37.984Z [DEBUG] [STARTUP] MCP configs resolved in 47ms (awaited at +213ms)
2026-05-14T03:21:38.225Z [DEBUG] MCP server "sentry": Initializing HTTP transport to https://mcp.sentry.dev/mcp
2026-05-14T03:21:38.249Z [DEBUG] MCP server "sentry": Starting connection with timeout of 30000ms
2026-05-14T03:21:38.250Z [DEBUG] MCP server "postman": Initializing HTTP transport to https://mcp.postman.com/minimal
2026-05-14T03:21:38.259Z [DEBUG] MCP server "postman": Starting connection with timeout of 30000ms
2026-05-14T03:21:38.260Z [DEBUG] MCP server "datadog-mcp": Initializing HTTP transport to https://mcp.datadoghq.com/api/unstable/mcp-server/mcp
2026-05-14T03:21:38.261Z [DEBUG] MCP server "datadog-mcp": Starting connection with timeout of 30000ms
2026-05-14T03:21:38.264Z [DEBUG] MCP server "atlassian": Initializing HTTP transport to https://mcp.atlassian.com/v1/mcp
2026-05-14T03:21:38.274Z [DEBUG] MCP server "atlassian": Starting connection with timeout of 30000ms

(no further MCP server init lines - 4 HTTP servers, all from user-scope ~/.claude.json)

grep -ci <stdio-server-name> /tmp/claude.log -> 0

grep -ci npx /tmp/claude.log -> 0

\\\`

</details>

Workaround

\claude --debug --mcp-config /path/to/repo/.mcp.json\ — servers load correctly and appear in \/mcp\. The same \.mcp.json\ file that's silently skipped during auto-discovery loads fine when passed explicitly.

Notes

  • \/path/to/repo/.claude/settings.local.json\ IS loaded (permission rules applied), so project root resolution itself works — only \.mcp.json\ discovery is broken.
  • \.mcp.json\ is readable, valid JSON, and parses fine with \python3 -c "import json; json.load(open('.mcp.json'))"\.
  • No \--print\/\-p\, \--mcp-config\, or \--strict-mcp-config\ flags were passed in the failing run.

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗