Claude Desktop supports MCP servers out of the box. You do not need a plugin, an extension, or a separate app. You edit one JSON file, restart Claude, and the server is available in your conversations.

This guide walks through the full process: finding the config file, adding a server, verifying it works, and troubleshooting the three problems that trip up most people.

Prerequisites

Before you start, make sure you have:

  • Claude Desktop installed (macOS or Windows). Download from claude.ai/download if you have not already.
  • Node.js 18+ installed. Most MCP servers distributed through npm require it. Run node --version in your terminal to check.
  • A terminal you are comfortable running commands in. On macOS, Terminal or iTerm. On Windows, PowerShell or Command Prompt.

That is all. No Docker, no Python virtual environment, no build tools. Those come later if you want them. For your first server, Node.js is enough.

Step 1: Find the Config File

Claude Desktop reads MCP server configuration from a single JSON file. The location depends on your operating system:

macOS:

~/Library/Application Support/Claude/claude_desktop_config.json

Windows:

%APPDATA%\Claude\claude_desktop_config.json

The fastest way to get there: open Claude Desktop, go to Claude > Settings > Developer, and click Edit Config. This opens the file in your default editor.

If the file does not exist yet, create it. Start with an empty object:

{}

Step 2: Pick a Server

For your first connection, pick something simple that does not require API keys or authentication. The Filesystem MCP server is a good starting point. It gives Claude read and write access to directories you specify on your machine.

Other solid first servers:

  • Memory MCP — gives Claude persistent memory across conversations using a local knowledge graph
  • Fetch MCP — lets Claude retrieve and read web pages
  • SQLite MCP — connects Claude to a local SQLite database

All four run locally, require no API keys, and install through npx.

Step 3: Add the Server to Your Config

Open claude_desktop_config.json and add a mcpServers block. Here is the configuration for the Filesystem server, scoped to your Desktop folder:

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

Replace /Users/yourname/Desktop with the absolute path to whatever directory you want Claude to access. You can list multiple paths by adding more arguments.

Windows users: use forward slashes or escaped backslashes in paths. C:/Users/yourname/Desktop works. C:\Users\yourname\Desktop does not.

Step 4: Restart Claude Desktop

Save the config file. Then fully quit Claude Desktop and reopen it. A regular close is not enough on macOS — use Claude > Quit Claude or Cmd+Q. The app needs a full restart to read the updated config and start the MCP server process.

Step 5: Verify the Connection

After restarting, open a new conversation. Look for a small hammer icon or MCP indicator near the input field. Click it to see the list of connected servers and available tools.

Test it by asking Claude something that requires the server. For the Filesystem server:

“List the files on my Desktop.”

If Claude returns a file listing, the connection is working. You are done.

Adding a Second Server

You can run multiple servers at the same time. Each one gets its own entry in the mcpServers object:

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/yourname/Desktop"]
    },
    "memory": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-memory"]
    }
  }
}

Each server runs as its own process. They do not conflict with each other. Claude sees all available tools from all connected servers and picks the right one based on your request.

Servers That Need API Keys

Some servers connect to external services and require authentication. Pass credentials through the env field in your config:

{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_your_token_here"
      }
    }
  }
}

The env block sets environment variables for that server process only. Your token stays local and is never sent to Claude’s servers.

Troubleshooting

Three problems account for most failed connections:

1. “Server not showing up after restart” You did not fully quit Claude Desktop. On macOS, closing the window does not stop the app. Use Cmd+Q or Claude > Quit Claude, then reopen.

2. “Server shows but tools fail” The most common cause is a relative path in your config. All paths must be absolute. /Users/yourname/Desktop works. ~/Desktop and ./Desktop do not.

3. “npx command not found” Node.js is not installed or not on your PATH. Run node --version in your terminal. If it returns nothing, install Node.js from nodejs.org.

FAQ

Q: Do MCP servers send my data to the cloud? A: Local servers (like Filesystem and Memory) run entirely on your machine. Data stays local. Servers that connect to external APIs (like GitHub or Slack) send requests to those services, but your conversation content stays between you and Claude.

Q: Can I use MCP servers with the free version of Claude? A: Yes. MCP server support is available on all Claude Desktop plans, including free.

Q: How many servers can I run at once? A: There is no hard limit. Most users run 3-5 without any performance impact. Each server is a lightweight process. If you notice slowdowns, check whether a specific server is consuming unusual resources.

Q: Where do I find more MCP servers? A: AgentNDX indexes over 50,000 MCP-compatible services. Search by use case, filter by transport type, and find install commands for any server in the directory.