MCP
Setup Guide
March 2026

Complete MCP Setup Checklist for Developers 2026

Everything you need to configure MCP correctly — prerequisites, installation, config, verification, and common fixes.

March 6, 202610 min read

How to use this checklist

Work through each section in order. Sections 1–3 are one-time setup. Section 4 is done each time you add a new MCP. Sections 5–6 are reference material.

1Prerequisites

Node.js 18+ installed

node --version

Most MCP servers run via npx (Node.js)

npm or yarn installed

npm --version

Python 3.10+ installed (for Python MCP servers)

python --version

Only needed if using Python-based MCP servers

uv installed (for Python MCP servers)

pip install uv

Replaces pip for MCP server execution — faster, isolated

Git installed

git --version

Required by GitHub MCP

2Essential MCPs to Install

Test Filesystem MCP

npx @modelcontextprotocol/server-filesystem ~/Desktop

Should print 'MCP server started'

Test Fetch MCP

npx @modelcontextprotocol/server-fetch

No API key needed

Get GitHub Personal Access Token

github.com/settings/tokens

Scopes: repo, read:org, read:user

Get Brave Search API key

api.search.brave.com

Free tier: 2,000 searches/month

Test GitHub MCP

GITHUB_PERSONAL_ACCESS_TOKEN=xxx npx @modelcontextprotocol/server-github

3Config File Setup

Create config at correct location for your tool

# Claude Code: ~/.claude.json or .claude.json in project
# Cursor: .cursor/mcp.json
# Windsurf: .windsurf/mcp.json
# Claude Desktop: ~/Library/Application Support/Claude/claude_desktop_config.json

Valid JSON with correct structure

{
  "mcpServers": {
    "serverName": {
      "command": "npx",
      "args": ["-y", "package-name"]
    }
  }
}

Validate with jsonlint.com if you get parse errors

Use -y flag with npx

npx -y @modelcontextprotocol/server-filesystem

The -y flag skips the 'install?' prompt — critical for MCP to work

Use absolute paths, not relative

"~/projects"  ✓
"./projects"  ✗

Relative paths cause issues — use full absolute paths

Environment variables in env object, not args

{
  "env": { "MY_KEY": "value" }
}

Never put secrets in args — they appear in process lists

4Verification Steps

Restart your AI tool after config change

# Fully quit and reopen — don't just close the tab

MCP servers load at startup

Check MCP server list in tool settings

# Claude Code: /mcp command
# Cursor: Settings → MCP
# Windsurf: Settings → Extensions → MCP

Test a basic file read

"Read the README.md in the current directory"

If AI can read it, Filesystem MCP is working

Test web search

"Search the web for latest React 19 release notes"

If AI returns current results, Search MCP is working

Check for errors in AI tool logs

# Claude Code: ~/Library/Logs/Claude/
# Cursor: Help → Toggle Developer Tools → Console

Look for connection refused or spawn errors

5Common Issues & Fixes

MCP not showing in tool: check config file path

# Wrong: mcp.json in project root for Claude Code
# Right: ~/.claude.json or .claude.json

Permission denied: check filesystem path exists

ls ~/projects

Directory must exist and be readable

Module not found: run npx manually first

npx @modelcontextprotocol/server-filesystem ~

First run downloads the package; subsequent runs use cache

API key invalid: test it manually

curl -H 'X-Subscription-Token: KEY' 'https://api.search.brave.com/res/v1/web/search?q=test'

Replace KEY with your actual key

Server crashes immediately: check Node.js version

node --version  # Must be 18+

Some servers require Node 20+

6Security Best Practices

Never commit API keys to git

# Add to .gitignore:
.env
.env.local
# Or use env vars from your shell

Limit Filesystem MCP to specific directories

"args": ["-y", "@modelcontextprotocol/server-filesystem", "~/projects/myapp"]

Don't point it at / or ~ — use specific project directories

Use read-only tokens where possible

# GitHub: only select 'Contents: Read' instead of full repo access

Review AI actions before approving in agentic mode

# Check what the AI intends to do before it executes writes

MCP write operations can't always be undone

Quick Reference: Config Locations by Tool

ToolConfig File LocationScope
Claude Code~/.claude.jsonGlobal (all projects)
Claude Code.claude.json in project rootProject-specific
Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.json (Mac)Global
Cursor.cursor/mcp.json in projectProject-specific
Windsurf.windsurf/mcp.json in projectProject-specific
VS Code Copilot.vscode/mcp.json in projectProject-specific
Gemini CLI~/.gemini/config.jsonGlobal
Codex CLI~/.codex/config.jsonGlobal

Build Your MCP Stack

Browse 2,500+ verified MCPs and use our package builder to generate your config.