ᛗMUNINN
GuidesPricing
Sign inTry Muninn
Back to home

Reference

claude_desktop_config.json, explained

Path, schema, examples, and the mistakes that break it

claude_desktop_config.json is where Claude Desktop stores its local MCP servers — the ones Claude launches as subprocesses and talks to over stdio. Remote MCP servers (added through the Connectors UI) don't live here.

Where the file lives

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

If it doesn't exist, create it — Claude only reads it, never requires it. Open Claude → Settings → Developer → Edit Config to let Claude open the file in your default editor.

Schema

{
  "mcpServers": {
    "<display-name>": {
      "command": "<executable>",
      "args": ["<arg-1>", "<arg-2>"],
      "env": { "KEY": "value" }
    }
  }
}
  • command — the executable Claude runs. npx, node, python, uvx, or an absolute path to a binary.
  • args — arguments passed to the command.
  • env — optional environment variables the child process should see (API keys, feature flags).

Working examples

Filesystem server (Anthropic reference):

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

Python server via uvx:

{
  "mcpServers": {
    "sqlite": {
      "command": "uvx",
      "args": ["mcp-server-sqlite", "--db", "/Users/you/dev.db"]
    }
  }
}

Local Node server with an API key:

{
  "mcpServers": {
    "weather": {
      "command": "node",
      "args": ["/Users/you/dev/weather-mcp/dist/index.js"],
      "env": { "WEATHER_API_KEY": "sk-..." }
    }
  }
}

Common mistakes

  • Editing while Claude is running. Claude reads the file at startup. Fully quit (⌘Q on macOS), then reopen.
  • Using ~ in a path. Some commands don't expand it; use the absolute path from your home directory.
  • Assuming your shell's PATH. Claude launches commands with a minimal PATH. Use absolute paths for node, python, uvx if you installed them via a version manager.
  • Trailing commas or comments. The file is strict JSON — no comments, no trailing commas, or Claude fails silently to load it.

Remote servers don't need this file

If the MCP server is hosted at a URL — like https://muninn.ferbutech.no/mcp — add it through Claude's Connectors UI instead. See How to add an MCP server to Claude.

Related reading

  • How to connect an MCP server to Claude Desktop
  • What is an MCP server?
  • How to create a Claude MCP server

Try Muninn

One memory for every assistant

Keep notes once. Let Claude, ChatGPT, and any MCP client retrieve and update them when you ask.

Get started