关于MCP服务器的运行机制,用白话简单科普

目前,关于MCP服务器有很多科普,但其实都相对抽象或者相对术语化,或者过于简单而没有触及到核心,其实它的原理如下,以cherry为例:

  1. cherry是一个集成的mcp客户端以及和大模型交互的软件
  2. 当安装mcp服务器的时候,mcp客户端(内置在cherry里面)会和mcp服务器立马建立连接,并且,会把mcp服务器的工具描述都获取出来
  3. 如果安装了多个mcp服务器,那么,cherry会和所有mcp服务器通信,并且把所有的工具描述都提取出来,形成一个长长的list,就像这样[{服务器1-工具A},{服务器1-工具B},{服务器2-工具A},{服务器2-工具B},...]
  4. 当你在对话框里面发送问题的时候,cherry会把你的问题,然后再把上面那一坨工具包(含有工具用途,描述等内容的工具清单)都发送给大模型,供大模型选择
  5. 大模型根据自己的理解,声明“我要调用工具1”或者“我要调用工具1和工具2”,请mcp客户端批准!
  6. MCP客户端接受到调用工具的指令后,和mcp服务器联系,提供参数申请调用
  7. MCP服务器接受mcp客户端的指令,开始运行脚本/程序,得到结果,返回给MCP客户端
  8. MCP客户端拿到结果后,结合之前的上下文一起把结果反馈给大模型
  9. 大模型整合所有的信息(包括用户开始提的问题,mcp服务器运行后的结果等),根据自己的理解,向用户返回最终回复

最后,我还想补充一点,就是mcp客户端处理工具清单的方式可以不同,例如:

  1. cline是把工具清单全部塞进系统提示词里面,优点是不依赖AI大模型的工具调用功能,可以直接使用deepseek R1这种不支持FC的大模型,缺点是消耗token比较大,因为需要有大量额外的提示词来说明工具清单的内容、使用方式等详细描述,对AI大模型的处理能力提出了更高的要求,否则容易“用错工具”
  2. cherry是利用AI大模型的工具调用能力,递交工具清单是通过FC来递交的,格式规范,不需要过多说明,所以token消耗小,但缺点是只能使用支持FC的大模型,像deepseek R1这样的就不能用
33 Likes

MCP(主控程序):扮演“指挥官”角色,负责调度资源、分配任务、监控全局,确保一切高效运转。
——
可以把MCP服务器想象成一个超智能厨房:
1、你(用户)点了一道菜(请求任务)
2、厨房的管理者(MCP)决定哪个厨师(AI模型)最擅长这道菜,并安排他们去做
3、厨师们(AI计算单元)各自负责不同的部分,快速烹饪
4、经过整理和摆盘,最终把菜端给你(返回结果)

:thinking:这样理解?

4 Likes

感谢讲解

1 Like

用简单白话就是,支持MCP服务的客户端充当你和AI之间的中介。

客户端会将,自己能提供的服务,用你和ai聊天一样的的,文字的方式,递交给ai。

当你询问AI一个问题的时候,Ai 会把需要执行的命令递交给客户端,客户端来执行命令并且把执行命令的结果返回给Ai 。

ai获取到足够的信息之后,将答案返回给客户端,并由客户端递交给你。

3 Likes

感谢分享

1 Like

感觉有点像dify这种?

1 Like

实际体验怎么样

1 Like

MCP不是新的独特的东西, 只是成为了标准. 在这之前大家都是手搓

3 Likes

这样看来无非就是openai的api参数中的tools参数,就是个列表,列表里面有定义可用函数和描述、参数、类型,只不过变成了这些函数在调用https api而已,炒那么火不也是以前的东西吗

1 Like

眼下无敌,能操作软件了,但不能开箱即用和os操作。

1 Like

是的没毛病,这个流程。但是 host 软件通过配置文件调用 MCP client 的。

1 Like

MCP 是协议,以前没人手搓协议的。

3 Likes

选择哪个AI模型,不是MCP做的事情,AI模型是自己手动选,不能由MCP选择用哪个模型。MCP不是厨房管理者,他只是“产品经理”这样的角色,负责协调AI大模型和外部脚本/程序之间的桥梁

1 Like

我觉得可以理解为,MCP就是一种标准化的,特殊的工作流

1 Like

关键在于MCP服务器的撰写质量吧。。还有针对自己特定运用场景的MCP服务通常要自己写出来才好用

3 Likes

是不是比较类似复杂的函数调用。mcp服务器提供多个函数。ai来选择性调用。

1 Like

MCP 是否需要大模型有 FunctionCall 功能 | 星尘

1 Like

很多人其实对这个具体的运行流程不太了解,到底是如何交互的并不清楚。。网上很多都没有真正说清楚大模型,MCP,我们用的这些AI聊天工具对话框,他们是怎么一个协调运行的机制

1 Like

其实就是把一大堆不同人开发的函数集成在了一个工具清单列表,每次交互都是一次性全部发给大模型,供大模型选择

1 Like

这样会导致 token 消耗或者大模型调用次数呈指数级上升吧

1 Like