11. MCP(Model Context Protocol)是什么?它和 Function Calling 有什么关系?
整理 MCP 的基本概念、协议目标及与 Function Calling 的关系。
简单回答
MCP(Model Context Protocol)是 Anthropic 提出的一个开放协议,用于标准化 LLM 与外部工具和数据源的连接方式。可以理解为"LLM 领域的 USB 接口"——不同的 LLM 和不同的工具之间通过统一协议互联互通。Function Calling 定义的是"LLM 怎么调用一个工具",MCP 定义的是"工具怎么注册、发现和连接到 LLM"。两者是互补关系——MCP 在更高的架构层面解决工具生态的连接问题,底层的交互机制可以用 Function Calling 实现。
详细解释
为什么需要 MCP
在 MCP 出现之前,每个 LLM 平台(OpenAI、Anthropic、Google 等)和每个工具(数据库、CRM、日历、代码仓库等)之间的连接是碎片化的。如果你想让 ChatGPT 连接 Slack,需要用 OpenAI 的 Plugin 或 Function Calling 机制做一个专门的集成。如果你想让 Claude 也连 Slack,又要按 Anthropic 的接口重新写一套。N 个模型 × M 个工具 = N × M 种集成,每种都是定制化的。
MCP 的目标是把这个 N × M 问题变成 N + M 问题——所有工具按 MCP 协议暴露能力,所有 LLM 按 MCP 协议消费能力。新增一个工具只需要实现一次 MCP 接口,就能被所有支持 MCP 的 LLM 使用;新增一个 LLM 只需要支持 MCP 协议,就能使用所有已有的 MCP 工具。
MCP 的核心概念
MCP 定义了三个核心角色:Host(宿主应用,如 Claude Desktop、IDE 插件)、Client(MCP 客户端,嵌入在 Host 中)、Server(MCP 服务端,封装具体的工具或数据源)。
MCP Server 暴露三种能力:Tools(工具,Agent 可以调用的操作)、Resources(资源,Agent 可以读取的数据)、Prompts(Prompt 模板,预定义的交互模式)。
Tools 和 Function Calling 中的 function 概念非常相似——都是定义了名称、描述和参数 schema 的可调用操作。区别在于 Function Calling 是 LLM API 层面的机制(定义在 API 请求中),MCP 的 Tools 是独立服务暴露的能力(通过协议发现和注册)。
Resources 是 Function Calling 没有的概念。它代表的是 Agent 可以读取的数据源——比如文件系统中的文件、数据库中的表、API 的端点。Agent 可以列出、读取这些资源,而不需要通过工具调用的方式。
MCP 和 Function Calling 的关系
简单说:Function Calling 是"执行层",MCP 是"连接层"。
Function Calling 解决的是:给定一个工具的定义,LLM 怎么生成正确的调用参数、开发者怎么执行调用、结果怎么返回给 LLM。这是一次工具调用的完整生命周期。
MCP 解决的是:工具怎么注册到系统中、LLM 怎么发现有哪些工具可用、工具的能力怎么描述、多个工具怎么统一管理。这是工具生态的基础设施问题。
实际运行时,一个 MCP Server 通过协议暴露它的 Tools,Host 中的 MCP Client 发现这些 Tools,然后把它们转换成 LLM 理解的 Function/Tool 定义发给 LLM。LLM 通过 Function Calling 机制生成调用请求,Host 通过 MCP Client 把请求转发给对应的 MCP Server 执行。
MCP 的实际应用场景
开发者工具集成——Claude Code 通过 MCP 连接 GitHub、Jira、Linear 等开发工具,让 AI 助手能直接操作代码仓库和项目管理系统。
企业数据连接——通过 MCP 把企业的数据库、CRM、ERP 等系统接入 LLM,让 AI 助手能查询和操作企业内部数据。
本地应用集成——Claude Desktop 通过 MCP 连接本地文件系统、浏览器、日历等应用。
当前状态和局限
MCP 还比较新(2024 年底发布),生态在快速发展中。已经有大量社区开发的 MCP Server(GitHub、Slack、Google Drive、数据库等),但质量参差不齐。协议本身还在演进,一些高级特性(如认证、权限管理、多租户支持)还在完善中。
目前主要在 Anthropic 的产品生态中被原生支持(Claude Desktop、Claude Code),其他 LLM 平台对 MCP 的支持程度各不相同。能否成为行业标准还需要时间验证。
面试时可以这样答
MCP,Model Context Protocol,是 Anthropic 提出的标准化协议,解决的是 LLM 和外部工具的连接问题。可以理解为"LLM 领域的 USB 接口"。
和 Function Calling 的关系是互补的。Function Calling 解决"一次工具调用怎么执行"——LLM 怎么生成参数、开发者怎么执行、结果怎么返回。MCP 解决"工具怎么被发现和连接"——工具怎么注册、LLM 怎么发现可用工具、多个工具怎么统一管理。
MCP 的核心价值是把 N 个模型 × M 个工具的 N × M 集成问题变成 N + M 问题。工具按 MCP 协议暴露能力,LLM 按 MCP 协议消费能力,新增任何一方都只需要实现一次。
目前 MCP 主要在 Anthropic 生态中被原生支持,社区 Server 生态发展很快。能不能成为行业标准还需要时间,但这个方向——标准化 LLM 和工具的连接——是确定有价值的。
常见追问
- MCP 的 Server 是怎么实现的?你有没有自己写过 MCP Server?
- MCP 的安全机制是怎么设计的?认证和权限怎么处理?
- MCP 和 OpenAI 的 Plugin / GPTs 有什么区别?