Back to Guides

Setting Up MCP Servers

Connect Claude Code to external tools and services using the Model Context Protocol

intermediate
30 min
mcpintegrationtoolsservers

Setting Up MCP Servers

The Model Context Protocol (MCP) lets Claude Code interact with external tools and services.

Configuration Location

# Settings file location
~/.claude/settings.json

Adding an MCP Server

1. Open settings

# Edit directly or use Claude Code
claude settings

2. Add server configuration

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/dir"]
    }
  }
}

Popular MCP Servers

GitHub Integration

{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "<your-token>"
      }
    }
  }
}

PostgreSQL Database

{
  "mcpServers": {
    "postgres": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-postgres", "postgresql://user:pass@localhost/db"]
    }
  }
}

Puppeteer Browser Control

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

Brave Search

{
  "mcpServers": {
    "brave-search": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-brave-search"],
      "env": {
        "BRAVE_API_KEY": "<your-api-key>"
      }
    }
  }
}

Multiple Servers

You can run multiple MCP servers simultaneously:

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/projects"]
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "<token>"
      }
    },
    "postgres": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-postgres", "postgresql://localhost/mydb"]
    }
  }
}

Environment Variables

Sensitive data should use environment variables:

{
  "mcpServers": {
    "myserver": {
      "command": "npx",
      "args": ["-y", "@my/mcp-server"],
      "env": {
        "API_KEY": "$MY_API_KEY",
        "SECRET": "$MY_SECRET"
      }
    }
  }
}

Verifying Connection

After adding a server:

  1. Restart Claude Code
  2. Ask Claude what tools are available
  3. Test a simple operation

Troubleshooting

Server not starting

  • Check if the package exists: npx -y @package/name --help
  • Verify paths are absolute
  • Check environment variables are set

Permission errors

  • Ensure file paths are accessible
  • Check API tokens have required scopes

Connection issues

  • Restart Claude Code after config changes
  • Check server logs in ~/.claude/logs/

Security Considerations

  • Only enable servers you trust
  • Use minimal permissions (read-only when possible)
  • Rotate API keys regularly
  • Review server source code for sensitive operations