跳到主要内容

MCP 说明

本文档解释 MCP 的作用、工作机制和配置结构,帮助你快速判断“什么时候该用 MCP”。

什么是 MCP(先看结论)

MCP(Model Context Protocol)是让 AI 连接外部工具和数据源的协议。

一句话:Skill 负责“怎么做”,MCP 负责“连到哪里拿数据、调用什么工具”。

MCP 解决什么问题

如果没有 MCP,AI 常见限制是:

  • 只能基于当前对话内容回答
  • 无法稳定访问外部系统(如 GitHub、数据库、搜索)
  • 工具接入方式分散,难以复用

有了 MCP 后:

  • AI 可以通过标准协议访问外部能力
  • 工具接入方式统一,便于迁移与维护
  • 多个 AI 工具可共享同一套外部连接配置

MCP 怎么工作(工作机制)

典型流程:

  1. Host 中配置 MCP Server(本地或远程)
  2. Host 内置的 Client 读取配置并建立连接
  3. AI 在任务中发现需要外部数据或操作
  4. 通过 MCP 调用对应工具能力
  5. 返回结果并继续推理或生成输出

你可以把 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(启动命令、envurl、传输方式)。

原因是很多工具已经内置了 Host + Client,所以日常只会显式接触到 Server 配置。

常见产品对应关系:

你看到的产品/组件在 MCP 中更接近的角色说明
CursorHost你通常在 Cursor 里配置 MCP;它内部带有 Client
Claude DesktopHost你操作的是桌面应用本身;MCP 连接由内置 Client 完成
Codex CLIHost终端工具作为宿主承载 AI 能力,内部可集成 Client
Cursor/Claude Desktop 内部的 MCP 实现Client负责读取配置、连接 Server、发起协议调用
GitHub MCP ServerServer对外提供 GitHub 相关 tools/resources/prompts
Postgres MCP ServerServer对外提供数据库查询或诊断能力

补充说明:

  • “终端”通常不是 MCP 协议里的独立核心角色
  • 终端型 AI 工具更常见是作为 Host,内部再实现 Client

MCP 的官方传输类型

目前官方 MCP 标准传输主要有两类:

  1. stdio
  2. Streamable HTTP

1. stdio

stdio 表示客户端通过启动一个本地进程,并通过标准输入/标准输出与它通信。

特点:

  • 适合本地工具或本机脚本
  • 配置简单,通常只需要 commandargs
  • 不需要额外部署服务
  • 更适合单机开发环境

适用场景:

  • 连接本地文件系统工具
  • 连接本地数据库辅助脚本
  • 连接开发者机器上的 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:服务名称(例如 githubpostgres
  • command / url:连接方式(本地进程或远程服务)
  • args:启动参数
  • env:运行所需环境变量(如 token、endpoint)

常见场景

  • 代码协作:连接 GitHub,读 PR、Issue、仓库信息
  • 数据查询:连接 Postgres/MySQL 做排查与统计
  • 文档检索:连接搜索或知识库服务减少幻觉
  • 本地自动化:连接文件系统/命令工具执行重复任务

与 Skills、Rules 的关系

  • Rules:约束边界(安全、风格、流程)
  • Skills:定义任务方法(步骤、检查点)
  • MCP:提供外部能力(数据源与工具调用)

三者配合后,AI 才能做到:做得对(Rules)、做得稳(Skills)、做得到(MCP)

实践建议

  • 先接入最小必要的 MCP Server,避免上下文噪音
  • 敏感信息统一放环境变量,不写死在配置里
  • 对高风险能力(写库、删改)设置明确的确认流程
  • 定期清理不再使用的 MCP 连接,降低维护成本