How to Set Up Claude Desktop and Connect MCP Servers
Claude Desktop is Anthropic's native app for macOS and Windows. To connect MCP servers, open Settings, edit the developer config file, and add each server under mcpServers with its command and arguments. Save the file, fully restart Claude Desktop, and the server's tools appear in your chat, ready to call.
What Claude Desktop is and why MCP matters
Claude Desktop is Anthropic's native desktop application for macOS and Windows. It is a chat client that runs as its own program instead of a browser tab, which is what lets it talk to tools on your machine.
That tool access comes from MCP, the Model Context Protocol. MCP is an open standard for connecting an assistant to external systems: your filesystem, a database, a git repo, an API, or a retrieval index. Each connection is an MCP server, a small program that exposes a set of tools the model can call. Without MCP, Claude Desktop is a good chat window. With MCP, it can read your files, query your data, and act on real systems while you stay in one conversation.
This guide covers the setup that actually gets servers running: installing the app, finding and editing the config file, adding a server, and verifying the connection. It does not cover plans or pricing, which change and vary by account. Check your Claude account for what your plan includes.
Install Claude Desktop and open the config
Download the app for your operating system, install it, and sign in with your Claude account. The desktop app is separate from the web version and separate from Claude Code, the terminal tool. You can run all three; they share your account, not their configuration.
Find the config file
MCP servers live in a single JSON file. The reliable way to open the exact file is from inside the app: go to Settings, open the Developer tab, and click Edit Config. That creates the file if it does not exist yet and opens the folder that holds it.
If you prefer to open it directly, it is here:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Open it in any text editor. A fresh file may be empty or contain an empty object.
Install a runtime for the servers
Most MCP servers are launched by a package runner rather than installed globally. Node-based servers run through npx, so install Node.js. Python-based servers commonly run through uv or uvx, so install those if a server you want uses them. If the command in your config cannot be found on your PATH, the server will not start, and this missing runtime is the most common reason for a silent failure.
Add your first MCP server
Every server is an entry inside an mcpServers object. Each entry has a name you choose, a command to run, and an args array passed to that command. Here is a minimal config that connects the filesystem server and scopes it to one folder:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/you/projects"
]
}
}
}
To run more than one server, add more keys to the same object. Keep the JSON valid: commas between entries, no trailing comma after the last one, and double quotes everywhere. A single syntax error stops the whole file from loading, so paste it through a JSON linter if servers stop appearing.
Some servers need secrets, like an API token. Those go in an env object on the server entry, not in args, so keys stay out of your command line:
{
"mcpServers": {
"example": {
"command": "npx",
"args": ["-y", "some-mcp-server"],
"env": { "API_TOKEN": "your-token" }
}
}
}
Save the file. The app does not hot-reload it.
Verify the connection and troubleshoot
Claude Desktop reads the config only at startup. Quitting the window is not enough on either OS, because the app keeps running in the tray or menu bar. Quit fully, then reopen.
After restart, open a chat and look for the tools indicator, usually a slider or tool icon near the input box. Click it to see the connected servers and the tools each exposes. Ask the model to use one, for example "list the files in my projects folder," and approve the tool call when prompted. If the tools show up and the call runs, the server is wired correctly.
When a server does not appear, work through this order. First, validate the JSON. Second, confirm the runtime exists by running the exact command from a terminal yourself; npx -y @modelcontextprotocol/server-filesystem /path should start without an error. Third, use an absolute path for the command if the app cannot find it on PATH, which happens on macOS when the app launches with a minimal environment. Fourth, read the MCP logs, which Claude Desktop writes to a logs folder next to the config file. The log names the server that failed and usually the reason.
Connect an RDK retrieval MCP to cut token spend
Once the app talks to tools, the highest-value server to add is a retrieval index. Here is the problem it solves. A desktop agent answers from the model every time, which means you pay to regenerate the same facts about your own notes, docs, and decisions on every session. That is slow and it is wasteful.
RDK is a retrieval layer built for this. You index your local vault, whether that is Obsidian notes, project docs, or code, as encrypted private chunks. You expose that index to Claude Desktop as an MCP server, declared in the same mcpServers object as any other. Once connected, the desktop agent searches your index before it calls the model. A settled answer that already exists in your vault comes back from retrieval instead of being regenerated token by token.
The savings come from where the work lands. A private vault answers 40 to 65 percent of everyday queries directly, the public RDK network adds another 15 to 20 percent, and the model handles only the remaining 5 to 10 percent as fallback. For a desktop agent you use all day against the same knowledge base, that is a large cut in token spend and a faster response, because retrieval is cheaper than inference. Add it as one more server entry, restart, and the desktop agent starts answering from what you already know.
Frequently asked questions
- Where is the Claude Desktop config file located?
- On macOS it is at ~/Library/Application Support/Claude/claude_desktop_config.json. On Windows it is at %APPDATA%\Claude\claude_desktop_config.json. The safest way to open the exact file is inside the app: go to Settings, open the Developer tab, and click Edit Config, which creates and opens it for you.
- Why don't my MCP servers show up after editing the config?
- Two common causes. Claude Desktop only reads the config at startup, and closing the window is not a full quit because the app stays in the tray or menu bar, so quit fully and reopen. The other cause is invalid JSON, where one trailing comma or missing quote stops the whole file from loading. Lint it and check the logs folder.
- Do I need Node.js or Python to run MCP servers?
- Usually yes. Most reference servers launch through npx, which needs Node.js, or through uv and uvx, which need Python. The command in your config has to resolve on your PATH or the server will not start. Install the runtime the server expects, and test the exact command in a terminal before relying on it in the app.
- Can Claude Desktop connect to multiple MCP servers at once?
- Yes. Add each server as its own key inside the mcpServers object, with its own command and args. The app loads all of them at startup and their tools appear together in the chat. Keep the JSON valid, since one syntax error in any entry can prevent every server from loading.
- Is Claude Desktop the same as Claude Code?
- No. Claude Desktop is the native chat app for macOS and Windows, and it uses MCP servers configured in a JSON file. Claude Code is a terminal agent that edits files and runs commands in your project directory. They share your account but have separate configuration, and you can use both at the same time.