SpringAI MCP模型上下文协议(七)

发布时间:2026/5/16 3:02:18

SpringAI MCP模型上下文协议(七) MCP介绍与原理MCPModel Context Protocol模型上下文协议是 Anthropic 于 2024 年 11 月推出的开放标准旨在为大型语言模型LLMs提供统一接口以便连接和调用外部数据源和工具。目前各大 LLM 平台如 Deepseek、ChatGPT、Claude普遍支持 Function Calling允许模型在需要时调用特定函数如访问网络、查询数据库等来扩展能力。MCP的核心是对大模型调用外部工具建立一个标准化流程。MCP基于 Function Calling进一步定义了从请求构建、发送、执行到结果返回的标准化流程。通过 MCP模型可以以统一方式与各种外部工具和数据源交互极大提升了跨平台兼容性和 AI 应用开发效率。MCP 与 Function Calling 的区别和联系如下Function Calling 是 LLM 内部定义的一组函数通过 JSON schema 让 LLM知道有哪些功能能调用。MCP:在 Function Calling 基础上进一步标准化了函数调用的完整流程包括请求的构建、发送、执行以及结果的返回。简单来说MCP 是对 Function Calling 的扩展与升级实现了更高层次的抽象和更强的可扩展性。可以将 MCP 理解为 AI 世界里的“USB-C标准”为模型接入各种数据源和工具提供了统一接口确保连接便捷且安全。MCP 遵循客户端-服务器架构角色主要包含三部分MCP Host运行 LLM如 Claude、ChatGPT、Deepseek的实体节点如果使用的LLM为线上模型可以忽略这部分。MCP Client运行着与大模型对话的客户端可能会使用工具叫做MCP Client。其与 MCP Server 保持 1:1 连接负责解析模型请求如果使用工具会将请求转发到对应 MCP Server。MCP Server实际运行外部工具如访问文件系统、发送邮件、查询日历的服务端叫做MCP Server。负责处理请求并将结果返回给 Client。MCP Cilent与MCP Server之间有两种通信机制Stdio标准输入/输出和SSE(Server-Sent-Event服务器发送事件)两种机制介绍如下Stdio标准输入/输出当服务器和客户端同时运行在本机时可以使用Stdio机制。SSE(Server-Sent-Event)当服务器部署在远程服务器上客户端通过HTTP 请求发送消息使用这种方式。MCP Java SDK 架构上图中McpClient处理客户端操作McpServer管理服务端操作两者都使用McpSession进行通信管理。传输层Mcp Transport负责处理JSON-RPC 消息的序列化和反序列化支持三种传输实现STDIO、Spring MVC SSE、Spring WebFlux SSE三者区别如下:STDIO:基于进程间的标准输入/输出STDIO传输支持单进程同步交互处理消息。适用于MCP 服务端和客户端都在同一节点上集成。Spring MVC SSEHTTP SSE:基于Spring MVC的SSE传输支持Servlet线程池阻塞式处理消息。适用于普通的Web应用。Spring WebFlux SSE:官方建议方式。基于Spring WebFlux的反应式SSE支持高并发、低延迟响应式处理消息。适用于高并发的web微服务。对于以上不同的传输方式Spring AI 提供了多个启动器starter简化MCP在SpringBoot中的使用。*客户端Starter:spring-ai-starter-mcp-client支持 STDIO 与 HTTP-SSE。spring-ai-starter-mcp-client-webflux基于 WebFlux 的 SSE 客户端实现。* **服务端Starter:**spring-ai-starter-mcp-server支持 STDIO 传输。spring-ai-starter-mcp-server-webmvc基于 Spring MVC 的 SSE 服务端实现。spring-ai-starter-mcp-server-webflux基于 WebFlux 的 SSE 服务端实现。

相关新闻