GuidesMar 4, 2026Yash Khare

How to Set Up MCP Servers in Claude Desktop

Complete setup guide for configuring MCP servers in Claude Desktop — covers the config file, stdio and HTTP transports, local and remote servers, and troubleshooting.

Claude Desktop was the first AI client to support MCP — and it remains one of the most full-featured. It supports both stdio (local servers) and streamable HTTP (remote servers), all three primitives (tools, resources, prompts), and has a clean interface for managing connected servers. This guide covers everything you need to set up MCP servers in Claude Desktop.

If you are not familiar with MCP, start with What Is MCP?. If you are looking for the ChatGPT-specific guide, see How to Add MCP Tools to ChatGPT.

Prerequisites

  • Claude Desktop — Download and install the desktop app. MCP is not available in the Claude.ai web interface.
  • An MCP server — Either a local server (runs on your machine) or a remote server (deployed to a URL). We will cover both.

Understanding the config file

Claude Desktop uses a JSON configuration file to manage MCP servers. The file location depends on your OS:

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

If the file does not exist, create it. The basic structure:

{
  "mcpServers": {
    "server-name": {
      "command": "...",
      "args": ["..."],
      "env": {}
    }
  }
}

Each key under mcpServers is a unique name for the server. You can have as many servers as you want.

Adding a local server (stdio)

Local servers run on your machine as subprocesses. Claude Desktop launches them automatically and communicates via stdin/stdout. This is the most common setup for development and personal use.

Example: Filesystem server

The filesystem MCP server lets Claude read and manage files on your machine. Add it to your config:

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

The args array includes the directory Claude can access. You can specify multiple directories or a parent directory.

Example: Git server

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

Example: Memory server

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

After editing the config file, restart Claude Desktop. The app reads the config at startup and launches all configured servers.

Adding a remote server (streamable HTTP)

Remote servers run in the cloud and connect over HTTPS. This is how you connect drio-deployed tools or any hosted MCP server.

{
  "mcpServers": {
    "my-drio-app": {
      "url": "https://app.getdrio.com/my-app/mcp",
      "headers": {
        "Authorization": "Bearer your-token-here"
      }
    }
  }
}

For remote servers, use the url field instead of command/args. The optional headers field lets you pass authentication credentials.

Using drio with Claude Desktop

If you have built a tool with drio:

  1. Deploy your tool in the drio builder
  2. Copy the MCP endpoint URL
  3. Add it to claude_desktop_config.json as a remote server (using the url field)
  4. Restart Claude Desktop

Your drio tool is now available alongside any local servers you have configured.

Verifying your setup

After restarting Claude Desktop with new servers configured:

  1. Open a new conversation
  2. Look for the tools icon (hammer icon) in the input area — it should show a count of available tools
  3. Click the icon to see the list of discovered tools from all connected servers
  4. Type a message that should trigger one of your tools

If the tools icon does not appear or shows zero tools, check the troubleshooting section below.

Claude Desktop showing the tools icon with a list of discovered MCP tools

Claude Desktop vs. Claude.ai

A common point of confusion: Claude Desktop and Claude.ai (the web interface) handle MCP differently.

  • Claude Desktop — Full MCP support via config file. Supports stdio and HTTP. Works with local and remote servers. This is what this guide covers.
  • Claude.ai — Supports MCP tools via the API for developers building with Claude. Does not use a config file. Different setup process.

For personal use and development, Claude Desktop is the right choice.

Multiple servers at once

You can configure multiple servers in the same config file:

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/you/projects"]
    },
    "git": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-git"]
    },
    "memory": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-memory"]
    },
    "my-drio-app": {
      "url": "https://app.getdrio.com/my-app/mcp"
    }
  }
}

Claude creates a separate MCP client for each server. All tools from all servers are available in every conversation. Claude's AI decides which tool to use based on the user's message and the tool descriptions.

Environment variables

Some servers need API keys or configuration. Pass them via the env field:

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

Environment variables are passed to the server subprocess. They are not sent to Claude or exposed in conversations.

Troubleshooting

Tools icon does not appear

  • Check the config file path — Make sure it is in the correct location for your OS. The filename must be exactly claude_desktop_config.json.
  • Validate JSON — A single syntax error breaks the entire config. Use a JSON validator.
  • Restart Claude Desktop — The config is only read at startup. You must fully quit and reopen the app.

Server fails to start

  • Check the command — Run the command manually in your terminal to see if it works. For example: npx -y @modelcontextprotocol/server-filesystem /Users/you/projects
  • Node.js version — Some servers require Node.js 18+. Check with node --version.
  • Permissions — Filesystem servers need read access to the specified directories.

Tool is available but returns errors

  • Check the developer console — In Claude Desktop, go to Help > Developer Tools to see server logs and error messages.
  • Use MCP Inspector — Test your server with the MCP Inspector before connecting to Claude Desktop. If it works in Inspector, the issue is in the Claude Desktop configuration.
  • API key issues — If the server needs an API key, make sure it is set in the env field and the server can read it.

Remote server does not connect

  • HTTPS required — Remote servers must use HTTPS. HTTP URLs will not work.
  • Check the URL — Make sure the URL is correct and the server is running. Try accessing it in a browser or with curl.
  • Authentication — If the server requires auth, add the credentials in the headers field.

If you are setting up Claude Desktop MCP for the first time, start with these three servers:

  1. Filesystem — So Claude can read and navigate your project files
  2. Memory — So Claude can remember context across conversations
  3. Git — So Claude can understand your code history and changes

This gives Claude access to your local development environment. From there, add specialized servers as needed — GitHub for PR management, database servers for data queries, or custom drio tools for your specific workflows.

For a comparison of how MCP works across different AI clients, see MCP Client Comparison. For the ChatGPT setup (which uses a different approach), see How to Add MCP Tools to ChatGPT.

Claude Desktop with MCP is the closest thing to having an AI assistant that actually understands your local development environment. Start with filesystem access and build from there.