Published on September 10, 2026
15 best MCP servers for developers in 2026: from code to production
Over 1,200 MCP servers exist today, but roughly 15% expose security flaws. These 15 verified servers run in Claude, Cursor, and VS Code.
Connect an LLM to your development environment through the Model Context Protocol. Stop copying terminal logs, database dumps, or staging URLs into prompt windows. An MCP server executes targeted queries over standard JSON-RPC and feeds structured data back to your client.
Over 1,200 public MCP servers exist across PulseMCP and the official registry. Roughly 15% fail basic security audits, exposing arbitrary command execution or directory traversal. These 15 servers survive production work across Claude Desktop, Cursor, VS Code, and headless agents. Each entry includes its client configuration snippet, its main use case, and a concrete security rule.
why 1,200 servers is a problem (not a triumph)
Anthropic published the Model Context Protocol in late 2024. Teams responded by wrapping internal APIs and local utilities in stdio servers. By mid-2026, public registries cataloged more than 1,200 servers.
Quality control did not keep pace. A local MCP server runs as a child process of your editor, inheriting user permissions and environment variables. When an unvetted server accepts an unvalidated file path from an LLM prompt, an attacker using prompt injection on a web page can trigger file overwrites or read environment variables.
In a benchmark audit of 500 community servers conducted with the open-source Bawbel Scanner in May 2026, 15.3% exposed high-severity flaws: unescaped shell invocations, unrestricted directory traversal, or persistent state writes outside the repository root. Curating installed servers protects your development machine.
how to vet a server before giving it keys
Run every candidate server through this checklist before adding it to your editor configuration:
- Transport isolation: Pick
stdioservers that take argument arrays. Reject servers that run commands through shell strings (sh -c). If you usestreamable-httporssetransports, mandate authentication tokens over TLS. - Path scoping: Constrain filesystem servers to your specific workspace directory (such as
/home/user/project) instead of root (/). - Read-only access: Connect databases and cloud infrastructure with read-only roles (
--read-only) until a specific task requires write mutations.
{
"mcpServers": {
"safe-server": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/home/dev/workspace"],
"env": {}
}
}
}the 15 servers that survived my tests
These 15 servers conform to current protocol revisions (2025-11-25+) and support both Claude Desktop and Cursor.
1. Microsoft Playwright MCP: browser automation via accessibility trees
Web scrapers that feed screenshots to vision models burn tokens and misclick buttons. The Microsoft Playwright MCP controls Chromium through the browser accessibility tree (ARIA snapshots). The model reads semantic roles, inputs, and buttons instead of raw pixels, providing deterministic navigation.
- Primary use case: End-to-end testing, logging into staging environments, and verifying UI state after frontend edits.
- Client config:
"playwright": {
"command": "npx",
"args": ["-y", "@executeautomation/playwright-mcp-server"]
}- Security note: Run in headless mode. Never pass production session cookies into the automated browser context.
2. GitHub MCP Server (@modelcontextprotocol/server-github)
The official GitHub server lets your assistant fork repositories, create pull requests, inspect diffs, and read issue threads from your editor.
- Primary use case: Generating pull request descriptions, reviewing cross-repo dependencies, and triaging customer bug reports.
- Client config:
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_yourPersonalAccessTokenHere"
}
}- Security note: Use fine-grained personal access tokens scoped to designated repositories, granting access only to issues and pull requests.
3. PostgreSQL MCP Server (@modelcontextprotocol/server-postgres)
Enables real-time schema inspection, execution plans, and query analysis against PostgreSQL instances.
- Primary use case: Authoring SQL migrations against real schemas and indexes instead of outdated ORM models.
- Client config:
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres", "postgresql://readonly_user:password@localhost:5432/app_dev"]
}- Security note: Connect using a read-only role (
GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly_user). Reserve write connections for manual migrations.
4. Microsoft SQL Server MCP (sql-server-mcp)
Connects editors to Azure SQL, on-premise MSSQL instances, and enterprise databases.
- Primary use case: Inspecting stored procedures, generating T-SQL analytical queries, and analyzing slow execution plans.
- Client config:
"mssql": {
"command": "npx",
"args": ["-y", "mcp-server-mssql"],
"env": {
"SQL_SERVER": "localhost",
"SQL_DATABASE": "WarehouseDB",
"SQL_USER": "ai_reader",
"SQL_PASSWORD": "StrongPassword123!"
}
}- Security note: Block dynamic data masking overrides. Enforce bounded SQL logins with read-only view permissions.
5. Filesystem MCP Server (@modelcontextprotocol/server-filesystem)
Anthropic's reference filesystem server provides structured file reads, directory listings, and patch edits.
- Primary use case: Granting desktop clients access to local project files without manual file uploads.
- Client config:
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/home/developer/projects/my-app"
]
}- Security note: Do not pass
/or$HOMEas allowed paths. Restrict the arguments to the target repository.
6. Brave Search MCP Server (@modelcontextprotocol/server-brave-search)
Runs web searches through Brave's independent index without browser automation overhead.
- Primary use case: Retrieving current API documentation, release notes, and breaking changes during development.
- Client config:
"brave-search": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-brave-search"],
"env": {
"BRAVE_API_KEY": "BSA_yourApiKeyHere"
}
}- Security note: Treat web snippets as untrusted text. External pages can contain prompt injections designed to hijack agent execution.
7. Readwise MCP (readwise-mcp)
Queries book highlights, article notes, and technical papers stored in Readwise Reader.
- Primary use case: Finding saved passages on systems architecture and inserting cited quotes into technical specifications.
- Client config:
"readwise": {
"command": "npx",
"args": ["-y", "readwise-mcp"],
"env": {
"READWISE_TOKEN": "your_readwise_access_token"
}
}- Security note: Highlights often store proprietary notes. Exclude your personal token from shared project configs.
8. Kapso MCP: WhatsApp integration for support agents
Released in mid-2026, Kapso MCP connects an AI agent to a WhatsApp Business number, exposing tools for message listeners and replies.
- Primary use case: Building autonomous support bots and on-call notification pipelines on WhatsApp.
- Client config:
"kapso": {
"command": "npx",
"args": ["-y", "kapso-mcp"],
"env": {
"KAPSO_API_KEY": "kp_live_secretKey",
"KAPSO_PHONE_NUMBER_ID": "1009283746152"
}
}- Security note: Enforce message rate limits and require approval triggers before broadcasting to external phone numbers.
9. Slack MCP Server (@modelcontextprotocol/server-slack)
Allows your assistant to read threads, search channel history, and post build updates.
- Primary use case: Reviewing incident discussion threads and retrieving decisions made in engineering channels.
- Client config:
"slack": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-slack"],
"env": {
"SLACK_BOT_TOKEN": "xoxb-your-bot-token",
"SLACK_TEAM_ID": "T0123456789"
}
}- Security note: Restrict OAuth scopes to
channels:historyandchannels:read. Never assign workspace admin privileges to an AI integration token.
10. Self-Hosted Qdrant Enterprise Knowledge MCP
Executes vector search against internal engineering documentation, Jira tickets, and architecture decision records.
- Primary use case: Searching private code guidelines and internal postmortems without sending proprietary text to cloud vector services.
- Client config:
"qdrant-knowledge": {
"command": "python3",
"args": ["-m", "mcp_server_qdrant", "--collection", "engineering_docs"],
"env": {
"QDRANT_URL": "http://127.0.0.1:6333",
"QDRANT_API_KEY": "local_dev_key"
}
}- Security note: Host Qdrant inside a private network. Do not expose its REST or gRPC ports to the public internet without mTLS.
11. Flutter & Dart MCP (flutter-mcp)
Connects to the Flutter VM Service protocol on active mobile and desktop development targets.
- Primary use case: Inspecting widget trees, triggering hot reloads, and reading layout overflow errors directly inside the chat window.
- Client config:
"flutter": {
"command": "dart",
"args": ["run", "flutter_mcp_server", "--vm-service-port=8181"]
}- Security note: The VM Service permits arbitrary code evaluation. Bind it to
127.0.0.1and terminate the debug service when finished.
12. Docker & Container MCP Server
Exposes tools to inspect running containers, read service logs, and diagnose crash states.
- Primary use case: Diagnosing exit code 137 (OOMKilled) inside staging containers without context-switching between terminal windows.
- Client config:
"docker": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-docker"]
}- Security note: Connect to a non-root socket proxy that blocks destructive commands such as
container prune -fand volume deletions.
13. Fetch MCP Server (@modelcontextprotocol/server-fetch)
Converts web pages and online documentation into token-efficient Markdown.
- Primary use case: Pulling library documentation and GitHub markdown files into prompt context during refactoring.
- Client config:
"fetch": {
"command": "uvx",
"args": ["mcp-server-fetch"]
}- Security note: Block private address ranges (
169.254.169.254,127.0.0.1,[::1]) to eliminate Server-Side Request Forgery risks.
14. Sequential Thinking & Memory MCP (@modelcontextprotocol/server-memory)
Maintains an on-disk knowledge graph across sessions, storing entities, relations, and past debugging resolutions.
- Primary use case: Preserving project conventions and debugging history across separate chat sessions.
- Client config:
"memory": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-memory"]
}- Security note: The memory graph writes to a JSON file. Store this file on an encrypted partition.
15. Bawbel Scanner MCP: security auditing for installed tools
An auditing server that inspects installed MCP configurations, tests argument sanitization, and flags command injection risks.
- Primary use case: Running automated security scans over your
.cursor/mcp.jsonbefore activating new community servers. - Client config:
"bawbel-scanner": {
"command": "npx",
"args": ["-y", "bawbel-mcp-scanner", "--audit-local"]
}- Security note: Update the scanner rules regularly to catch newly discovered CVE signatures.
wiring it all up in claude and cursor without tears
The Model Context Protocol decouples tool servers from editor interfaces. A single JSON definition works across clients with small path adjustments.
| Client | Configuration Path | Syntax Format |
|---|---|---|
| Claude Desktop (macOS) | ~/Library/Application Support/Claude/claude_desktop_config.json | {"mcpServers": { ... }} |
| Claude Desktop (Linux) | ~/.config/Claude/claude_desktop_config.json | {"mcpServers": { ... }} |
| Cursor (Project) | .cursor/mcp.json (repository root) | {"mcpServers": { ... }} |
| Cursor (Global) | Settings → Features → MCP | Graphical / JSON editor |
| VS Code / Roo Code | ~/.vscode/mcp_settings.json | {"mcpServers": { ... }} |
Pin package versions in your npx or uvx arguments (@modelcontextprotocol/server-filesystem@0.6.2) to prevent unexpected upstream breaking changes and slow startup downloads.
three ways developers shoot themselves in the foot with mcp
Avoid these three configuration errors:
- Context bloat from unused tools: Exposing 15 servers with 80 total tools to every query consumes over 4,000 tokens before you type your prompt. Keep a base configuration of three core servers (Filesystem, Git, Search), enabling database or browser servers only during specific tasks.
- Committing credentials in dotfiles: Storing raw API tokens in
.cursor/mcp.jsoninside a git repository causes credential leaks. Reference environment variables instead (${BRAVE_API_KEY}) or keep tokens in uncommitted.env.localfiles. - Ignoring silent crashes: When a stdio server process exits unexpectedly, the LLM assumes the tool returned an empty response. Inspect client debug consoles (Command + Option + I in Claude Desktop) to view stderr logs.
what's next (and when to build your own)
Pre-built servers handle common protocols. Specialized productivity gains come from wrapping internal business logic: customer lookups, custom deployment triggers, or proprietary calculations. An internal MCP server gives your assistant access that off-the-shelf tools cannot provide.
For custom MCP servers in Python or TypeScript built with strict security boundaries, hire me for custom MCP development.
Sources
-
Model Context Protocol Specification (2025-11-25) — standard JSON-RPC schema, transport definitions, and security guidelines. https://modelcontextprotocol.io/specification/2025-11-25
-
PulseMCP Directory (Mid-2026 Registry Data) — ecosystem metrics, repository lists, and package statistics. https://www.pulsemcp.com/servers Retrieved June 8, 2026.
-
Microsoft Playwright MCP Server Repository — architecture for accessibility-tree driving and deterministic web automation. https://github.com/microsoft/playwright-mcp Retrieved June 9, 2026.
-
Bawbel Scanner Security Audit Report — empirical vulnerability research across 500 public MCP servers. https://github.com/bawbel/mcp-security-audit-2026 Retrieved June 8, 2026.
-
Official Model Context Protocol GitHub Organization — reference implementations for Filesystem, Postgres, Git, and Fetch servers. https://github.com/modelcontextprotocol/servers