模型上下文协议(MCP)是一种标准化协议,支持AI模型通过结构化方式与外部工具及资源进行交互。该协议支持多种传输机制,以在不同环境中提供灵活性。
MCP Java SDK
MCP Java SDK提供了模型上下文协议的Java实现,通过同步和异步通信模式,支持与AI模型及工具的标准化交互。
Java MCP实现遵循三层架构:

- 客户端/服务器层(Client/Server Layer):McpClient负责处理客户端操作,而McpServer管理服务端协议操作。两者均通过McpSession进行通信管理。
- 会话层(McpSession):通过DefaultMcpSession的实现,管理通信模式与状态。
- 传输层(McpTransport):负责JSON-RPC消息的序列化与反序列化,并支持多种传输协议实现(如HTTP、SSE)。
MCP客户端
MCP客户端是MCP架构中的核心组件,负责与MCP服务器建立并管理连接。该客户端实现协议的客户端部分,具体处理以下功能:
- 协议版本协商 :确保与服务器的兼容性;
- 能力协商 :确定可用功能(如工具支持范围);
- 消息传输与JSON-RPC通信 :实现结构化数据交互;
- 工具发现与执行 :动态识别并调用外部工具;
- 资源访问与管理 :协调模型与外部数据源的交互;
- 提示系统交互 :支持与模型提示(Prompt)系统的集成。
可选功能 :
- 根管理(Roots Management)
- 采样支持(如模型输出概率控制)
- 同步与异步操作模式
传输选项 :
- 基于标准输入/输出的传输(适用于进程间通信);
- 基于Java HttpClient的SSE客户端传输(支持事件流);
- 基于WebFlux的SSE客户端传输(用于响应式HTTP流处理)。
MCP服务器
MCP服务器是MCP架构中的基础组件,负责为客户端提供工具、资源及能力支持。该服务器实现协议的服务端部分,核心职责包括:
- 服务端协议操作实现 :处理协议交互逻辑;
- 工具暴露与发现 :通过标准化接口提供可调用的外部工具(如函数/API);
- 基于URI的资源管理 :支持文件、数据库等本地资源的安全访问;
- 提示模板提供与处理 :管理预定义的Prompt模板并动态注入上下文;
- 能力协商 :与客户端协商支持的功能范围(如同步/异步模式);
- 结构化日志与通知 :记录操作日志并推送状态变更事件;
- 多客户端并发管理 :支持高并发连接与会话隔离;
- 同步与异步API支持 :适配不同场景的调用需求。
传输实现 :
- 基于标准输入/输出的传输(适用于进程间通信);
- 基于Servlet的SSE服务端传输(支持事件流HTTP响应);
- 基于WebFlux的响应式SSE传输(用于异步HTTP流式处理);
- 基于WebMVC的Servlet SSE传输(兼容传统HTTP流式交互)
对于使用底层MCP客户端/服务器API的详细实现指南,请参考MCP Java SDK文档。若需通过Spring Boot简化配置,可使用以下介绍的MCP Boot启动器。
Spring AI MCP集成
Spring AI通过以下Spring Boot启动器提供MCP集成支持:
客户端启动器
- spring-ai-mcp-client-spring-boot-starter:核心启动器,提供基于标准输入/输出(STDIO)和HTTP的SSE传输支持;
- spring-ai-mcp-client-webflux-spring-boot-starter:基于WebFlux的响应式SSE传输实现。
服务端启动器
- spring-ai-mcp-server-spring-boot-starter:核心服务端启动器,支持STDIO传输;
- spring-ai-mcp-server-webmvc-spring-boot-starter:基于Spring MVC的SSE传输实现(兼容传统Servlet环境);
- spring-ai-mcp-server-webflux-spring-boot-starter:基于WebFlux的响应式SSE传输实现(支持异步流式处理)\n
MCP Client Boot Starter
Spring AI MCP(模型上下文协议)客户端启动器为Spring Boot应用程序中的MCP客户端功能提供自动配置支持,包含同步和异步客户端实现,并支持多种传输选项。
MCP客户端启动器提供以下功能 :
- 多客户端实例管理 :支持同时维护多个客户端实例以适配不同场景;
- 自动客户端初始化 (若启用):通过Spring Boot自动装配机制加载默认配置;
- 多种命名传输支持 :允许通过名称区分STDIO、HTTP或WebFlux等传输协议;
- 与Spring AI工具执行框架集成 :无缝衔接工具调用与Prompt处理流程;
- 完善的生命周期管理 :应用上下文关闭时自动清理会话与资源;
- 通过自定义器实现客户端可定制性 :允许通过McpClientCustomizer接口扩展配置逻辑
Starters
标准MCP客户端
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-mcp-client-spring-boot-starter</artifactId>
</dependency>
标准starter通过STDIO(进程内)和/或SSE(远程)传输协议同时连接到一个或多个MCP服务器。其中SSE连接采用基于HttpClient的传输实现。每建立一个到MCP服务器的连接,即会创建一个新的MCP客户端实例。开发者可选择使用同步(SYNC)或异步(ASYNC)模式的MCP客户端(注意:同一应用中不可混合使用同步与异步客户端)。对于生产环境部署,建议采用基于WebFlux的SSE连接,并搭配spring-ai-mcp-client-webflux-spring-boot-starter启动器以实现响应式流式处理。
WebFlux MCP客户端
WebFlux starter提供与标准starter类似的功能,但采用基于WebFlux的SSE传输实现。
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-mcp-client-webflux-spring-boot-starter</artifactId>
</dependency>
配置属性
通用属性
通用属性以 spring.ai.mcp.client 为前缀:
属性 | 描述 | 默认值 |
---|---|---|
enabled | 启用/禁用MCP客户端 | true |
name | MCP客户端实例名称(用于兼容性检查) | spring-ai-mcp-client |
version | MCP客户端实例版本 | 1.0.0 |
initialized | 是否在创建时初始化客户端 | true |
request-timeout | MCP客户端请求的超时时间 | 20s |
type | 客户端类型(SYNC或ASYNC)。所有客户端必须统一为同步或异步,不可混合 | SYNC |
root-change-notification | 为所有客户端启用/禁用根变更通知 | true |
STDIO传输属性
标准输入/输出(Stdio)传输属性以 spring.ai.mcp.client.stdio 为前缀:
属性 | 描述 | 默认值 |
---|---|---|
servers-configuration | 包含MCP服务器配置的JSON格式资源文件路径 | - |
connections | 命名Stdio连接的配置映射 | - |
connections.[name].command | 启动MCP服务器的命令 | - |
connections.[name].args | 命令参数列表 | - |
connections.[name].env | 服务器进程的环境变量映射 | - |
示例配置:
spring:
ai:
mcp:
client:
stdio:
root-change-notification: true
connections:
server1:
command: /path/to/server
args:
- --port=8080
- --mode=production
env:
API_KEY: your-api-key
DEBUG: "true"
通过外部JSON文件配置Stdio连接 (支持Claude Desktop格式):
spring:
ai:
mcp:
client:
stdio:
servers-configuration: classpath:mcp-servers.json
Claude Desktop格式示例 :
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/username/Desktop",
"/Users/username/Downloads"
]
}
}
}
注意:当前Claude Desktop格式仅支持STDIO连接类型
SSE传输属性
服务器发送事件(SSE)传输属性以 spring.ai.mcp.client.sse 为前缀:
属性 | 描述 |
---|---|
connections | 命名SSE连接的配置映射 |
connections.[name].url | 与MCP服务器通信的SSE端点URL |
示例配置 :
spring:
ai:
mcp:
client:
sse:
connections:
server1:
url: http://localhost:8080
server2:
url: http://otherserver:8081
注意:配置属性通过@ConfigurationProperties绑定实现,支持多环境适配。
功能特性
同步/异步客户端类型
启动器支持两种客户端类型:
- 同步(Synchronous) :默认类型,适用于传统请求-响应模式的阻塞操作;
- 异步(Asynchronous) :适用于非阻塞响应式应用,通过spring.ai.mcp.client.type=ASYNC配置。
客户端定制化
自动配置通过回调接口提供丰富的客户端规格定制能力,涵盖请求超时、事件处理及消息处理等行为。
支持以下配置选项:
- 请求配置 :设置自定义请求超时时间;
- 自定义采样处理器 :标准化服务器通过客户端请求LLM采样(补全或生成)的流程,客户端可控制模型访问权限,无需服务器提供API密钥;
- 文件系统(Roots)访问 :客户端向服务器暴露文件系统根目录,定义服务器可操作的目录范围,并支持根目录变更通知;
- 事件处理器 :客户端监听服务器事件:
- 工具变更通知 :可用工具列表变化时触发(如新增或移除工具);
- 资源变更通知 :可用资源列表变化时触发;
- 提示(Prompt)变更通知 :可用提示模板列表变化时触发;
- 日志处理器 :服务器向客户端发送结构化日志,客户端可设置最低日志级别控制输出
根据应用需求,可实现McpSyncClientCustomizer(同步客户端)或McpAsyncClientCustomizer(异步客户端)接口进行定制。
同步客户端定制化示例
@Component
public class CustomMcpSyncClientCustomizer implements McpSyncClientCustomizer {
@Override
public void customize(String serverConfigurationName, McpClient.SyncSpec spec) {
// 自定义请求超时配置
spec.requestTimeout(Duration.ofSeconds(30));
// 设置服务器可访问的文件系统根目录
spec.roots(roots);
// 自定义采样处理器(处理模型生成请求)
spec.sampling((CreateMessageRequest messageRequest) -> {
// 实现采样逻辑
CreateMessageResult result = ...
return result;
});
// 工具变更监听器
spec.toolsChangeConsumer((List<McpSchema.Tool> tools) -> {
// 处理工具列表变更
});
// 资源变更监听器
spec.resourcesChangeConsumer((List<McpSchema.Resource> resources) -> {
// 处理资源列表变更
});
// 提示模板变更监听器
spec.promptsChangeConsumer((List<McpSchema.Prompt> prompts) -> {
// 处理提示模板变更
});
// 日志消息监听器
spec.loggingConsumer((McpSchema.LoggingMessageNotification log) -> {
// 处理服务器日志
});
}
}
- serverConfigurationName:当前定制器适用的服务器配置名称;
- 自动配置会检测应用上下文中的定制器并自动应用
传输支持
自动配置支持多种传输协议:
- 标准输入/输出(Stdio) :通过spring-ai-mcp-client-spring-boot-starter激活;
- SSE HTTP :通过spring-ai-mcp-client-spring-boot-starter激活;
- SSE WebFlux :通过spring-ai-starter-mcp-client-webflux激活,适用于响应式流处理。
与Spring AI集成
启动器自动配置工具回调,与Spring AI的工具执行框架集成,支持将MCP工具纳入AI交互流程
使用示例
- 添加启动器依赖 :在项目中引入对应的MCP客户端启动器(如spring-ai-mcp-client-spring-boot-starter或spring-ai-mcp-client-webflux-spring-boot-starter)。
- 配置客户端 :在application.yml中定义MCP客户端参数:
spring:
ai:
mcp:
client:
enabled: true # 启用客户端
name: my-mcp-client # 客户端实例名称
version: 1.0.0 # 客户端版本
request-timeout: 30s # 请求超时时间
type: SYNC # 客户端类型(SYNC或ASYNC)
# SSE传输配置(远程连接)
sse:
connections:
server1:
url: http://localhost:8080 # SSE服务器端点
server2:
url: http://otherserver:8081
# Stdio传输配置(本地进程通信)
stdio:
root-change-notification: false # 禁用根目录变更通知
connections:
server1:
command: /path/to/server # 启动服务器的命令
args:
- --port=8080
- --mode=production
env:
API_KEY: your-api-key # 环境变量
DEBUG: "true"
- 注入客户端实例 :
// 同步客户端注入(type=SYNC时使用)
@Autowired
private List<McpSyncClient> mcpSyncClients;
// 异步客户端注入(type=ASYNC时使用)
@Autowired
private List<McpAsyncClient> mcpAsyncClients;
- 工具回调集成 :
- 通过ToolCallbackProvider获取所有注册的MCP工具回调,用于与Spring AI工具框架集成:
@Autowired
private SyncMcpToolCallbackProvider toolCallbackProvider;
// 获取工具回调列表
ToolCallback[] toolCallbacks = toolCallbackProvider.getToolCallbacks();
注意:配置中的stdio部分支持与本地进程通信,而sse部分用于远程服务器交互。工具回调机制允许模型直接调用外部API或文件系统,如查询天气或读取本地文件
示例应用
- Brave Wet Search Chatbot\n基于模型上下文协议(MCP)实现的聊天机器人,通过集成Web搜索服务器(如Brave Search)处理用户查询并返回搜索结果。
- Default MCP Client Starter\n演示如何使用基础启动器spring-ai-mcp-client-spring-boot-starter快速配置MCP客户端,支持同步请求与SSE传输。
- WebFlux MCP Client Starter\n展示如何通过spring-ai-mcp-client-webflux-spring-boot-starter实现响应式流式处理,适用于高并发或异步交互场景。
MCP Server Boot Starter
Spring AI MCP(模型上下文协议)服务器启动器为Spring Boot应用程序提供MCP服务器的自动配置支持,实现与Spring Boot自动配置系统的无缝集成。
MCP服务器启动器的核心功能包括 :
- 自动配置MCP服务器组件 :包括协议处理、工具暴露与资源管理;
- 支持同步与异步操作模式 :适配不同场景的请求处理需求(通过type参数配置);
- 多传输层选项 :支持STDIO(进程内通信)、基于Servlet的SSE及WebFlux的响应式SSE传输;
- 灵活的工具、资源与提示注册 :允许动态注册文件系统访问、数据库工具或Prompt模板;
- 变更通知能力 :支持向客户端推送工具、资源或提示模板的变更事件
Starters
标准MCP服务器
使用以下以来实现完整标准MCP服务器功能支持(基于STDIO传输)
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-mcp-server-spring-boot-starter</artifactId>
</dependency>
适用场景:
- 适合命令行工具与桌面应用;
- 无需额外Web依赖(基于标准输入/输出协议)。
自动配置功能:\n此启动器激活McpServerAutoConfiguration自动配置,负责以下核心功能:
- 基础服务器组件配置:包括协议处理器与传输层初始化;
- 工具、资源与提示注册管理:自动将Spring Bean中的工具(@Tool注解标记)和资源暴露给客户端;
- 服务器能力与变更通知管理:支持动态推送工具、资源或提示模板的变更事件;
- 同步与异步实现支持:提供SYNC和ASYNC两种模式适配不同交互需
注:STDIO传输模式通过进程内通信实现低延迟交互,适用于本地开发或嵌入式场景
WebMVC Server Transport
使用以下以来实现完整webmvc MCP服务器功能支持(基于Spring MVC的SSE传输及可选STDIO传输)
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-mcp-server-webmvc-spring-boot-starter</artifactId>
</dependency>
Starter使用McpWebMvcServerAutoConfiguration和 McpServerAutoConfiguration实现自动配置:
- 基于HTTP的传输:通过WebMvcSseServerTransport实现Spring MVC的SSE传输;
- 自动配置的SSE端点:提供标准化事件流接口(如/mcp/sse),支持客户端通过text/event-stream协议通信;
- 可选STDIO传输:通过配置spring.ai.mcp.server.stdio=true启用进程内通信;
- 依赖集成:包含spring-boot-starter-web和mcp-spring-webmvc依赖,简化Web层集成
WebFlux Server Transport
使用以下以来实现完整webflux MCP服务器功能支持(基于Spring WebFlux的SSE传输及可选STDIO传输)
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-mcp-server-webflux-spring-boot-starter</artifactId>
</dependency>
Starter使用McpWebFluxServerAutoConfiguration和McpServerAutoConfiguration实现自动配置:
- 响应式传输层:通过WebFluxSseServerTransport实现基于Spring WebFlux的响应式SSE传输;
- 自动配置的响应式SSE端点:提供非阻塞事件流接口(如/mcp/sse),支持客户端通过text/event-stream协议进行流式交互;
- 可选STDIO传输:通过配置spring.ai.mcp.server.stdio=true启用进程内通信;
- 依赖集成:包含spring-boot-starter-webflux和mcp-spring-webflux依赖,简化响应式编程模型集成。
配置属性
所有属性均以 spring.ai.mcp.server 为前缀:
属性 | 描述 | 默认值 |
---|---|---|
enabled | 启用/禁用MCP服务器 | true |
stdio | 启用/禁用STDIO传输 | false |
name | 服务器标识名称 | mcp-server |
version | 服务器版本 | 1.0.0 |
type | 服务器类型(SYNC/ASYNC) | SYNC |
resource-change-notification | 启用资源变更通知 | true |
tool-change-notification | 启用工具变更通知 | true |
prompt-change-notification | 启用提示模板变更通知 | true |
sse-message-endpoint | Web传输的SSE端点路径 | /mcp/message |
同步/异步服务器类型
- 同步服务器 :默认类型,基于McpSyncServer实现,适用于传统的请求-响应模式。通过配置spring.ai.mcp.server.type=SYNC启用,自动处理同步工具注册。
- 异步服务器 :基于McpAsyncServer实现,支持非阻塞操作,通过spring.ai.mcp.server.type=ASYNC启用,并集成Project Reactor实现响应式处理
传输选项
MCP服务器支持三种传输机制,每种对应独立的启动器:
- 标准输入/输出(STDIO):通过spring-ai-mcp-server-spring-boot-starter实现进程内通信;
- Spring MVC(SSE):通过spring-ai-mcp-server-webmvc-spring-boot-starter提供基于Servlet的SSE传输;
- Spring WebFlux(响应式SSE):通过spring-ai-mcp-server-webflux-spring-boot-starter实现异步流式处理。
功能与能力
MCP服务器启动器允许服务器向客户端暴露工具、资源和提示模板,并根据服务器类型自动转换同步/异步注册。
工具(Tools)
- 支持工具变更通知;
- 通过Spring Bean自动注册工具,示例如下:
@Bean
public ToolCallbackProvider myTools(...) {
List<ToolCallback> tools = ... // 定义工具列表
return ToolCallbackProvider.from(tools); // 自动转换为同步/异步注册
}
或使用底层API:
@Bean
public List<McpServerFeatures.SyncToolRegistration> myTools(...) {
List<McpServerFeatures.SyncToolRegistration> tools = ... // 同步工具注册
return tools;
}
资源管理(Resources)
- 支持静态/动态资源注册与变更通知;
- 通过Spring Bean自动注册资源,示例如下:
@Bean
public List<McpServerFeatures.SyncResourceRegistration> myResources() {
var systemInfoResource = new McpSchema.Resource(...); // 定义资源
var resourceRegistration = new McpServerFeatures.SyncResourceRegistration(
systemInfoResource,
request -> { /* 处理资源请求 */ }
);
return List.of(resourceRegistration); // 自动适配同步/异步
}
提示词管理(Prompts)
- 支持模板版本控制与变更通知;
- 通过Spring Bean自动注册提示模板,示例如下:
@Bean
public List<McpServerFeatures.SyncPromptRegistration> myPrompts() {
var prompt = new McpSchema.Prompt(...); // 定义提示模板
var promptRegistration = new McpServerFeatures.SyncPromptRegistration(
prompt,
getPromptRequest -> { /* 生成提示内容 */ }
);
return List.of(promptRegistration); // 自动适配同步/异步
}
根变更监听(Root Change Consumers)
- 当根目录变更时,支持向客户端发送通知;
- 通过Spring Bean注册监听器,示例如下:
@Bean
public Consumer<List<McpSchema.Root>> rootsChangeConsumer() {
return roots -> {
logger.info("根目录变更: {}", roots); // 处理根目录变更逻辑
};
}
使用示例
标准STDIO服务器配置
# 使用spring-ai-mcp-server-spring-boot-starter(标准场景)
spring:
ai:
mcp:
server:
name: stdio-mcp-server # 服务器名称
version: 1.0.0 # 服务器版本
type: SYNC # 同步模式(默认)[[6]][[10]]
WebMVC服务器配置
# 使用spring-ai-mcp-server-webmvc-spring-boot-starter(基于Servlet的SSE传输)
spring:
ai:
mcp:
server:
name: webmvc-mcp-server # 服务器名称
version: 1.0.0 # 服务器版本
type: SYNC # 同步模式
sse-message-endpoint: /mcp/messages # SSE消息端点路径
WebFlux服务器配置
# 使用spring-ai-mcp-server-webflux-spring-boot-starter(响应式SSE传输)
spring:
ai:
mcp:
server:
name: webflux-mcp-server # 服务器名称
version: 1.0.0 # 服务器版本
type: ASYNC # 异步模式(推荐用于响应式应用)
sse-message-endpoint: /mcp/messages # SSE消息端点路径
创建包含MCP服务器的Spring Boot应用
@Service
public class WeatherService {
@Tool(description = "通过城市名称获取天气信息") // 标记为MCP工具
public String getWeather(String cityName) {
// 工具实现逻辑(如调用天气API)
}
}
@SpringBootApplication
public class McpServerApplication {
private static final Logger logger = LoggerFactory.getLogger(McpServerApplication.class);
public static void main(String[] args) {
SpringApplication.run(McpServerApplication.class, args);
}
@Bean
public ToolCallbackProvider weatherTools(WeatherService weatherService) {
// 将WeatherService中的@Tool方法注册为MCP工具
return MethodToolCallbackProvider.builder()
.toolObjects(weatherService)
.build();
}
}
自动配置说明 :
- Spring Boot自动将ToolCallbackProvider注册为MCP工具,支持多Bean合并;
- 工具方法需通过@Tool注解标记,并遵循参数与返回值规范;
- 异步服务器(ASYNC)需搭配响应式传输(如WebFlux)以实现非阻塞处理
MCP Utilities
MCP工具实用程序为Spring AI应用集成模型上下文协议(MCP)提供基础支持,实现Spring AI工具系统与MCP服务器间的无缝通信,支持同步与异步操作。这些工具通常用于编程式配置MCP客户端/服务器及交互。若需简化配置,建议使用Spring Boot启动器。
工具回调适配器(Tool Callback Adapter)
功能:将MCP工具适配为Spring AI工具接口,支持同步与异步执行。
同步示例:
McpSyncClient mcpClient = // 获取MCP客户端
Tool mcpTool = // 获取MCP工具定义
ToolCallback callback = new SyncMcpToolCallback(mcpClient, mcpTool); // 同步适配器
// 通过Spring AI接口使用工具
ToolDefinition definition = callback.getToolDefinition(); // 获取工具定义
String result = callback.call("{\"param\": \"value\"}"); // 调用工具
异步示例:
McpAsyncClient mcpClient = // 获取MCP客户端
Tool mcpTool = // 获取MCP工具定义
ToolCallback callback = new AsyncMcpToolCallback(mcpClient, mcpTool);
// 通过Spring AI接口使用工具
ToolDefinition definition = callback.getToolDefinition();
String result = callback.call("{\"param\": \"value\"}");
工具回调提供者(Tool Callback Providers)
功能:从MCP客户端发现并提供工具。
同步示例:
//单客户端示例:
McpSyncClient mcpClient = // 获取MCP客户端
ToolCallbackProvider provider = new SyncMcpToolCallbackProvider(mcpClient); // 同步提供者
// 获取所有可用工具
ToolCallback[] tools = provider.getToolCallbacks(); // 返回工具回调列表
//多客户端示例
List<McpSyncClient> clients = // 获取客户端列表
List<ToolCallback> callbacks = SyncMcpToolCallbackProvider.syncToolCallbacks(clients); // 合并多客户端工具
异步示例:
//单客户端示例:
McpAsyncClient mcpClient = // 获取MCP客户端
ToolCallbackProvider provider = new AsyncMcpToolCallbackProvider(mcpClient);
// 获取所有可用工具
ToolCallback[] tools = provider.getToolCallbacks();
//多客户端示例
List<McpAsyncClient> clients = // obtain list of clients
Flux<ToolCallback> callbacks = AsyncMcpToolCallbackProvider.asyncToolCallbacks(clients);
McpToolUtils工具类
功能 :工具回调与MCP工具注册的转换。
- 工具回调转工具注册:
同步示例:
List<ToolCallback> toolCallbacks = // 获取工具回调列表
List<SyncToolRegistration> syncToolRegs = McpToolUtils.toSyncToolRegistration(toolCallbacks); // 转换为同步注册
// 通过McpServer.SyncSpec注册工具
McpServer.SyncSpec syncSpec = ...
syncSpec.tools(syncToolRegs); // 注册到服务器
异步示例:
List<ToolCallback> toolCallbacks = // obtain tool callbacks
List<AsyncToolRegistration> asyncToolRegs = McpToolUtils.toAsyncToolRegistration(toolCallbacks);
// 通过McpServer.AsyncSpec注册工具
McpServer.AsyncSpec asyncSpec = ...
asyncSpec.tools(asyncToolRegs);
- 从MCP客户端获取工具回调:
同步示例:
List<McpSyncClient> syncClients = // 获取同步客户端列表
List<ToolCallback> syncCallbacks = McpToolUtils.getToolCallbacksFromSyncClients(syncClients); // 自动提取工具
异步示例:
List<McpAsyncClient> asyncClients = // 获取同步客户端列表
List<ToolCallback> asyncCallbacks = McpToolUtils.getToolCallbacksFromAsyncClients(asyncClients);
原生镜像支持
McpHints类 :为MCP模式类提供GraalVM原生镜像反射提示,自动注册必要反射配置,确保原生编译兼容性