MCP 说明
本文档解释 MCP 的作用、工作机制和配置结构,帮助你快速判断“什么时候该用 MCP”。
什么是 MCP(先看结论)
MCP(Model Context Protocol)是让 AI 连接外部工具和数据源的协议。
一句话:Skill 负责“怎么做”,MCP 负责“连到哪里拿数据、调用什么工具”。
MCP 解决什么问题
如果没有 MCP,AI 常见限制是:
- 只能基于当前对话内容回答
- 无法稳定访问外部系统(如 GitHub、数据库、搜索)
- 工具接入方式分散,难以复用
有了 MCP 后:
- AI 可以通过标准协议访问外部能力
- 工具接入方式统一,便于迁移与维护
- 多个 AI 工具可共享同一套外部连接配置
MCP 怎么工作(工作机制)
典型流程:
- 在
Host中配置 MCP Server(本地或远程) Host内置的Client读取配置并建立连接- AI 在任务中发现需要外部数据或操作
- 通过 MCP 调用对应工具能力
- 返回结果并继续推理或生成输出
你可以把 MCP 理解为“AI 的工具总线”。
MCP 角色划分(避免术语混淆)
MCP 通常需要区分三个角色:
Host:承载 AI 功能的应用(如 IDE、桌面客户端、终端工具)- 例如
Cursor、Claude Desktop、Codex CLI 这类应用本身通常就是Host
- 例如
Client:MCP 客户端,负责连接 MCP Server 并发起协议调用- 例如
Cursor内部实现的 MCP 客户端、Claude Desktop 内部的 MCP 客户端;它通常内置在Host中,而不是单独暴露给用户
- 例如
Server:MCP 服务端,对外提供 tools/resources/prompts 等能力
常见链路:
Host -> Client -> Server
实践中你“配置 MCP”时,大多数是在配置 Server(启动命令、env、url、传输方式)。
原因是很多工具已经内置了 Host + Client,所以日常只会显式接触到 Server 配置。
常见产品对应关系:
| 你看到的产品/组件 | 在 MCP 中更接近的角色 | 说明 |
|---|---|---|
Cursor | Host | 你通常在 Cursor 里配置 MCP;它内部带有 Client |
Claude Desktop | Host | 你操作的是桌面应用本身;MCP 连接由内置 Client 完成 |
Codex CLI | Host | 终端工具作为宿主承载 AI 能力,内部可集成 Client |
Cursor/Claude Desktop 内部的 MCP 实现 | Client | 负责读取配置、连接 Server、发起协议调用 |
GitHub MCP Server | Server | 对外提供 GitHub 相关 tools/resources/prompts |
Postgres MCP Server | Server | 对外提供数据库查询或诊断能力 |
补充说明:
- “终端”通常不是 MCP 协议里的独立核心角色
- 终端型 AI 工具更常见是作为
Host,内部再实现Client
MCP 的官方传输类型
目前官方 MCP 标准传输主要有两类:
stdioStreamable HTTP
1. stdio
stdio 表示客户端通过启动一个本地进程,并通过标准输入/标准输出与它通信。
特点:
- 适合本地工具或本机脚本
- 配置简单,通常只需要
command和args - 不需要额外部署服务
- 更适合单机开发环境
适用场景:
- 连接本地文件系统工具
- 连接本地数据库辅助脚本
- 连接开发者机器上的 CLI 工具
2. Streamable HTTP
Streamable HTTP 表示客户端通过 HTTP 连接一个远程或本地可访问的 MCP Server。
特点:
- 适合远程共享服务
- 更适合团队统一接入
- 便于集中部署、鉴权和运维
- 适合多客户端复用同一个 MCP Server
适用场景:
- 团队统一接入 GitHub、知识库、数据库网关
- 需要集中权限控制和审计
- 需要多台机器或多个 AI 客户端共享同一服务
什么时候该用哪一个
- 如果工具只在你本机使用,而且启动方式就是一个命令,优先用
stdio - 如果工具要给多人复用,或者需要统一部署与权限管理,优先用
Streamable HTTP - 如果你只是本地开发、验证原型,先用
stdio往往更快 - 如果你准备把 MCP 能力沉淀为团队基础设施,应该优先考虑
Streamable HTTP
可以简单理解为:
stdio= 本地进程型Streamable HTTP= 服务型
MCP 配置结构(概念模型)
不同 Host 的配置格式不完全一致,但其内置 Client 使用的核心元素通常一致:
mcpServers:
<server-name>:
command/url: <how to connect>
args: <startup args>
env: <credentials and config>
关键字段说明:
server-name:服务名称(例如github、postgres)command/url:连接方式(本地进程或远程服务)args:启动参数env:运行所需环境变量(如 token、endpoint)
常见场景
- 代码协作:连接 GitHub,读 PR、Issue、仓库信息
- 数据查询:连接 Postgres/MySQL 做排查与统计
- 文档检索:连接搜索或知识库服务减少幻觉
- 本地自动化:连接文件系统/命令工具执行重复任务
与 Skills、Rules 的关系
Rules:约束边界(安全、风格、流程)Skills:定义任务方法(步骤、检查点)MCP:提供外部能力(数据源与工具调用)
三者配合后,AI 才能做到:做得对(Rules)、做得稳(Skills)、做得到(MCP)。
实践建议
- 先接入最小必要的 MCP Server,避免上下文噪音
- 敏感信息统一放环境变量,不写死在配置里
- 对高风险能力(写库、删改)设置明确的确认流程
- 定期清理不再使用的 MCP 连接,降低维护成本