Skip to content

MCP Servers: 20+ Pre-Built Servers for AI Agents

The MCP ecosystem has hundreds of pre-built servers. Here are the most useful ones, organized by category. All official servers are maintained by Anthropic and are production-ready. Community servers vary in maturity but cover many specialized use cases.

Official Servers (by Anthropic)

These are maintained by Anthropic and are production-ready.

ServerPackageWhat it does
Filesystem@modelcontextprotocol/server-filesystemRead/write local files
GitHub@modelcontextprotocol/server-githubRepos, issues, PRs, commits
PostgreSQL@modelcontextprotocol/server-postgresQuery PostgreSQL databases
SQLite@modelcontextprotocol/server-sqliteQuery SQLite databases
Brave Search@modelcontextprotocol/server-brave-searchWeb search via Brave API
Fetch@modelcontextprotocol/server-fetchHTTP requests / web scraping
Memory@modelcontextprotocol/server-memoryPersistent key-value memory
Puppeteer@modelcontextprotocol/server-puppeteerBrowser automation
Slack@modelcontextprotocol/server-slackRead/post Slack messages
Google Drive@modelcontextprotocol/server-gdriveAccess Google Drive files
Google Maps@modelcontextprotocol/server-google-mapsMaps, directions, places

Filesystem Server

The filesystem server is the most commonly used server for development workflows. It allows Claude to read, write, and navigate files within a specified directory.

You control what the server can access by specifying allowed directories in the config:

{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/you/projects/my-project"
]
}
}
}

The path argument restricts the server to that directory and its subdirectories. The model can’t access files outside the allowed path, which is an important security property.

GitHub Server

The GitHub server connects Claude to GitHub’s API. Useful for code review workflows, issue management, and repository exploration.

{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": { "GITHUB_TOKEN": "ghp_your_token_here" }
}
}
}

The GITHUB_TOKEN should be a fine-grained personal access token with only the permissions your workflow needs. For read-only workflows, grant only read access to repositories and issues. Don’t use a token with write access to all repositories if you only need to read from one.

PostgreSQL Server

Connects Claude to a PostgreSQL database for natural language queries and data exploration.

{
"mcpServers": {
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres"],
"env": {
"POSTGRES_URL": "postgresql://user:password@localhost:5432/mydb"
}
}
}
}

For production databases, use a read-only database user for the MCP server connection. This prevents accidental data modification through the AI interface. Never give the MCP server credentials with administrative privileges.

Memory Server

The memory server provides persistent key-value storage across sessions. Unlike conversation history (which is session-scoped), memory server data persists indefinitely.

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

Claude can store and retrieve facts using this server. Useful for workflows where the agent needs to remember context from previous sessions — user preferences, project-specific facts, or ongoing task state.

Community Servers

ServerWhat it does
PlaywrightBrowser automation (alternative to Puppeteer)
LinearProject management (issues, cycles, projects)
JiraJira issue tracking
NotionRead/write Notion pages and databases
StripePayment information and transactions
CloudflareWorkers, KV, D1, R2 management
AWSS3, Lambda, EC2 operations
DockerContainer management
kubectlKubernetes cluster management

Community servers vary in quality and maintenance status. Before adding a community server to a production workflow, review its source code (it will have access to your data and credentials), check when it was last updated, and verify it handles errors gracefully.

Installing a Server

All Node.js-based servers can be run with npx (no installation required):

Terminal window
# Test a server directly
npx -y @modelcontextprotocol/server-filesystem /tmp

For Python-based servers:

Terminal window
pip install mcp-server-name
python -m mcp_server_name

The npx -y flag installs the package temporarily and runs it without prompting. This is convenient for trying servers out, but for production environments you may want to pin to a specific version:

{
"command": "npx",
"args": ["-y", "@modelcontextprotocol/[email protected]", "/path/to/dir"]
}

Pinning versions prevents unexpected behavior changes when a server package updates.

Config Examples

Full Development Setup

A config that provides filesystem access, GitHub integration, persistent memory, and web search:

{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "."]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": { "GITHUB_TOKEN": "ghp_..." }
},
"memory": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-memory"]
},
"brave-search": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-brave-search"],
"env": { "BRAVE_API_KEY": "BSA..." }
}
}
}

This setup gives Claude access to the current directory’s files, GitHub, persistent memory, and web search — a comprehensive toolkit for software development tasks.

Data Analysis Setup

Focused on data exploration with SQLite and filesystem access:

{
"mcpServers": {
"sqlite": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-sqlite", "data.db"]
},
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "./data"]
}
}
}

The filesystem server is restricted to the ./data directory, and the SQLite server connects to data.db. Claude can explore the data files and query the database to answer analytical questions.

Minimal Research Setup

Just web search for research-focused workflows:

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

brave-search finds relevant pages, fetch reads the full content of those pages. Together they give Claude the ability to research topics by finding and reading web content.

Choosing Which Servers to Add

More servers means more tools available to the model, which can sometimes lead to tool selection confusion — the model may pick the wrong tool for a task when many similar tools are available. Add servers based on what the workflow actually needs, not speculatively.

For each server you add, consider:

  • What does this enable? Be specific about the workflows that benefit.
  • What are the security implications? Every server you add is another attack surface for prompt injection.
  • Does it need to be always-on? Some servers are useful occasionally but don’t need to be in your default config.

Finding More Servers

  • Official registry: The MCP GitHub organization lists maintained servers
  • Community: Search npm for mcp-server-* and PyPI for mcp-server-*
  • Build your own: See Building MCP Servers