MCP调用流程图
fill:#333;color:#333;color:#333;fill:none;important;important;important;important;important;important;important;important;important;important;important;important;important;important;important;importan
·
流程图说明
启动阶段
- 应用启动:Spring Boot应用程序启动
- Spring容器初始化:创建并初始化所有Spring Bean
- McpExcelToolDiscoveryService初始化:
- 调用MCP Server的/capabilities接口获取工具元数据
- 解析并存储工具定义到内部Map中
- McpExcelToolConfig初始化:
- 注入McpExcelToolDiscoveryService
- 获取所有工具定义并注册到DefaultToolRegistry
- OpenAiModelConfig初始化:
- 创建ToolCallingManager
- 创建OpenAiChatModel并配置ToolCallingManager
工具调用阶段
- 大模型请求:用户发送请求到应用程序
- OpenAiChatModel处理:接收并处理请求
- ToolCallingManager判断:判断是否需要调用工具
- 工具匹配:如果需要调用工具,匹配可用的工具
- ExcelMCPClient调用:调用ExcelMCPClient的callTool方法
- 构建SSE请求:构建Server-Sent Events请求
- 发送请求:发送请求到Excel MCP Server
- 接收响应:接收SSE响应
- 解析结果:解析工具执行结果
- 返回结果:将结果返回给OpenAiChatModel
- 生成响应:生成最终响应返回给用户
组件关系
- ExcelMCPClient:与Excel MCP Server通信的客户端
- McpExcelToolDiscoveryService:动态发现Excel MCP Server的工具
- McpExcelToolConfig:将动态工具注册到Spring AI中
- OpenAiChatModel:处理大模型请求
- ToolCallingManager:管理工具调用
- DefaultToolRegistry:注册和管理所有可用工具
- Excel MCP Server:外部服务,提供Excel操作工具
技术要点
- 动态工具发现:通过调用MCP Server的/capabilities接口动态获取工具定义
- 工具注册:将动态发现的工具注册到Spring AI的DefaultToolRegistry
- SSE通信:使用Server-Sent Events与Excel MCP Server通信
- 异步处理:使用AtomicReference和CountDownLatch处理异步响应
- 超时控制:设置超时机制确保请求不会无限等待
配置说明
- 在
application.yml中配置Excel MCP Server的URL和超时时间 - 在
bootstrap.yml中设置allow-bean-definition-overriding: true允许Bean定义覆盖 - 通过
McpExcelToolConfig控制工具的注册和管理
这个流程图清晰地展示了从应用启动到工具调用的完整流程,包括各个组件之间的关系和交互方式。
更多推荐


所有评论(0)