什么是 MCP Server?本地与远程、示例与安装
什么是 MCP Server?它是通过 Model Context Protocol 为 AI 应用提供工具和数据的程序。本文讲解本地与远程服务器、热门示例、安装方法与安全选择。
MCP Server(MCP 服务器)是一个通过 Model Context Protocol(MCP)向 AI 应用暴露工具、数据和提示词的程序。 AI 应用(Claude、ChatGPT、Cursor、VS Code 等)连接到服务器,读取它提供的能力列表,然后让模型调用这些工具,例如"搜索 issue"、"查询数据库"或"截图"。一个服务器可以在所有兼容 MCP 的应用中使用,所以集成只需要写一次。
如果你对协议本身还不熟悉,建议先读 什么是 MCP。本文聚焦服务器端:服务器里到底有什么、本地服务器和远程服务器的区别、知名示例、如何安装,以及如何挑选值得信任的服务器。
MCP Server 是做什么的
服务器就是一个适配器。它的一端连接真实的东西:SaaS API、数据库、你的文件系统、浏览器、设计工具。另一端说的是 MCP,一种基于 JSON-RPC 2.0 的协议,所有兼容的宿主(Host)都能理解。在两者之间,服务器决定提供哪些操作,以及如何描述它们,让语言模型能正确使用。
具体来说,一个服务器可以暴露三种 原语(primitives):
- Tools(工具):模型可以调用的函数,每个工具都有名称、描述,以及描述参数的 JSON Schema。GitHub 服务器提供读取文件、创建 Pull Request、搜索 issue 等工具;Postgres 服务器提供执行 SQL 的工具。
- Resources(资源):带 URI 的只读数据,宿主可以把它作为上下文附加进来。例如一个文件、一张表的 schema 或一段日志。
- Prompts(提示词):由用户主动启动的模板,通常以斜杠命令的形式出现,比如一份代码审查清单。
大多数服务器的主体都是工具。我们的 Resources 与 Tools 对比指南 解释了服务器在什么情况下该用哪一种。
服务器还会自我描述。在当前的规范版本(2026-07-28)中,每个服务器都必须响应 server/discover,返回它支持的协议版本、它的能力(capabilities),以及一个可选的 instructions 字符串,告诉模型如何更好地使用它。线路层面的细节见 MCP 是如何工作的。
服务器不做什么
服务器永远看不到完整的对话,也从不与其他服务器通信。由宿主(AI 应用)决定发什么给它,并在运行工具前征求用户同意。这种隔离是 MCP 的核心 设计原则 之一:服务器保持小而专注,由宿主负责执行用户授权。
本地 MCP Server 与远程 MCP Server
每个服务器都使用两种标准 传输方式(transports) 之一,这个选择决定了你如何安装、保护和共享它。
| 本地服务器(stdio) | 远程服务器(Streamable HTTP) | |
|---|---|---|
| 运行位置 | 宿主在你电脑上启动的子进程 | 在厂商或你自己的基础设施上,通过 URL 访问 |
| 添加方式 | 一条命令,例如 npx -y some-package | 一个 URL,例如 https://mcp.example.com/mcp |
| 认证 | 环境变量或本地凭据 | 在浏览器中完成 OAuth 登录,或使用请求头 token |
| 适用场景 | 文件、本地 git、浏览器、开发数据库、桌面应用 | SaaS 工具(GitHub、Notion、Sentry、Linear)、团队共享服务器 |
| 更新 | 你自己更新软件包 | 厂商替你更新 |
| 主要风险 | 以你的用户权限运行 | 你需要信任厂商处理工具涉及的数据 |
经验法则:如果你要用的东西在你自己的电脑上(文件、本地浏览器、Blender),就用本地服务器。如果它是云产品,优先使用厂商官方的远程服务器,因为你得到的是 OAuth 而不是长期有效的 API key,而且永远不需要自己更新。远程 MCP 服务器指南 列出了主要的托管端点,部署 MCP 服务器 则介绍了如何自行托管。
旧版的 HTTP+SSE 传输(URL 以 /sse 结尾)已被弃用。很多客户端仍然会回退到它,但新服务器应当使用 Streamable HTTP;详见 SSE 与 Streamable HTTP。
热门 MCP Server 示例
以下是 MCP.so 上收录的常用服务器,按用途分组:
| 类别 | 服务器 | 模型能做什么 |
|---|---|---|
| 代码 | GitHub MCP Server | 读取仓库、管理 issue 和 PR、查看 Actions 运行情况 |
| 浏览器 | Playwright MCP | 打开页面、点击、填写表单、读取无障碍树 |
| 文档 | Context7 | 获取最新的、特定版本的库文档 |
| 文件 | Filesystem | 在你允许的文件夹内读取、写入和搜索文件 |
| 数据 | Supabase、Postgres MCP Pro | 查看 schema、执行查询、管理项目 |
| 设计 | Figma (Framelink) | 把 Figma 画框中的布局和样式数据拉进代码 |
| 错误监控 | Sentry | 查询 issue、堆栈跟踪和发布版本 |
| 协作 | Notion、Linear、Slack | 搜索和更新页面、工单和消息 |
| 推理 | Sequential Thinking、Memory | 结构化的逐步思考、持久化的知识图谱 |
| 搜索 | Exa、Firecrawl | 专为 Agent 打造的网页搜索与页面抓取 |
Filesystem、Memory 和 Sequential Thinking 是官方 modelcontextprotocol/servers 仓库维护的参考服务器。我们的 最佳 MCP 服务器 清单介绍得更深入,完整目录见 MCP.so 目录 和 分类。
如何安装 MCP Server
具体步骤取决于宿主,但形式只有两种。
远程服务器 只需要它的 URL。在 Claude Code 中(文档):
claude mcp add --transport http notion https://mcp.notion.com/mcp
然后在 Claude Code 中运行 /mcp,通过 OAuth 登录。在 Claude Desktop 或 claude.ai 中,远程服务器以自定义连接器(custom connector)的形式添加,位置在 Settings → Connectors(指南)。
本地服务器 需要一条命令。在 Claude Code 中,-- 之后的所有内容都是要运行的命令,--env 用来传入凭据:
claude mcp add --env AIRTABLE_API_KEY=YOUR_KEY --transport stdio airtable \
-- npx -y airtable-mcp-server
使用 JSON 配置文件的应用格式几乎相同。下面是官方针对 claude_desktop_config.json 的 filesystem 示例(快速入门);Cursor 也从 .cursor/mcp.json 或 ~/.cursor/mcp.json 读取同样的 mcpServers 结构:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/username/Desktop"
]
}
}
}
末尾的路径就是服务器唯一可以访问的文件夹。编辑文件后重启应用。各宿主的分步指南:Claude Code、Claude Desktop、Cursor、VS Code、ChatGPT 和 Codex。适用于任何客户端的通用步骤见 设置 MCP 服务器。
如果连接不上
- 本地服务器始终无法启动:先在终端里原样运行这条命令。常见原因是没装 Node.js 或 Python、绝对路径写错,或者包名拼错。
- 远程服务器返回 401:你还没完成 OAuth,或者 token 已过期。在宿主中重新走一遍登录流程。
- 工具没有出现:重启宿主,然后查看它的 MCP 面板或日志。你也可以把服务器连到 MCP Inspector,直接看它到底返回了什么。
如何挑选安全的 MCP Server
服务器可以读取其凭据允许访问的一切,而它的工具描述会直接进入模型的上下文。规范中的 安全原则 指出:除非来自可信服务器,否则工具描述应被视为不可信;并且宿主在运行工具前必须征得用户同意。安装前请检查:
- 发布者。 优先选择厂商自己发布的服务器(GitHub、Sentry、Notion、Supabase),或官方参考仓库中的服务器。在 MCP.so 上,留意名称中带有"Official"且附有源码仓库链接的条目。
- 源码与活跃度。 开源、近期有提交、真实的 issue 有人回复。警惕那些模仿热门名称的全新软件包。
- 访问范围。 能用只读 token 或只读模式就用;把 filesystem 服务器限制在一个项目文件夹内;除非确实需要,给数据库服务器分配没有写权限的角色。
- 认证方式。 远程服务器上的 OAuth 胜过粘贴到配置文件里的长期个人 token。
- 工具审批。 对任何会写入、发送或删除的操作,保持宿主的确认提示处于开启状态。
- 版本锁定。 对本地软件包,锁定具体版本,而不是每次都拉取
@latest,这样被攻破的更新就无法悄无声息地改变工具行为。
通过服务器读取的网页、issue 或邮件进行的提示词注入,是现实中最常见的风险。我们的 MCP 安全最佳实践 对此有深入讲解。
需要自己构建吗?
只有当现有服务器都覆盖不了你的系统时才需要。如果确实要做,官方 SDK 让它变得很简单:一个只有一个工具的 Python 服务器大约十行代码,TypeScript 版本也多不了多少。可以从 构建 MCP 服务器 或 Python MCP 服务器教程 开始;托管服务器的费用请看 MCP 服务器是免费的吗。
下一步
浏览 MCP.so 服务器目录,按 分类 筛选,再挑一个 客户端 连接它。如果你想知道连接后线路上发生了什么,请阅读 MCP 是如何工作的。
常见问题
MCP Server 是用来做什么的?
- MCP Server 通过暴露模型可用的工具、资源和提示词,让 AI 应用接入某个具体系统,比如 GitHub、数据库、浏览器或本地文件。这样助手就能读取真实数据并执行操作,而不只是生成文字。
本地 MCP Server 和远程 MCP Server 有什么区别?
- 本地 Server 作为子进程在你的电脑上通过 stdio 运行,通常从环境变量读取凭证。远程 Server 部署在一个 URL 上,使用 Streamable HTTP 传输,一般通过 OAuth 登录。
安装 MCP Server 安全吗?
- 安全程度取决于发布者和你给它的权限。优先使用厂商官方的 Server,使用只读或权限范围小的凭证,保持工具调用确认弹窗开启,本地 Server 要锁定包版本。
使用 MCP Server 需要写代码吗?
- 不需要。大多数 Server 只需在 AI 应用里执行一条命令或添加一小段 JSON 配置,远程 Server 粘贴 URL 即可。只有想自己开发 Server 时才需要写代码。