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

  1. Add a project-scoped MCP server to .mcp.json in the project root:
{
  "mcpServers": {
    "example-http": {
      "type": "http",
      "url": "http://<local-ip>:<port>/<path>"
    }
  }
}
  1. Open a Claude Desktop app session in that project directory.
  2. Accept the trust dialog if/when prompted.
  3. Send /mcp in 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.json is 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 -> enabledMcpjsonServers explicitly lists the server name.
  • The target server is reachable and fully MCP-protocol-compliant: a manual curl POST of a JSON-RPC initialize request to the URL returns HTTP 200 with a correct result (protocolVersion, capabilities, serverInfo).
  • Using the plain CLI (claude, installed fresh via npm install -g @anthropic-ai/claude-code) in the exact same project directory, claude mcp list immediately shows the server as Connected.
  • ~/Library/Logs/Claude/mcp.log never records any connection attempt for this server (only for a separately/globally configured connector). ~/Library/Logs/Claude/main.log logs a local-mcp/direct-mcp tool count on every session start (via a remote-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.

View original on GitHub ↗