A local Coolify MCP server lets Claude Desktop manage this infrastructure directly (create/deploy/inspect services, read logs, etc.) via Coolify's API - separate from any connector used in claude.ai's web interface.
~/Library/Application Support/Claude/claude_desktop_config.json
Claude Desktop reads this on launch and spawns the configured MCP server as a local process automatically - no manual terminal command needed to "start" it day to day.
Use the full absolute path to Node, not bare node. Something like /usr/local/bin/node - not just node. Claude Desktop doesn't reliably inherit your shell's PATH when it spawns the server process, so a bare command that works fine typed into a terminal will fail silently here.
Keep the project folder outside macOS's protected folders. Not in Documents, Desktop, or Downloads. macOS has a "disclaim" mechanism that silently strips file-access permissions from processes launched out of those folders - this was a genuinely confusing failure mode before the cause was identified, since nothing in the logs pointed at permissions directly.
Validate the JSON before restarting Claude Desktop. A broken config fails silently rather than showing a clear error.
python3 -m json.tool claude_desktop_config.json
This catches the usual culprits: smart quotes pasted in from somewhere, a missing comma, a duplicate key.
A locally-run stdio MCP server configured this way is only accessible to Claude Desktop, not the claude.ai web interface - those are two separate connection paths to Coolify, configured independently.