我对[MCP](https://modelcontextprotocol.io/introduction)的一些理解

目录

我对MCP的一些理解

MCP全称为Model Context Protocol,它是大模型(LLMs)和其他应用之间交互的一个标准化协议,由知名公司anthropic提出。不过早在MCP出现之前,大模型就有了与其他应用交互的手段,它就是function calling 和 ReAct。

  • Function Calling由OpenAI在2023年6月13号发布的模型中添加的新能力,在调用模型时添加Function Calling参数,模型能够理解用于输入的函数,并根据对话理解生成调用函数需要的参数。Function Calling的能力是来源于模型本身,它要求模型进行特殊的后训练或者微调。在传统的模型prompt中,只用三种role,分别是、和, 前者是人类用户后者是大模型。大模型在后训练时会被交会识别这两种特殊的token。但是要想大模型具有Function Calling的能力,就需要加上tool这种特殊的tool,在后训练过程中让大模型学会识别tool这个role并学会生成调用函数参数的能力。

  • ReAct(**Reasoning + Acting)**的提出则更早,它实际上是一种思考范式,通过精心设计的Prompt, 让AI使用思考范式来达到像人一样行动和使用工具的能力。下面是一个ReAct Prompt的例子:

        ```
        You run in a loop of Thought, Action, Observation.
        At the end of the loop you output an Answer
        Use Thought to describe your thoughts about the question you have been asked.
        Use Action to run one of the actions available to you。
        Observation will be the result of running those actions.
        ...
        ```
    

    https://media.geeksforgeeks.org/wp-content/uploads/20250501121539125410/ReAct-.webp 在一次交互中,大模型不是直接给出结果,而是通过几次内部的迭代最后再给出结果。每一轮迭代都是Reasoning -> Actions -> Observations的过程,Reasoning阶段大模型会分析当前的问题,然后根据当前手上的工具做一次Action,Action后的结果会反馈到大模型,经过一轮或者多轮这样的迭代,直到大模型觉得回答已经足够好,就会把最终的结果返回。这个Action的过程就是大模型和外部交互的过程,在这里我们可以简单的理解为大模型使用工具。相比于Function CallingReAct的模式不要求模型经过特殊的后训练或者微调。

    在MCP出现前大模型就已经具备了和外部应用交互的能力,大模型调用函数获取外部的数据源,使用工具操作并影响真实世界。那为什么MCP一出现还是爆火呢?

    MCP为什么火?

    MCP被比喻为USB-C的接口,在USB-C标准接口出现之前,我们充电、视频、数据传输都需要不同的线缆和插头,但是USB-C出现之后,我们只需要一根线就可以实现全部的能力。同样的在MCP出现之前大模型和应用之间的交互实现需要一对一的实现,当想将这个应用提供给其他大模型使用时又需要再针对性的实现一次。MCP的出现对于开发者而言减少了重复开发的时间。对于应用的拥有者,它只需要开发一个MCP的Server,任何想接入这个应用的开发者就可以直接使用它提供的MCP Server。对于大模型的厂商,它只需要实现MCP的特定协议就可以接入各种不同的MCP服务。提炼了一下:

    1. 标准化 统一服务接入规范

    2. ​生态兼容​​ - 实现"一次开发,多模型通用"

    3. 技术解耦​ 应用服务与模型能力分离​

    MCP的工作原理