Officially Maintained Servers
Anthropic maintains the following Servers with stable, documented quality — ready for production without additional vetting.
Installation
Official Servers are published to npm. Two ways to connect:
# Option A: npx (no install, good for quick testing)
npx @modelcontextprotocol/server-filesystem /path/to/allowed-dir
# Option B: global install
npm install -g @modelcontextprotocol/server-filesystem
Claude Code configuration (in .claude/settings.json):
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/project"]
}
}
}
Filesystem — Local File Operations
Package: @modelcontextprotocol/server-filesystem
Tools:
| Tool | Function |
|---|---|
read_file |
Read file contents |
read_multiple_files |
Batch read files |
write_file |
Write file contents |
edit_file |
Precise string replacement in files |
create_directory |
Create directories |
list_directory |
List directory contents |
directory_tree |
Recursive directory structure |
move_file |
Move or rename files |
search_files |
Search by glob pattern |
get_file_info |
File metadata (size, modification time) |
Use cases: Agent reads and writes local project files. Generated code written directly to disk. Code repository Q&A.
Note: You must declare allowed directories at startup. The Server never accesses paths outside those boundaries.
GitHub — Repository Management
Package: @modelcontextprotocol/server-github
Env: GITHUB_PERSONAL_ACCESS_TOKEN
Key tools (partial):
create_or_update_file Create or update repository files
search_repositories Search repositories
create_repository Create new repository
get_file_contents Read file contents (including history)
push_files Batch commit multiple files
create_issue Create Issue
create_pull_request Create Pull Request
fork_repository Fork repository
create_branch Create branch
Use cases: Agent manages PRs and Issues directly. Automated code commits. Repository analysis.
PostgreSQL — Database Queries
Package: @modelcontextprotocol/server-postgres
Configuration:
{
"mcpServers": {
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres",
"postgresql://user:password@localhost:5432/mydb"]
}
}
}
Tool: query (executes SELECT queries; read-only to prevent accidental writes)
Resource: postgres://<host>/<db>/schema — database schema, readable by the LLM for automatic SQL generation
Use cases: Natural language to SQL. Data analysis. Business queries.
Brave Search — Web Search
Package: @modelcontextprotocol/server-brave-search
Env: BRAVE_API_KEY (register at Brave Search API)
Tools:
| Tool | Function |
|---|---|
brave_web_search |
General web search, returns title/description/URL |
brave_local_search |
Local business search (restaurants, locations) |
Use cases: Agent queries real-time information. Free tier available.
Fetch — HTTP Requests
Package: @modelcontextprotocol/server-fetch
Tool: fetch (HTTP GET, returns cleaned page content)
The Server converts HTML to Markdown automatically, removing ads and navigation elements. Token-efficient.
Use cases: Agent scrapes web content. Reads API documentation. Lightweight alternative to full Web Agent page fetching.
Memory — Knowledge Graph
Package: @modelcontextprotocol/server-memory
Tools:
create_entities Create entity nodes (people, places, concepts)
create_relations Link entities with typed relationships
add_observations Attach facts/observations to entities
delete_entities Remove entities
delete_relations Remove relationships
search_nodes Semantic search across entities
open_nodes Read entity details
read_graph Read the full knowledge graph
Use cases: Cross-session memory (Agent remembers user preferences and project context). Lightweight personal knowledge base.
Other Official Servers
| Server | Function | Use Case |
|---|---|---|
server-puppeteer |
Browser automation (screenshot, click, form) | E2E testing, web scraping |
server-slack |
Slack message and channel management | Work notifications, automation |
server-gdrive |
Google Drive file reading and search | Enterprise document access |
Community Server Picks
Production-ready community Servers, organized by category.
Databases
| Server | Database | Notes |
|---|---|---|
mcp-server-sqlite |
SQLite | Local database, good for development |
mcp-mysql |
MySQL | Query + Schema reading |
mcp-server-qdrant |
Qdrant vector DB | Semantic search, RAG retrieval |
mcp-server-redis |
Redis | Cache management, key-value operations |
Code and Dev Tools
| Server | Function | Notes |
|---|---|---|
codebase-memory-mcp |
Codebase memory | Symbol index + semantic search; covered in the Codebase Knowledge Base series |
mcp-server-git |
Git operations | log, diff, blame, branch management |
mcp-server-docker |
Docker management | Containers, images, networks |
mcp-server-kubernetes |
K8s cluster | Pod management, log queries |
Enterprise Integrations
| Server | Platform | Coverage |
|---|---|---|
mcp-server-jira |
Jira | Ticket search, create, update |
mcp-server-confluence |
Confluence | Page reading, search |
mcp-server-linear |
Linear | Issue management, sprints |
mcp-server-notion |
Notion | Page read/write, database queries |
AI / Knowledge
| Server | Function | Notes |
|---|---|---|
mcp-ragflow |
RAGflow knowledge base | Connects to RAGflow retrieval API |
mcp-server-langfuse |
Langfuse observability | Trace recording, evaluation score reading |
Evaluating MCP Server Quality
Community Servers vary widely. Check five dimensions before using one in production.
Dimension 1: Schema Description Quality
A tool's description and parameter descriptions determine whether the LLM invokes it correctly.
// ❌ Too vague — LLM doesn't know when or how to use it
{
"name": "search",
"description": "Search for items"
}
// ✅ Precise — includes trigger conditions and parameter context
{
"name": "search_jira",
"description": "Search Jira tickets by keyword. Use when the user asks about bugs, tasks, or issues. Returns title, status, priority, and assignee.",
"inputSchema": {
"properties": {
"query": {
"type": "string",
"description": "Search keywords. Supports JQL like 'project = PROJ AND status = Open'"
}
}
}
}
How to check: Connect to the Server with demo_protocol_client.py (Article 02 demo) and inspect the tools/list response. Read the descriptions as if you were the LLM.
Dimension 2: Error Handling
Tool failures should return isError: true with a meaningful message so the LLM understands what went wrong.
// ✅ Good error handling
{
"content": [{"type": "text", "text": "Jira auth failed: API token invalid or expired. Check JIRA_API_TOKEN."}],
"isError": true
}
// ❌ Bad — Server crashes, empty output, or swallows the error silently
Dimension 3: Security Design
- Authentication credentials via environment variables, never hardcoded
- Input parameters have type validation
- Dangerous operations (writes, deletes) have explicit permission declarations or confirmation steps
Dimension 4: Maintenance Status
- GitHub: commits in the last 3 months
- Issues get responses (not a silent accumulation)
- README explains installation and configuration
Dimension 5: Tested Against Real Use Cases
Run 5 of your actual use cases against the Server. The LLM correctly understands and calls the tools. Tool responses come back in formats the LLM handles well. Documented behavior matches actual behavior.
Getting Started
First MCP integration:
# 1. Install Node.js if needed
# 2. Add Filesystem Server to Claude Code or Claude Desktop
# 3. Test: ask Claude to read a file
# .claude/settings.json
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem",
"/your/project/path"]
}
}
}
Choosing your first business Server:
Pick one Server that matches your most common workflow and actually use it — more valuable than configuring ten Servers you never invoke.
References
Check out PrimeSkills — a curated marketplace of AI agents and skills that have been validated in real-world, enterprise-grade workflows. No fluff, just what actually works.
Find more useful knowledge and interesting products on my Homepage
Top comments (0)