精选·工具调用与协议

MCP 是什么?Host、Client、Server 三角色的架构怎么理解?

91学AI·2026/7/13·6 阅读

考察点

字节、腾讯、百度的 Agent 岗一面都考过这道。面试官想确认你理解 MCP 不只是「一个工具协议」,而是有明确角色划分的客户端-服务端架构。高频追问:「Host 和 Client 是同一个东西吗」「Tools 和 Resources 为什么不能合并」。

参考答案

三角色各干什么

MCP(Model Context Protocol,Anthropic 2024 年底开源)把工具接入拆成三个角色:

  • Host(宿主):跑模型的那个应用本身,比如 Claude Desktop、Cursor、你自己写的 Agent 服务。它持有 LLM,决定什么时候需要工具,统筹整个会话。
  • Client(客户端):Host 内部的协议连接器,一个 Client 对一个 Server 保持一条独立的会话连接,负责协议握手、能力协商、消息收发。它是 Host 的内部组件,不是独立部署的东西。
  • Server(服务端):轻量进程或服务,向外暴露具体能力——查数据库的 Server、操作 Git 的 Server、读文件系统的 Server,各管一摊。

用比喻说:Host 是大脑,Client 是每根神经,Server 是各个器官。大脑通过神经控制器官,神经只管传输不管决策。

为什么要拆 Host 和 Client

这是最常见的追问。拆开解决两个问题:一是一对多,一个 Host 要同时接 10 个 Server,每个连接有独立的生命周期和能力集,必须每连接一个 Client 实例来隔离状态;二是安全边界,Client 是唯一和 Server 说话的组件,鉴权、消息校验、敏感信息过滤都可以收敛在这一层,Server 之间互相看不到对方的连接和数据。

Server 暴露的三类原语

  • Tools:模型可以调用的函数,有副作用或计算逻辑,对应 Function Calling 里的工具。
  • Resources:可读取的数据,比如文件内容、数据库表结构、日志。由应用侧决定什么时候读,类似只读的上下文注入源。
  • Prompts:预定义的 Prompt 模板,Server 把「这类数据该怎么分析」的最佳实践打包成模板提供给 Host。

Tools 和 Resources 不合并是有道理的:模型自主决策的粒度(Tool)和应用/用户控制的粒度(Resource)不同,混成一个「能力」就没法做权限和触发策略的区分——Resource 读取通常不需要模型介入,Tool 调用必须经过模型决策或用户确认。

一次调用的完整链路

Host 启动时为每个配置的 Server 拉起一个 Client 连接,握手时 Server 上报自己有哪些 Tools/Resources/Prompts;Host 把 Tools 转换成模型能理解的 Function Calling schema 随对话发给模型;模型返回 tool_calls 后,Host 找到对应 Client 发 tools/call 请求;Server 执行并返回结果;结果经 Host 回填给模型。可以看到,MCP 并没有取代 Function Calling,它规范的是「工具从哪来、怎么调」这一段,模型侧仍然走标准 FC。

可能的追问

  • Client 和 Server 是一对一还是一对多? 严格一对一,每个 Server 一条连接。好处是单个 Server 崩溃、重连不影响其他工具链路。
  • MCP 和插件机制(如早期 OpenAI Plugins)有什么区别? 插件是各厂商私有规范、应用绑定;MCP 是开放协议,Server 写一次可以被任何支持 MCP 的 Host 复用,生态不锁定。
  • Server 能反向调用 Host 吗? 协议支持 Server 发起采样(sampling)请求让 Host 的模型帮忙生成内容,也支持日志和进度通知,但主导权始终在 Host 手里。

评论 (0)

暂无评论,快来抢沙发吧!

91学AI

© 2026 91学AI · 按岗位学 AI 与大数据. All rights reserved.