在MCP Server的MpcServerAutoConfiguration自动配置类中定义了一个McpSyncServer的Bean,它会依赖注入List<ToolCallbackProvider>,这样McpSyncServer中就拿到了MCP Server中定义的所有Tools(调用ToolCallbackProvider的getToolCallbacks()即可拿到)。

MCP分为MCP Client和MCP Server:

  1. MCP Client负责进行工具发现工具调用
  2. MCP Server负责提供工具工具执行

总体流程图

图片图片

十大步骤详解

第一步,MCP Client接收用户的问题,比如“今天是几月几号”。

第二步,MCP Client发送tools/list请求给MCP Server进行工具发现。

利用Spring AI开发的MCP Server,可以利用@Tool注解定义工具,比如:

图片图片

并利用MethodToolCallbackProvider提供出去:

图片

在MCP Server的MpcServerAutoConfiguration自动配置类中定义了一个McpSyncServer的Bean,它会依赖注入List<ToolCallbackProvider>,这样McpSyncServer中就拿到了MCP Server中定义的所有Tools(调用ToolCallbackProvider的getToolCallbacks()即可拿到)。

第三步,McpSyncServer处理tools/list请求,并返回工具定义给MCP Client,所谓工具定义,就是工具的描述、方法名、入参信息等。

第四步,MCP Client在拿到了工具定义后,就把用户问题和工具定义一起发送给大模型。

第五步,大模型分析用户问题和工具信息,决定要调用某个工具,大模型会确定要调用工具的方法名、入参值等,并发送给MCP Client

第六步,MCP Client拿到了大模型的工具调用信息后,就向MCP Server发送tools/call请求,并携带了工具调用信息。

第七步,MCP Server处理tools/call请求,并通过反射执行指定的工具方法,得到并返回工具执行结果给MCP Client。

第八步,MCP Client拿到了工具执行结果后,把工具执行结果返回给大模型。

第九步,大模型拿到工具执行结果后,继续分析用户问题,如果要继续调用工具,就执行第五步,如果不要执行工具了,就然后用户问题的最终答案给MCP Client

第十步,MCP Client拿到最终答案后,就返回给用户。

这其中,第三步和第七步比较重要,第三步工具发现不再是获取应用自己定义的工具了,而是去获取MCP Server定义的工具,第七步工具调用,也不是调用应用自己的工具,而是远程调用MCP Server中的工具,但总体框架仍然是Spring AI Tool Calling机制的流程。

文章来自:51CTO

Loading

作者 yinhua

发表回复