Agent 开发

MCP 协议是什么?解决什么问题?和 Function Calling 什么关系?

91学AI·2026/7/26·15 阅读

考察点

面试官想看你是否理解 MCP 的分层定位:它解决的是工具供给侧的标准化,而不是模型怎么调工具。能不能说清它和 Function Calling 是不同层的东西、实践中如何串联,是这道题的分水岭。追问常往「你自己写过 MCP server 吗」「stdio 和 HTTP 两种传输各适合什么场景」「安全风险有哪些」走。

参考答案

MCP 解决什么问题

MCP(Model Context Protocol)是 Anthropic 在 2024 年 11 月开源的开放协议。它解决的是经典的 M×N 集成问题:M 个 LLM 应用要接 N 个工具/数据源,没有标准协议就得写 M×N 个适配器,每个应用各自实现一套 GitHub 集成、一套数据库集成,重复且碎片化。有了 MCP,工具方只需实现一次 MCP server,任何支持 MCP 的 client——Claude Desktop、Cursor、Claude Code 等——都能即插即用。行业里常拿它类比 USB-C,我更愿意类比 LSP:LSP 之前每个编辑器要给每种语言写插件,之后语言方实现一个 server 就通吃,MCP 对工具生态做的是同一件事。

值得注意的是 MCP 标准化的不只是 tools,还包括 resources(可读取的数据,如文件、数据库记录)、prompts(预置提示模板)、sampling(server 反向请求 client 帮忙调一次模型)、roots(告诉 server 可访问的文件系统边界)等原语,目标是覆盖「给模型补上下文」的完整链路。

协议架构

架构是经典的 client-server:host 是 LLM 应用本身,client 住在 host 里,server 是工具提供方。传输层有两种:stdio——client 把 server 拉成本地子进程,JSON-RPC 消息走标准输入输出,适合本地工具;以及 Streamable HTTP——远程部署的 server 走 HTTP,早期版本的 HTTP+SSE 传输方式已经被它取代。消息格式是 JSON-RPC 2.0,生命周期从 initialize 握手开始,双方协商协议版本和能力集,之后就是 tools/listtools/call 这类方法调用。远程 server 的鉴权走 OAuth。

和 Function Calling 的关系

这是最容易被问倒、也最容易答错的地方:两者是不同层的东西,不是竞品。

Function Calling 是模型 API 的能力:你在请求里把 tools 的 schema(名称、描述、参数 JSON Schema)传给模型,模型在输出里给出结构化的调用意图,真正执行的是客户端代码。它回答的问题是「模型怎么表达它想调用一个工具」。

MCP 回答的问题是「工具怎么被发现、被描述、被执行」——工具供给侧的标准化。实践中两者是串联的:client 启动后从 MCP server 拉 tools/list,把结果转换成模型要求的 function calling schema 喂进上下文;模型返回 tool_call 后,client 把调用转发给对应的 MCP server 执行,拿到结果再回灌给模型继续推理。所以「MCP 替代了 function calling」是个流行误解——MCP 底下通常仍然靠模型的 tool-use 能力驱动,它替代的是每个应用手写工具集成的那部分脏活。

工程实践

写 server 用官方 SDK 就行,Python 生态常用 FastMCP,声明 tool 时给 name、description、inputSchema。几个要点是踩过坑才懂的:description 是模型选工具的唯一依据,要写清楚「什么时候该用、参数什么含义」,写得含糊模型就会选错或乱填参数;错误要按协议结构化返回(isError 标记加错误内容),而不是抛异常让整个 server 进程挂掉;返回大结果时要截断或分页,不然一次调用把上下文塞爆。stdio 模式还有个经典坑:server 代码里随手 print 调试信息会污染 stdout,直接破坏 JSON-RPC 通信。另外,一个 agent 挂几十上百个工具时,schema 本身占掉大量上下文、模型选错率明显上升,需要按任务场景动态过滤下发工具子集。

可能的追问

  • MCP 和当年的 OpenAI Plugins 有什么区别? Plugins 是绑定 ChatGPT 的封闭生态,MCP 是跨厂商的开放协议,server 一次实现、任意兼容 client 可用,这是它能活下来的关键。
  • MCP 有什么安全风险? 最典型的是工具投毒——恶意 server 在 tool description 里藏注入指令诱导模型泄密;还有远程 server 的鉴权和权限粒度问题。缓解靠工具来源白名单、敏感操作前用户确认。
  • A2A 和 MCP 什么关系? A2A 是 Google 推的 agent 对 agent 协作协议,解决 agent 之间派任务;MCP 解决 agent 对工具的调用,两者互补而非竞争。

评论 (0)

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

91学AI

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