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.