Unrefused

MCP servers

Give agents reach with Model Context Protocol — the curated servers worth running, and what the benchmarks actually say.

The Model Context Protocol is the open standard for connecting agents to tools and data. Your agent runs an MCP client; servers expose tools over stdio or HTTP; the client converts them to OpenAI function format and the loop above just works. Unrefused serves the brain.

The ecosystem has consolidated fast: the official MCP Registry passed 45,000 listings in late 2026, with directories tracking 150,000+ servers. Quality varies wildly — these are the ones with real adoption and real benchmark track records.

The curated directory

ServerOrgWhat it gives your agentStars
github/github-mcp-serverGitHubRepos, issues, PRs, Actions — natural-language repository management. Read-only and toolset-filtered modes.33.7k
microsoft/playwright-mcpMicrosoftBrowser automation over the accessibility tree — the most-downloaded MCP server (28.6M npm downloads/mo).38.4k
ChromeDevTools/chrome-devtools-mcpChromePerformance traces, network inspection, live DOM debugging.53.8k
upstash/context7UpstashUp-to-date library docs injected at call time — kills stale-API hallucinations.63.3k
browser-use/browser-useBrowser UseFull browser control: forms, extraction, bookings.118k
microsoft/markitdownMicrosoftOffice/PDF/image files → markdown an agent can read.190k
netdata/netdataNetdataLive infra metrics, logs, alerts with anomaly detection.81k
modelcontextprotocol/server-*MCP referenceFilesystem, fetch, memory, sequential-thinking — the maintained reference set.reference

Stars measure adoption, not safety. For anything credentialled, prefer servers with scoped auth and start read-only.

Connecting one

typescript
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";

const mcp = new Client({ name: "unrefused-agent", version: "1.0" });
await mcp.connect(new StdioClientTransport({
  command: "npx",
  args: ["-y", "@modelcontextprotocol/server-filesystem", "./workspace"],
}));

const { tools: mcpTools } = await mcp.listTools();
const tools = mcpTools.map((t) => ({
  type: "function",
  function: { name: t.name, description: t.description, parameters: t.inputSchema },
}));
// then: the standard tool-calling loop from /docs/agents

HTTP (Streamable) servers connect the same way with StreamableHTTPClientTransport and auth headers. The official registry is the safe place to discover servers — every listing names its transport and package.

What the benchmarks say

MCP tool use is hard, and the 2025–26 benchmark wave quantified it:

BenchmarkScopeHardest result
MCPMark127 CRUD-heavy tasks across GitHub, Notion, Filesystem, PostgreSQL, Playwright — programmatic verificationBest model 52.56% pass@1; average task needs 16.2 turns and 17.4 tool calls
MCP-Universe6 domains, 11 real servers, execution-based evaluatorsBest model 43.72% (GPT-5); Grok-4 33.3%, Claude-4.0-Sonnet 29.4%
MCP-AgentBench33 servers, 188 tools, 600 queries across complexity tiersOutcome-oriented MCP-Eval methodology

Read that honestly: every frontier model fails most MCP tasks. The differentiators the benchmarks isolate are exactly what this platform sells — long-context tolerance for sprawling traces, unfamiliar-tool reasoning, and not losing turns to refusals mid-loop. Pick your servers from the directory, wire the loop from Agents, and eval before you scale.

Spot an error or a gap? Tell us — and quote x-request-id if you have one.