MCP 服务Starters
Model Context Protocol (MCP) Servers
是程序,通过标准化协议接口向AI应用程序提供特定的能力。
每个服务器为特定的领域提供专注于其功能。
The Spring AI MCP Server Boot Starters provide auto-configuration for setting up MCP服务器 in Spring Boot应用程序. 它们使MCP服务器功能与Spring Boot的自动配置系统无缝集成。
MCP 服务器启动Starters提供:
-
MCP服务器组件的自动配置,包括工具、资源和提示。
-
对不同 MCP 协议版本的支持,包括 STDIO、SSE、Streamable-HTTP 以及状态less服务器
-
支持同步和异步的操作模式
-
多个传输层选项
-
灵活的工具、资源与提示说明
-
调整通知能力
-
基于注解的服务器开发,支持自动 bean扫描和注册
MCP服务器启动Starters
MCP服务器支持多个协议和传输机制。
使用专用Starters和正确的spring.ai.mcp.server.protocol属性来配置您的服务器:
标准输出
| 服务池类型设置 | 依赖 | 属性 |
|---|---|---|
|
|
Spring Boot
服务池类型设置 |
依赖 |
属性 |
|
|
|
|
|
|
|
|
服务器能力服务器特性
取决于服务器和传输类型,MCP 服务器可以支持各种能力,例如:
-
工具 - 允许服务器暴露可供语言模型调用的工具
-
资源 - 为客户端提供了一种规范化的资源暴露方法
-
提示 - 为服务器提供一种标准的客户端提示模板暴露方式
-
实用/完成 - 为服务器提供提示和资源URI的参数自补完成的标准化方法
-
实用/日志管理 - 为服务器提供了一种标准的方法,将结构化的日志消息发送给客户端 -
实用/进度 - 用于长运行操作的进度跟踪通知消息
-
实用/ping - 服务器报告其状态的可选健康检查机制
所有功能都是默认启用的。关闭某个功能将阻止服务器注册并暴露相应功能给客户端。
服务器协议Server Protocols
MCP提供了几种协议类型,包括: HTTP/1.1、WebSocket和远程过程调用(RPC)。
-
标准输入输出 - 在过程中(例如,服务器运行在主机应用程序中)的协议。通信通过标准输入和标准输出进行。要启用
STDIO设置spring.ai.mcp.server.stdio=true。 -
状态更新协议(SSE) - 服务器发送事件协议(SSE)用于实时更新。服务器作为一个独立运行的过程,能够处理多个客户端连接。
-
Streamable-HTTP - The Streamable HTTP传输允许MCP服务器作为独立进程运行,能够处理多个客户端连接,使用HTTP POST和GET请求,可选的服务器发送事件(SSE)流式传输多个服务器消息。它取代了SSE传输。要启用
STREAMABLE协议,请设置spring.ai.mcp.server.protocol=STREAMABLE。 -
状态less - 状态less MCP服务器旨在为简化部署场景设计,这些场景中不会在请求之间维持会话状态。它们非常适合微服务架构和云原生部署。要启用
STATELESS协议,请设置spring.ai.mcp.server.protocol=STATELESS。
按钮Sync/Async Server API Options
MCP服务器API支持命令式(即同步)和响应式(例如异步)的编程模式。
-
同步服务器 - 使用
McpSyncServer实现的默认服务器类型。它用于设计简单的请求-响应模式。要启用此服务器类型,请在您的配置中设置spring.ai.mcp.server.type=SYNC。当启用后,它会自动处理同步工具规范的配置。
注意: SYNC服务器只会注册带有同步MCP注释的方法。异步方法将被忽略。
-
异步服务器 - 使用异步服务器实现的实现使用了
McpAsyncServer,并经过了非阻塞操作的优化。 要启用此服务器类型,请将您的应用程序配置为spring.ai.mcp.server.type=ASYNC。 此服务器类型会自动设置带有内置Project Reactor支持的异步工具规范。
注意:异步服务器只会注册带有MCP注释的异步方法。同步方法将被忽略。
MCP 服务器注释
MCP服务器启动脚本提供全面的支持,允许您通过声明性的Java注解而不是手动配置来创建MCP服务器。
关键注释
-
@McpTool - 将方法标记为MCP工具,自动生成JSON schema
-
@McpResource - 提供通过 URI 模板访问资源
-
@McpPrompt - 生成用于AI交互的消息
-
@Mcp完整 - 提供提示自动补全功能
特殊参数
参数化系统支持[{"Item1":"href","Item2":"mcp-annotations-special-params.html"},{"Item1":"class","Item2":"xref page"}]等特殊参数类型,这些类型提供额外的上下文信息:
-
McpMeta- 从MCP请求获取元数据 -
@McpProgressToken- 接收长运行操作的进度Tokens -
McpSyncServerExchange/McpAsyncServerExchange- 全服务器上下文用于高级操作 -
McpTransportContext- 轻量级上下文,用于无状态操作 -
CallToolRequest- Dynamic的表单支持灵活的工具
简单的示例
@Component
public class CalculatorTools {
@McpTool(name = "add", description = "Add two numbers together")
public int add(
@McpToolParam(description = "First number", required = true) int a,
@McpToolParam(description = "Second number", required = true) int b) {
return a + b;
}
@McpResource(uri = "config://{key}", name = "Configuration")
public String getConfig(String key) {
return configData.get(key);
}
}
自动配置
使用Spring Boot的自动配置,注解Bean会自动被检测并注册:
@SpringBootApplication
public class McpServerApplication {
public static void main(String[] args) {
SpringApplication.run(McpServerApplication.class, args);
}
}
自动生成配置。
-
扫描带有MCP注释的Bean
-
创建适当的规范
-
将它们与MCP服务器进行注册
-
根据配置处理同步和异步的实现方式
更多资源
-
Spring框架文档 - 完整的服务器注解指南
-
特殊参数 - 高级参数注入
-
示例 - 完整的示例和使用场景
示例应用程序
-
天气服务器(SSE WebFlux) - 带有WebFlux传输的Spring AI MCP服务器Starters
-
天气服务器(STDIO) - 带有STDIO传输的Spring AI MCP服务器Starters
-
天气服务器手动配置指南 - Spring AI MCP服务器启动Starters,不使用自动配置,而是通过Java SDK手动配置服务器
-
Streamable-HTTP FlexFlow/MVC模式示例 - TODO
-
Stateless WebFlux/WebMVC 示例 - 需要做进一步的补充说明
更多资源
-
MCP Server Annotations
- 使用注解式开发方法进行服务器开发 MCP Server Annotations -
特殊参数 - 高级的参数注入和上下文访问
-
MCP注释示例 - 综合实例和使用场景