模型上下文协议(Model Context Protocol)
模型上下文协议(即 Model Context Protocol,MCP) 是一个开放协议,用于标准化应用程序如何向大语言模型(LLM)提供上下文。MCP提供了一种将AI模型连接到不同数据源和工具的标准化方式。
简言之,MCP是AI时代的通用数据管道,让模型与环境的协作“即插即用”。
Spring AI MCP
Spring AI MCP 为模型上下文协议提供 Java 和 Spring 框架集成。它使 Spring AI 应用程序能够通过标准化的接口与不同的数据源和工具进行交互,支持同步和异步通信模式。
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协议与客服端通信,适用于作为独立服务部署的场景,可以被多个客户端远程调用。
服务端属性配置
所有属性的前缀:spring.ai.mcp.server
属性 | 默认值 | 说明 |
---|---|---|
enabled | true | 启用/禁用 MCP server |
stdio | false | 启用/禁用 stdio (标准输入输出) |
name | mcp-server | 服务名称 |
version | 1.0.0 | 服务名称版本 |
type | SYNC | 服务类型(SYNC/ASYNC) |
sse-message-endpoint | /mcp/message | |
sse-endpoint | /sse | |
base-url |
详细配置参考:Spring AI 官方文档
Spring AI MCP 客户端
MCP客户端是Model Context Protocol(MCP)架构中的核心组件,负责与MCP服务器建立并管理连接。
客户端属性配置
基础属性
所有属性的前缀:spring.ai.mcp.client
属性 | 默认值 | 说明 |
---|---|---|
enabled | true | 启用/禁用 MCP client |
name | spring-ai-mcp-client | 客户端名称 |
version | 1.0.0 | 客户端版本 |
type | SYNC | 客户端类型(SYNC/ASYNC),客户端必须是 SYNC 或 ASYNC ,不可以混合使用。 |
toolcallback.enabled | false | 启用/禁用MCP工具回调与 Spring AI 的工具执行框架的集成。如果为false ,ToolCallbackProvider 没有实例化,不能直接使用 |
标准输入输出(Stdio Transport
)相关属性
所有属性的前缀:spring.ai.mcp.client.stdio
属性 | 默认值 | 说明 |
---|---|---|
servers-configuration | JSON格式的MCP服务器配置文件 | |
connections | ||
connections.[name].command | MCP 服务端的执行命令 | |
connections.[name].args | MPC 服务端执行参数 | |
connections.[name].env | 环境属性变量 |
SSE 传输协议(SSE Transport
)相关属性
所有属性的前缀:spring.ai.mcp.client.sse
属性 | 默认值 | 说明 |
---|---|---|
connections | SSE连接配置,以Map存储 Map<String, SseParameters> connections = new HashMap() ,key为 MCP 服务名称. | |
connections.[name].url | SSE 服务端URL |
详细配置参考:Spring AI 官方文档