guides · featured

MCP Servers Explained — Model Context Protocol Guide

What are MCP servers, how the Model Context Protocol works, and why it matters for AI agents. Covers installation, configuration for Claude Desktop and Cursor, and the most useful MCP servers in 2026.
by cache.directory updated Sep 10, 2026 CC-BY-4.0

## what it does

What is MCP?

The Model Context Protocol (MCP) is an open standard for connecting AI applications to external systems — data sources, tools, and workflows. Per modelcontextprotocol.io, it is the USB-C port for AI applications: one standardized interface that any client can speak to any server.

The live index is the MCP Registry API. It is paginated (the first page returned 30 servers with a nextCursor at fetch time) and the count goes stale in days — we do not cite a headline number here. Browse the registry or a curated shortlist at Best MCP servers.

Why MCP Matters

Before MCP, connecting an AI to your tools meant custom code for every integration. MCP standardizes this:

Without MCPWith MCP
Custom API wrappers per toolStandard protocol, any tool
Different auth for eachUnified configuration
Works with one AI onlyWorks with Claude, ChatGPT, VS Code, Cursor, etc.
Fragile, breaks on updatesVersioned, stable interface

How MCP Works

Your AI (Claude, ChatGPT, VS Code, Cursor, etc.)
    ↕ MCP Protocol (JSON-RPC over stdio or streamable HTTP)
MCP Server (runs locally or remote)
    ↕ Native API
External Service (GitHub, Slack, Database, etc.)

An MCP server exposes tools (functions the AI can call), resources (data the AI can read), and prompts (templates the AI can use). Anthropic’s building effective agents post calls tools the agent-computer interface (ACI) — apply the same care to a tool definition as you would to an HCI.

Getting Started

Step 1: Install an MCP Client

MCP clients are the AI tools that connect to servers. The modelcontextprotocol.io site lists broad ecosystem support — Claude, ChatGPT, Visual Studio Code, Cursor, MCPJam, and others.

ClientMCP SupportNotes
Claude DesktopFullOfficial Anthropic client
Claude CodeFullCLI-based, auto-discovers servers
CursorFullIDE integration
VS CodeFullBuilt-in MCP support in Copilot chat
ChatGPTFullOpenAI MCP API docs
ClineFullVS Code extension
WindsurfPartialGrowing support

Step 2: Configure a Server

Example: Adding the GitHub MCP Server to Claude Desktop:

// ~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@github/github-mcp-server"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_your_token"
      }
    }
  }
}

Restart Claude Desktop — the GitHub tools now appear in your conversation.

Step 3: Use It

Just ask Claude naturally:

  • “Search my GitHub repos for authentication bugs”
  • “Create an issue in the frontend repo about the login bug”
  • “Show me the last 5 commits on main”

Claude calls the MCP tools automatically.

Common MCP Servers

Stars and version numbers move; check the Registry API for live data. The list below is a shortlist of categories worth searching the registry for:

CategoryWhat it covers
Developer toolsGit hosts, file systems, SQL/NoSQL DBs, Docker, search
ProductivityNotion, Slack, Google Drive, Jira, Linear
Cloud & infraAWS, Azure, Stripe, Supabase, Cloudflare
Browsing & scrapingHeadless browser, structured extraction

Browse the registry or our best-mcp-servers shortlist. For each one, fetch the server’s own README before installing — packaging, transport (stdio vs streamable HTTP), and auth vary.

Building Your Own MCP Server

MCP servers can be built in any language. The fastest path:

// TypeScript MCP server in ~20 lines
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";

const server = new McpServer({ name: "my-server", version: "1.0.0" });

server.tool("get_weather", { city: z.string() }, async ({ city }) => {
  const data = await fetch(`https://api.weather.com/${city}`);
  return { content: [{ type: "text", text: JSON.stringify(data) }] };
});

const transport = new StdioServerTransport();
await server.connect(transport);

See the modelcontextprotocol.io build-server docs for the current SDK and transport options.

## embed this badge

cache ✓ in cache.directory
![cached](https://cache.directory/badge/mcp-servers-explained.svg)