模型上下文协议(MCP)是一种标准化协议,它使人工智能模型能够以结构化的方式与外部工具和资源进行交互。你可以将其视为人工智能模型与现实世界之间的桥梁,通过它,模型可以通过一致的接口访问数据库、应用程序编程接口(API)、文件系统和其他外部服务。它支持多种传输机制,以在不同环境中提供灵活性。数据格式与协议
MCP Java SDK提供了模型上下文协议的Java实现,通过同步和异步通信模式,实现了与人工智能模型和工具的标准化交互。
Spring AI通过专用的引导启动器和MCP Java注解为MCP提供全面支持,使得构建能够无缝连接到外部系统的复杂AI驱动应用程序变得前所未有的简单。这意味着Spring开发人员可以参与到MCP生态系统的两个方面——构建使用MCP服务器的AI应用程序,以及创建向更广泛的AI社区提供基于Spring的服务的MCP服务器。使用Spring Initializer,借助MCP支持快速启动您的AI应用程序。
MCP Java SDK 架构
Java MCP实现遵循三层架构,该架构将可维护性和灵活性方面的关注点进行了分离:
客户端/服务器层(顶层)
顶层处理主要的应用逻辑和协议操作:
会话层(中间层)
中间层负责管理通信模式并维护连接状态:
传输层(底层)
底层负责实际的消息传输和序列化:编程
MCP客户端
MCP客户端是模型上下文协议(MCP)架构中的关键组件,负责建立和管理与MCP服务器的连接。它实现了协议的客户端部分,处理以下任务:
协议版本协商,以确保与服务器兼容
通过能力协商来确定可用功能
消息传输和JSON-RPC通信
工具发现与执行
资源访问与管理
提示系统交互
可选功能:
基于标准输入/输出(Stdio)的传输,用于基于进程的通信
基于Java HttpClient的SSE客户端传输
用于响应式HTTP流的WebFlux SSE客户端传输
MCP服务器
MCP服务器是模型上下文协议(MCP)架构中的基础组件,它为客户提供工具、资源和能力。它实现了协议的服务器端,负责:
工具展示与发现
基于URI访问的资源管理
提示模板的提供与处理
与客户进行能力协商
结构化日志记录和通知
Spring AI MCP 集成
Spring AI 通过以下 Spring Boot 启动器提供 MCP 集成:
客户端启动器
服务端启动器
STDIO
| | |
|---|
Standard Input/Output (STDIO) | spring-ai-starter-mcp-server
| spring.ai.mcp.server.stdio=true
|
WebMVC
服务器类型 | 依赖 | 属性 |
SSE WebMVC | spring-ai-starter-mcp-server-webmvc
| spring.ai.mcp.server.protocol=SSE or empty
|
Streamable-HTTP WebMVC | spring-ai-starter-mcp-server-webmvc
| spring.ai.mcp.server.protocol=STREAMABLE
|
Stateless Streamable-HTTP WebMVC | spring-ai-starter-mcp-server-webmvc
| spring.ai.mcp.server.protocol=STATELESS
|
WebMVC (Reactive)
服务器类型 | 依赖 | 属性 |
SSE WebFlux | spring-ai-starter-mcp-server-webflux
| spring.ai.mcp.server.protocol=SSE or empty
|
Streamable-HTTP WebFlux | spring-ai-starter-mcp-server-webflux
| spring.ai.mcp.server.protocol=STREAMABLE
|
Stateless Streamable-HTTP WebFlux | spring-ai-starter-mcp-server-webflux
| spring.ai.mcp.server.protocol=STATELESS
|
Spring AI MCP注释
除了可编程的MCP客户端和服务器配置外,Spring AI还通过MCP Annotations模块为MCP服务器和客户端提供基于注释的方法处理。这种方法使用带有Java注释的干净、声明性编程模型简化了MCP操作的创建和注册。
MCP注释模块使开发人员能够:
使用简单的注释创建MCP工具、资源和提示
以声明方式处理客户端通知和请求
减少样板代码并提高可维护性
自动为工具参数生成JSON模式
访问特殊参数和上下文信息
主要特征包括:
服务器注释:@McpTool、@McpResource、@McpPrompt、@McpComplete
客户端注释:@McpLogging、@McpSampling、@McpElicitation、@McpProgress
特殊参数:McpSyncServerExchange、McpAsyncServerExchange、McpTransportContext、McpMeta
自动发现:可配置包包含/排除的注释扫描
Spring Boot集成:与MCP Boot Starters无缝集成