Desktop app does not connect project-scoped .mcp.json HTTP MCP servers
Status Open
Reported on v2.1.239
Maintainer reply None cached
Activity 0 comments · opened Aug 22, 2026
Description
A project-scoped MCP server defined in .mcp.json with "type": "http" pointing to a local-network HTTP endpoint never gets connected when using the Claude Desktop app — even though every prerequisite for it to work is correctly in place.
Environment
- Claude Desktop app: 1.34493.1 (macOS)
- Claude Code CLI: 2.1.239
- macOS: 26.6.2 (build 25G83)
Steps to reproduce
- Add a project-scoped MCP server to
.mcp.jsonin the project root:
{
"mcpServers": {
"example-http": {
"type": "http",
"url": "http://<local-ip>:<port>/<path>"
}
}
}
- Open a Claude Desktop app session in that project directory.
- Accept the trust dialog if/when prompted.
- Send
/mcpin the chat.
Expected
The server should show up in the /mcp panel, in one of: connected, pending approval, or failed-with-error.
Actual
The server does not appear in /mcp at all. Not connected, not pending, not failed — simply absent from the list.
What I ruled out
.mcp.jsonis valid JSON, located at the project root (same level as the project's CLAUDE.md).~/.claude.json->projects["<path>"]:hasTrustDialogAccepted: true,hasCompletedProjectOnboarding: true,disabledMcpjsonServers: []..claude/settings.local.json->enabledMcpjsonServersexplicitly lists the server name.- The target server is reachable and fully MCP-protocol-compliant: a manual
curlPOST of a JSON-RPCinitializerequest to the URL returns HTTP 200 with a correct result (protocolVersion, capabilities, serverInfo). - Using the plain CLI (
claude, installed fresh vianpm install -g @anthropic-ai/claude-code) in the exact same project directory,claude mcp listimmediately shows the server asConnected. ~/Library/Logs/Claude/mcp.lognever records any connection attempt for this server (only for a separately/globally configured connector).~/Library/Logs/Claude/main.loglogs a local-mcp/direct-mcp tool count on every session start (via aremote-tools-device/ "DO bridge" log line); that count stayed unchanged before and after the server was added to.mcp.json.
Conclusion
This points to the Desktop app's session bridge (the remote-tools-device / "DO bridge" mechanism referenced in main.log) not picking up project-scoped .mcp.json servers of "type": "http", while the CLI's normal MCP loading path handles the identical config correctly.