What Is an MCP Server? Local vs Remote, Examples and Setup
What is an MCP server? A program that gives AI apps tools and data over the Model Context Protocol. Local vs remote servers, popular examples, setup and safety.
An MCP server is a program that exposes tools, data and prompts to AI applications through the Model Context Protocol (MCP). The AI app (Claude, ChatGPT, Cursor, VS Code and others) connects to the server, reads the list of what it offers, and lets the model call those tools, for example "search issues", "query the database" or "take a screenshot". One server works with every MCP-compatible app, so the integration is written once.
If you are new to the protocol itself, start with what is MCP. This page is about the server side: what a server actually contains, the difference between local and remote servers, well-known examples, how to install one and how to choose one you can trust.
What an MCP server does
A server is an adapter. On one side it talks to something real: a SaaS API, a database, your filesystem, a browser, a design tool. On the other side it speaks MCP, a JSON-RPC 2.0 protocol that every compatible host understands. In between it decides which operations to offer and how to describe them so a language model can use them correctly.
Concretely, a server can expose three primitives:
- Tools: functions the model can call, each with a name, a description and a JSON Schema for its arguments. The GitHub server offers tools to read files, open pull requests and search issues; a Postgres server offers a tool to run SQL.
- Resources: read-only data with a URI, which the host can attach as context. Examples are a file, a table schema or a log.
- Prompts: templates a user starts on purpose, often shown as slash commands, such as a code review checklist.
Most servers are mostly tools. Our resources vs tools guide explains when a server should use each.
A server also describes itself. In the current spec revision (2026-07-28) every server must answer server/discover, which returns its supported protocol versions, its capabilities and an optional instructions string telling the model how to use it well. The wire-level details are in how does MCP work.
What a server does not do
A server never sees the whole conversation and never talks to other servers. The host (the AI app) decides what to send it and asks the user before running tools. That separation is a core design principle of MCP: servers stay small and focused, and the host enforces consent.
Local vs remote MCP servers
Every server uses one of two standard transports, and that choice shapes how you install, secure and share it.
| Local server (stdio) | Remote server (Streamable HTTP) | |
|---|---|---|
| Where it runs | A subprocess the host launches on your machine | On the vendor's or your own infrastructure, at a URL |
| How you add it | A command, e.g. npx -y some-package | A URL, e.g. https://mcp.example.com/mcp |
| Auth | Environment variables or local credentials | OAuth sign-in in the browser, or a header token |
| Good for | Files, local git, browsers, dev databases, desktop apps | SaaS tools (GitHub, Notion, Sentry, Linear), team-wide servers |
| Updates | You update the package | The vendor updates it for you |
| Main risk | Runs with your user permissions | You trust the vendor with the data the tools touch |
Rule of thumb: if the thing you want lives on your computer (files, a local browser, Blender), use a local server. If it is a cloud product, prefer the vendor's official remote server, because you get OAuth instead of a long-lived API key and you never have to update anything. The remote MCP servers guide lists the major hosted endpoints, and deploy an MCP server covers hosting your own.
The legacy HTTP+SSE transport (URLs ending in /sse) is deprecated. Many clients still fall back to it, but new servers should use Streamable HTTP; see SSE vs Streamable HTTP.
Popular MCP server examples
These are widely used servers listed on MCP.so, grouped by job:
| Category | Server | What the model can do |
|---|---|---|
| Code | GitHub MCP Server | Read repos, manage issues and PRs, check Actions runs |
| Browser | Playwright MCP | Open pages, click, fill forms, read the accessibility tree |
| Docs | Context7 | Fetch current, version-specific library documentation |
| Files | Filesystem | Read, write and search files inside folders you allow |
| Data | Supabase, Postgres MCP Pro | Inspect schemas, run queries, manage projects |
| Design | Figma (Framelink) | Pull layout and style data from Figma frames into code |
| Errors | Sentry | Look up issues, stack traces and releases |
| Work | Notion, Linear, Slack | Search and update pages, tickets and messages |
| Reasoning | Sequential Thinking, Memory | Structured step-by-step thinking, persistent knowledge graph |
| Search | Exa, Firecrawl | Web search and page scraping built for agents |
Filesystem, Memory and Sequential Thinking are reference servers maintained in the official modelcontextprotocol/servers repository. Our best MCP servers list goes deeper, and the full catalog is in the MCP.so directory and by category.
How to install an MCP server
The steps depend on the host, but there are only two shapes.
A remote server needs only its URL. In Claude Code (docs):
claude mcp add --transport http notion https://mcp.notion.com/mcp
Then run /mcp inside Claude Code to sign in with OAuth. In Claude Desktop or claude.ai, remote servers are added as a custom connector under Settings, Connectors (guide).
A local server needs a command. In Claude Code, everything after -- is the command to run, and --env passes credentials:
claude mcp add --env AIRTABLE_API_KEY=YOUR_KEY --transport stdio airtable \
-- npx -y airtable-mcp-server
Apps that use a JSON config file share almost the same format. This is the official filesystem example for claude_desktop_config.json (quickstart); Cursor reads the same mcpServers shape from .cursor/mcp.json or ~/.cursor/mcp.json:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/username/Desktop"
]
}
}
}
The trailing paths are the only folders the server may touch. Restart the app after editing the file. Step-by-step guides by host: Claude Code, Claude Desktop, Cursor, VS Code, ChatGPT and Codex. Generic steps for any client are in set up an MCP server.
If it does not connect
- Local server never starts: run the exact command in a terminal first. Missing Node.js or Python, a wrong absolute path, or a typo in the package name are the usual causes.
- Remote server returns 401: you have not finished OAuth, or the token expired. Re-run the sign-in flow from the host.
- Tools do not appear: restart the host, then check its MCP panel or logs. You can also connect the server to the MCP Inspector and see exactly what it returns.
How to pick a safe MCP server
A server can read whatever its credentials allow, and its tool descriptions go straight into the model's context. The spec's security principles say tool descriptions should be treated as untrusted unless they come from a trusted server, and hosts must ask before running tools. Before installing, check:
- Publisher. Prefer servers from the vendor itself (GitHub, Sentry, Notion, Supabase) or from the official reference repo. On MCP.so, look for "Official" in the name and a linked source repo.
- Source and activity. Open source, recent commits, real issues being answered. Be wary of a brand-new package that copies a popular name.
- Scope of access. Use read-only tokens or modes where offered, limit filesystem servers to one project folder, and give database servers a role without write rights unless you need them.
- Auth method. OAuth on a remote server beats a long-lived personal token pasted into a config file.
- Tool approval. Keep your host's confirmation prompts on for anything that writes, sends or deletes.
- Pinning. For local packages, pin a version instead of always pulling
@latest, so a compromised update cannot change tool behavior silently.
Prompt injection through web pages, issues or emails that the server reads is the most common real-world risk. Our MCP security best practices covers it in depth.
Do you need to build your own?
Only if no existing server covers your system. If you do, the official SDKs make it small: a Python server with one tool is about ten lines, and a TypeScript one not much more. Start with build an MCP server or the Python MCP server tutorial, and see are MCP servers free for what hosted servers cost.
Next steps
Browse the MCP.so server directory, filter by category, and pick a client to connect it to. If you want to know what happens on the wire once it is connected, read how does MCP work.
Frequently asked questions
What is an MCP server used for?
- An MCP server gives an AI app access to a specific system, such as GitHub, a database, a browser or your files, by exposing tools, resources and prompts the model can use. It lets the assistant read real data and take actions instead of only generating text.
What is the difference between a local and a remote MCP server?
- A local server runs on your machine as a subprocess over stdio and usually reads credentials from environment variables. A remote server is hosted at a URL, uses the Streamable HTTP transport and typically signs you in with OAuth.
Are MCP servers safe to install?
- They are as safe as their publisher and the permissions you give them. Prefer official servers from the vendor, use read-only or narrowly scoped credentials, keep tool approval prompts on, and pin package versions for local servers.
Do I need to code to use an MCP server?
- No. Most servers are added with a single command or a short JSON config entry in your AI app, or by pasting a URL for remote servers. Coding is only needed if you want to build your own server.