Claude Desktop is the canonical MCP host for personal use. It reads a JSON config file (~/Library/Application Support/Claude/claude_desktop_config.json on macOS; analogous on other platforms) listing every server it should launch on startup. A server entry names the launch command, args, and optional environment variables.
The end-to-end flow: write your server, add an entry to the config, restart Claude Desktop, see your server's tools appear in the model's tool menu. The first connection is where most early-stage bugs surface — usually a stdout pollution issue (Track 6) or a missing dependency in the launch environment.
The other trap is environment variables. Claude Desktop launches your server in a near-empty environment; $HOME is set, but most others are not. If your server needs an API key, pass it explicitly through the env field of the config or read it from the OS keychain inside the server. Do not rely on shell-set variables — they are not there.