Skip to content

模型上下文协议(Model Context Protocol)

模型上下文协议(即 Model Context Protocol,MCP) 是一个开放协议,用于标准化应用程序如何向大语言模型(LLM)提供上下文。MCP提供了一种将AI模型连接到不同数据源和工具的标准化方式。

简言之,MCP是AI时代的通用数据管道,让模型与环境的协作“即插即用”。

Spring AI MCP

Spring AI MCP 为模型上下文协议提供 Java 和 Spring 框架集成。它使 Spring AI 应用程序能够通过标准化的接口与不同的数据源和工具进行交互,支持同步和异步通信模式。

MCP 架构

mcp 架构

  • 客户端/服务器层:McpClient负责处理客户端操作,而McpServer则管理服务端协议操作。二者均通过McpSession进行通信管理。
  • 会话层(McpSession):通过DefaultMcpSession实现方案管理通信模式及状态。
  • 传输层(McpTransport):负责JSON-RPC消息的序列化与反序列化,支持多种传输实现方案。

Spring AI MCP 服务端

MCP服务器是Model Context Protocol(MCP)架构中的基础组件,负责向客户端提供工具、资源和功能。

Spring AI MCP Server Starter 提供了两种实现 MCP 服务端的方式:

  • 基于 stdio 的实现,适用于嵌入式场景
  • 基于 SSE 的实现,适用于独立服务部署。

基于 SSE 的 MCP 服务端通过HTTP协议与客服端通信,适用于作为独立服务部署的场景,可以被多个客户端远程调用。

mcp 架构

服务端属性配置

所有属性的前缀:spring.ai.mcp.server

属性默认值说明
enabledtrue启用/禁用 MCP server
stdiofalse启用/禁用 stdio(标准输入输出)
namemcp-server服务名称
version1.0.0服务名称版本
typeSYNC服务类型(SYNC/ASYNC)
sse-message-endpoint/mcp/message
sse-endpoint/sse
base-url

详细配置参考:Spring AI 官方文档

Spring AI MCP 客户端

MCP客户端是Model Context Protocol(MCP)架构中的核心组件,负责与MCP服务器建立并管理连接。

mcp 架构

客户端属性配置

基础属性

所有属性的前缀:spring.ai.mcp.client

属性默认值说明
enabledtrue启用/禁用 MCP client
namespring-ai-mcp-client客户端名称
version1.0.0客户端版本
typeSYNC客户端类型(SYNC/ASYNC),客户端必须是 SYNCASYNC,不可以混合使用。
toolcallback.enabledfalse启用/禁用MCP工具回调与 Spring AI 的工具执行框架的集成。如果为falseToolCallbackProvider没有实例化,不能直接使用

标准输入输出(Stdio Transport)相关属性

所有属性的前缀:spring.ai.mcp.client.stdio

属性默认值说明
servers-configurationJSON格式的MCP服务器配置文件
connections
connections.[name].commandMCP 服务端的执行命令
connections.[name].argsMPC 服务端执行参数
connections.[name].env环境属性变量

SSE 传输协议(SSE Transport)相关属性

所有属性的前缀:spring.ai.mcp.client.sse

属性默认值说明
connectionsSSE连接配置,以Map存储 Map<String, SseParameters> connections = new HashMap(),key为 MCP 服务名称.
connections.[name].urlSSE 服务端URL

详细配置参考:Spring AI 官方文档

案例

参考