跳到主内容

MCP 是什么入门教程:给大模型装上通用接口的开放协议

100%
MCP 是什么入门教程:给大模型装上通用接口的开放协议

先给结论

MCP(Model Context Protocol,模型上下文协议)是一套让 AI 应用连接外部工具与数据的开放协议,作用是给大模型装上「 USB-C 接口」:一次对接,处处可用。它不绑定任何模型厂商,任何实现了这套协议的服务(称为 MCP 服务器)都能被任何支持 MCP 的客户端发现和调用,你不需要为每个 AI 应用单独写一遍集成代码。

一句话区分:Function Calling 是「模型怎么表达我想调工具」,MCP 是「工具怎么被发现、怎么被连接、怎么被复用」。两者解决的是不同层的问题,不是替代关系。

三个角色:Host 、 Client 、 Server

角色是什么例子
Host(宿主)用户直接使用的 AI 应用Claude Desktop 、 Cursor 、各类 IDE 插件
Client(客户端)Host 内部负责与某一个服务器通信的组件由 Host 实现,用户通常看不到
Server(服务器)对外提供能力的服务程序文件系统、数据库、 GitHub 、地图服务

一个 Host 可以同时连多个 Server,每个连接相互独立。这也是为什么「装了三个 MCP 之后 AI 突然变聪明」——它真的多了三组外部能力。

Server 能提供的三种东西

1. Tools(工具)

模型可以调用的函数,是唯一会改变外部世界的能力。比如「执行 SQL 查询」「创建 GitHub Issue 」「发送文件」。工具调用通常需要用户确认,这是安全边界所在。

2. Resources(资源)

可以被读取的数据,类似「 GET 接口」——读文件、取数据库表结构、拉一份文档。资源是只读的,用于给模型补充上下文。

3. Prompts(提示模板)

服务器预置的提示词模板,用户在客户端里显式选择后触发,用来把「常见任务」标准化。

一次完整调用发生了什么

  1. 初始化握手:客户端连上服务器,双方交换协议版本与各自支持的能力。
  2. 能力发现:客户端请求工具列表,服务器返回所有工具的名称、描述与参数结构(JSON Schema)。
  3. 模型决策:用户提问后,模型结合工具描述判断是否需要调用,需要则生成调用参数。
  4. 执行与回传:客户端调用服务器,服务器执行后把结果作为上下文返回给模型。
  5. 生成回答:模型基于结果组织最终回复。

这里有个关键细节:工具描述的质量直接决定调用是否准确。描述含糊的工具,模型要么不用、要么用错。写工具描述时要像写 API 文档一样具体。

两种传输方式,先记住这个区别

当前标准定义了两种传输:

  • stdio:客户端把服务器当子进程启动,通过标准输入输出交换消息。官方建议客户端尽可能支持它。优点是无网络开销、天然本地、凭证走环境变量即可。铁律是:服务器不能往 stdout 写任何非协议内容,日志必须走 stderr,否则就是随机卡死的元凶。
  • Streamable HTTP:服务器是独立服务,客户端通过 HTTP POST 向单一端点发消息,回复可以是单个 JSON 对象,也可以是请求级的 SSE 流。适合远程部署、多客户端共享。

最小可用配置长什么样

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/dir"],
      "env": {}
    }
  }
}

就这三行:命令、参数、环境变量。改完重启客户端,工具列表里就会多出文件读写能力。

新手最容易踩的三件事
① 路径写错:命令或目录路径不对,表现为「服务器连不上」,先用绝对路径排查。
② 日志污染 stdout:stdio 模式下任何 print / console.log 都会被当成协议帧,轻则被忽略,重则整个响应丢失导致超时。
③ 环境变量没生效:改了配置一定要完全退出再启动客户端,热重载经常不生效。

安全边界,务必先想清楚

  • 工具是能力也是风险:一个能执行 shell 的 MCP 服务器,等于把终端交给了模型,务必限制目录范围。
  • 只装可信来源的服务器:第三方服务器可能读取本地文件或外传数据,安装前看清楚它申请了哪些权限。
  • 远程服务要鉴权:走 HTTP 传输的服务器必须验证来源、做好身份验证,本地服务也应只绑定本机地址。
  • 注意间接提示词注入:模型读到的外部内容里可能藏着指令,凡是「读外部内容 + 调工具」的组合都要有人工确认环节。

相关阅读


MCP 和插件、 Function Calling 是什么关系?
Function Calling 解决模型如何表达调用意图;MCP 解决工具如何被发现、连接和复用,是更外一层的协议。插件通常是某个厂商私有的扩展机制,MCP 是开放的、跨客户端通用。

一定要会写代码才能用 MCP 吗?
不用。使用现成服务器只需要改一段 JSON 配置;写自己的服务器才需要编程,Python 与 TypeScript 都有官方 SDK,入门门槛不高。

MCP 会泄露我的数据吗?
本地 stdio 服务器的数据不出本机,除非它自己去调外部 API 。远程服务器则取决于对方实现,建议只用可信服务,并留意它申请的权限范围。

为什么官方文档说客户端应该优先支持 stdio?
因为它最简单也最安全:无需开放端口、无需处理网络认证,凭证通过环境变量注入,适合访问本地文件与本机服务的绝大多数场景。

这篇有帮助吗?
云上的幻象
云上的幻象查看主页

七彩云博客,分享 WordPress 建站实战与 AI 工具测评,覆盖服务器运维、站长工具、软件资源与电商运营干货,专注原创实用的主题插件、网站加速与安全优化教程。

779文章4评论

相关文章

评论 (0)

欢迎你,新朋友,感谢参与互动!文明发言,理性交流 · 首次评论将在审核后展示