Skip to content

Claude Desktop: MCP tools do not appear after restart

Why Claude Desktop sometimes ignores your claude_desktop_config.json, the file paths to check, and the log lines that surface the real error.

The symptom

You edited claude_desktop_config.json, restarted Claude Desktop, and opened a new conversation. The hammer icon does not show your server. Or it shows the server name but zero tools.

Check 1: you are editing the right file

Claude Desktop only reads the file at these exact paths:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

The file is created the first time you open Settings → Developer → Edit Config. If you wrote it by hand to ~/.config/claude/ or anywhere else, Claude Desktop never sees it.

Check 2: the JSON parses

A trailing comma, an unbalanced brace, or a stray comment turns the whole file into an error and Claude Desktop loads zero servers without telling you in the UI. Run the file through jq . or paste it into the MCP Config Validator (it validates in your browser; nothing is sent to a server).

Check 3: every npx command has -y

Stdio servers launched with npx need the -y (or --yes) flag. Without it, npx waits for you to confirm the install. Claude Desktop cannot answer that prompt. The server hangs forever and never registers its tools.

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/me/Documents"]
    }
  }
}

Check 4: you actually quit, not closed

Closing the window leaves Claude Desktop running. The config is re-read on full quit and relaunch only. macOS: Cmd+Q. Windows: right-click the tray icon and choose Exit.

Check 5: read the MCP server logs

If the server still does not show up, the real error is in the per-server log:

  • macOS: ~/Library/Logs/Claude/mcp-server-<name>.log
  • Windows: %APPDATA%\Claude\logs\mcp-server-<name>.log

tail -f it during launch. Common errors: missing binary on PATH, env vars not interpolated (Claude Desktop's config is JSON, not a shell), wrong absolute path for a stdio command.