MCP Start Guide
Everything you need to connect Claude to external systems using the Model Context Protocol — from installing community servers to building your own.
What Are MCP Servers?
MCP (Model Context Protocol) servers are lightweight programs that expose external capabilities to Claude through a standardized protocol. They act as a bridge between Claude and the outside world — giving it the ability to read files, query databases, call APIs, search the web, and interact with any external system in real time.
What MCP servers can provide
Callable functions that Claude can invoke — running shell commands, writing files, sending API requests, or querying a database.
File-like data that Claude can read — documents, database records, API responses, or any structured content exposed as a URI.
Reusable prompt templates that users can invoke through slash commands in Claude Desktop and other MCP clients.
MCP vs Skills: Skills provide procedural knowledge and workflows that live in your project. MCP servers connect Claude to live external systems in real time. Use Skills for repeatable reasoning patterns; use MCP for live data and actions.
How MCP Works
MCP uses a client-server model over a local connection. The MCP client (built into Claude Desktop or Claude Code) connects to one or more MCP servers you configure. Each server runs as a separate process on your machine.
When a task requires external data or an action, Claude calls a tool exposed by a connected MCP server.
The server executes the requested operation — querying a database, calling an API, reading a file — and returns structured results.
The response is added to Claude's context. Claude reasons over the live data and continues the conversation.
Installation: Claude Desktop
Claude Desktop reads MCP server configuration from a JSON file on your machine. Edit the file, add your servers, and restart Claude Desktop.
Config file location
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/yourname/Documents"
]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_your_token_here"
}
}
}
}Each key under mcpServers is a display name for the server (you choose it).
command is the executable to run (e.g. npx, python, node, or a path to a binary).
Restart Claude Desktop after editing the config file for changes to take effect.
Installation: Claude Code
Claude Code supports MCP servers via the claude mcp command or a project-level config file.
# Add an npm-based MCP server claude mcp add filesystem npx @modelcontextprotocol/server-filesystem /path/to/dir # Add with environment variables claude mcp add github \ -e GITHUB_PERSONAL_ACCESS_TOKEN=ghp_token \ npx @modelcontextprotocol/server-github # List configured servers claude mcp list # Remove a server claude mcp remove filesystem
{
"mcpServers": {
"postgres": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-postgres",
"postgresql://localhost/mydb"
]
}
}
}Tip: Commit .mcp.json to your repository so the whole team shares the same MCP server configuration automatically.
Popular MCP Servers to Try
These official reference servers are maintained by the MCP team and are a great starting point.
Filesystem
Read and write files on your local filesystem securely
@modelcontextprotocol/server-filesystemGitHub
Search repositories, read code, and interact with the GitHub API
@modelcontextprotocol/server-githubBrave Search
Web and local search powered by the Brave Search API
@modelcontextprotocol/server-brave-searchPostgreSQL
Connect Claude to a PostgreSQL database for schema inspection and queries
@modelcontextprotocol/server-postgresPuppeteer
Browser automation and web scraping via a headless Chromium browser
@modelcontextprotocol/server-puppeteerSlack
Search messages, list channels, and post to Slack workspaces
@modelcontextprotocol/server-slackBuild Your Own MCP Server
The official SDKs make it straightforward to expose any function, data source, or API as an MCP server. Both TypeScript and Python are supported.
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
const server = new McpServer({ name: "my-server", version: "1.0.0" });
// Register a tool
server.tool(
"get_weather",
"Get current weather for a city",
{ city: z.string().describe("City name") },
async ({ city }) => {
// Your logic here
const data = await fetchWeather(city);
return { content: [{ type: "text", text: JSON.stringify(data) }] };
}
);
// Start listening on stdio
const transport = new StdioServerTransport();
await server.connect(transport);from mcp.server.fastmcp import FastMCP
mcp = FastMCP("my-server")
@mcp.tool()
def get_weather(city: str) -> str:
"""Get current weather for a city."""
data = fetch_weather(city) # your logic here
return str(data)
if __name__ == "__main__":
mcp.run()1. Install the SDK
npm i @modelcontextprotocol/sdk or pip install mcp
2. Expose your logic
Register tools with clear names and descriptions so Claude knows when to call them.
3. Add to config
Point Claude Desktop or Claude Code at your server binary via the config file or claude mcp add.
Resources
Official Documentation
Official introduction to the Model Context Protocol and its design goals
Get a server running in minutes with the official quickstart guide
Official repository of reference MCP server implementations
Step-by-step guide to connecting MCP servers to Claude Desktop
Ready to explore MCP servers?
Browse our curated collection of MCP servers across every category — or submit one you built.