Claude Desktop supports MCP (Model Context Protocol) servers out of the box, allowing you to extend Claude's capabilities with file access, database queries, web browsing, and more. This step-by-step guide walks you through everything — from installing your first MCP server to running multiple servers simultaneously.
What Do You Need Before Starting?
Before you start, make sure you have:
- Claude Desktop — the latest version (not Claude.ai in the browser — MCP requires the desktop app)
- Node.js 18+ — most MCP servers are npm packages (download Node.js)
- A terminal — Terminal on macOS, PowerShell on Windows, or any command line
Don't have Node.js? Install it from nodejs.org — the LTS version works for all MCP servers.
How Do You Find the Right MCP Server?
Browse our MCP server catalog to find a server that fits your needs. With 500+ servers available, here are popular starting choices:
- Filesystem MCP Server (82K+ stars) — read and write local files
- GitHub MCP Server (28K+ stars) — manage repos, PRs, issues
- Context7 (51K+ stars) — get up-to-date library documentation
- Puppeteer MCP Server (82K+ stars) — browser automation
For this guide, we'll use the Filesystem MCP Server as our first example — it's the most universally useful and requires no API keys.
How Do You Install an MCP Server?
Most MCP servers are npm packages. You have two options:
Option A: Use npx (no global install needed — recommended for beginners)
npx @modelcontextprotocol/server-filesystem /path/to/allowed/directory
This downloads and runs the server on the fly. Good for trying servers out.
Option B: Install globally (faster startup)
npm install -g @modelcontextprotocol/server-filesystem
Good if you use the server regularly.
Some servers are Python packages instead of npm. For example:
pip install mcp-server-sqlite
Check the server's README or our catalog page for the correct install command.
How Do You Configure Claude Desktop?
Claude Desktop reads MCP server configuration from a JSON file. Open it in your text editor:
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 doesn't exist, create it. Add your server configuration:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/you/Documents"
]
}
}
}
Key points about this config:
"filesystem"is the name you give this server (can be anything descriptive)"command"is the executable to run (npx,node, orpython)"args"are the arguments passed to the command- The last argument (
/Users/you/Documents) defines what directories the server can access - Security: The server can ONLY access directories you explicitly list here
How Do You Verify It's Working?
Close Claude Desktop completely (Cmd+Q on macOS, not just close the window) and reopen it. You should see the MCP tools icon (a hammer or plug icon) in the chat interface.
Try asking Claude these questions to test:
- "List the files in my Documents folder"
- "Read the contents of README.md"
- "Search for files containing 'TODO'"
- "Create a new file called notes.txt with the content 'Hello MCP'"
Claude will use the filesystem MCP server to execute these requests. You'll see tool use indicators in the chat showing which MCP tool Claude is calling.
Not working? Jump to the Troubleshooting section below.
How Do You Run Multiple MCP Servers?
The real power comes from running multiple MCP servers simultaneously. Each server adds different capabilities:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/you/Projects"]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "ghp_your_github_personal_access_token"
}
},
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres"],
"env": {
"DATABASE_URL": "postgresql://user:password@localhost:5432/mydb"
}
},
"brave-search": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-brave-search"],
"env": {
"BRAVE_API_KEY": "your-brave-api-key"
}
}
}
}
With this configuration, Claude can:
- Read and write your project files
- Create GitHub PRs and manage issues
- Query your PostgreSQL database
- Search the web for information
All in a single conversation. Claude automatically chooses which MCP server to use based on your request.
How Do You Pass API Keys and Credentials?
Many MCP servers need API keys or credentials. Pass them via the "env" object in the config:
"env": {
"API_KEY": "your-secret-key",
"DATABASE_URL": "postgres://..."
}
Important security details:
- Environment variables are only available to that specific MCP server process
- They're not exposed to Claude or sent to Anthropic's servers
- Never commit your
claude_desktop_config.jsonto version control — it contains sensitive credentials - Consider using a
.gitignoreentry for the config file
To get API keys:
- GitHub: Settings → Developer settings → Personal access tokens → Create with
reposcope - Brave Search: brave.com/search/api/ — free tier available
- Database: Use your existing connection string
What If Something Goes Wrong?
Server not showing up in Claude Desktop?
- Check JSON syntax — A missing comma or bracket will silently break the config. Paste your config into jsonlint.com to validate.
- Check the file path — Make sure you're editing the correct config file for your OS (see paths above).
- Restart fully — Use Cmd+Q (macOS) or exit from the system tray (Windows). Just closing the window isn't enough.
- Check Node.js — Run
node --versionin terminal. Must be 18+. - Check Claude Desktop logs — On macOS:
~/Library/Logs/Claude/, on Windows:%APPDATA%\Claude\logs\
Getting permission errors?
- Filesystem server: Only directories listed in
argsare accessible. Add more paths if needed. - GitHub server: Ensure your
GITHUB_TOKENhas the required scopes (repo,read:org). - Database servers: Verify the connection string and that the database is running and accepting connections.
Server crashes or hangs?
- Run manually first — Test the server in your terminal to see error output:
npx @modelcontextprotocol/server-filesystem /tmp - Check for port conflicts — Some servers use specific ports that may be in use.
- Update the server —
npm update -g @modelcontextprotocol/server-filesystem - Check memory — Each MCP server is a separate process. Running 10+ simultaneously can use significant memory.
Common error messages?
| Error | Cause | Fix |
|---|---|---|
ENOENT | Command not found | Install Node.js or check the command path |
EACCES | Permission denied | Check file/directory permissions |
ECONNREFUSED | Service not running | Start the database/service the server connects to |
Invalid JSON | Config syntax error | Validate your JSON at jsonlint.com |
spawn UNKNOWN | Path issue on Windows | Use full path to node.exe |
How Does MCP Work with Claude Code (CLI)?
If you use Claude Code (the CLI tool) instead of Claude Desktop, MCP servers are configured differently — in .mcp.json in your project root or via Claude Code settings.
The server format is the same JSON structure, but the config location differs. Claude Code also supports installing MCP servers via plugins. See our guide: Claude Plugins: Everything You Need to Know.
What Should You Set Up Next?
Once you're comfortable with basic MCP servers, explore these popular options from our catalog:
- Puppeteer MCP Server (82K+ stars) — Automate browser interactions for testing
- Context7 (51K+ stars) — Give Claude access to up-to-date library documentation
- Chrome DevTools MCP (33K+ stars) — Debug web apps from Claude
- Slack MCP Server — Send messages and manage channels from Claude
- Notion MCP Server — Read and write to your Notion workspace
Or learn how to build your own: How to Build an MCP Server.
Browse all available servers in our MCP server catalog — sorted by popularity, freshness, and platform support.
Need help choosing? Check our Best MCP Servers in 2026 guide for curated recommendations.