Setting up an MCP server in 2026 takes minutes, not days. The protocol is stable, the client support is broad, and the registry of pre-built servers covers most common tools. This guide walks you through real setup from config file to first tool call.
What changed in 2026
- Claude Desktop ships with MCP support out of the box. No flags or beta opt-ins needed.
- Cursor, Zed, and VS Code Copilot all support MCP. One server config works across all three.
- The official MCP registry at mcp.run lists hundreds of servers with one-line install commands.
- SSE transport is now stable, making it practical to run a shared MCP server for a team rather than per-developer installations.
The config file
MCP clients read server definitions from a JSON config. For Claude Desktop on macOS, the path is ~/Library/Application Support/Claude/claude_desktop_config.json.
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_..."
}
},
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres",
"postgresql://localhost/mydb"]
},
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem",
"/Users/yourname/projects"]
}
}
}
Restart Claude Desktop and the servers appear in the tool list automatically.
Popular servers and what they expose
| Server |
Install |
Tools available |
@mcp/server-github |
npx |
list_repos, create_pr, read_file, search_code |
@mcp/server-postgres |
npx |
query, list_tables, describe_table |
@mcp/server-filesystem |
npx |
read_file, write_file, list_directory |
@mcp/server-slack |
npx |
post_message, list_channels, search_messages |
mcp-server-sqlite |
pip |
execute_query, list_tables |
Configuring for Cursor
In Cursor, open Settings → MCP and paste the same JSON object (the mcpServers value). Cursor picks up the servers and surfaces them in the agent panel.
// ~/.cursor/mcp.json (or via Settings UI)
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_..." }
}
}
}
Running an SSE server for team use
For teams, run one MCP server as an SSE endpoint so everyone connects to the same instance:
# Install and run a postgres SSE server
pip install mcp-server-postgres
mcp-server-postgres --transport sse --port 8080 \
--connection-string "postgresql://prod-db/myapp"
Each team member's config points to the SSE URL instead of a subprocess:
{
"mcpServers": {
"postgres": {
"url": "http://mcp.internal:8080/sse"
}
}
}
How to start
- Identify the tool you need — GitHub, a database, internal docs.
- Search the registry —
mcp.run or npm search @modelcontextprotocol.
- Add the server block to your client config JSON.
- Set environment variables for credentials — never hardcode tokens.
- Restart the client and verify the server appears in the tool list.
- Test with a read-only call first before granting write permissions.
Common mistakes
Hardcoding credentials in the config. Use environment variables or a secrets manager. The config JSON ends up in dotfiles repos.
Granting filesystem access to your entire home directory. Scope the path argument to only the directories the model needs.
Running SSE servers on public endpoints without auth. Add API key middleware or run behind a VPN. MCP tools can have significant write access.
Not restarting the client after config changes. MCP servers are launched at client startup. Config changes require a restart.
Ignoring server error logs. MCP servers write to stderr; your client may suppress it. Run the server manually with npx ... 2>&1 to see errors.
What to skip
- Wrapping every internal API as MCP on day one. Start with the tool that saves the most context-switching.
- Rolling your own transport. stdio and SSE cover every real use case — custom transports add maintenance with no benefit.
FAQ
Can I run multiple MCP servers at once?
Yes. Each entry in mcpServers is an independent process. You can run ten servers simultaneously with no conflict.
Are MCP servers stateful?
stdio servers live for the duration of the client session. SSE servers are persistent processes. Both can maintain in-process state between calls.
How do I debug a broken server?
Run the server binary directly in a terminal and send JSON-RPC payloads manually. All MCP SDK servers log to stderr by default.
Is there a cost to using MCP servers?
The protocol itself is free. Some hosted MCP endpoints (Stripe, Notion) may use your API quota. Running local servers has no marginal cost.
Where to go next