Spring AI之模型上下文协议(MCP)


模型上下文协议(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服务器建立并管理连接。该客户端实现协议的客户端部分,具体处理以下功能:

  1. 协议版本协商 :确保与服务器的兼容性;
  2. 能力协商 :确定可用功能(如工具支持范围);
  3. 消息传输与JSON-RPC通信 :实现结构化数据交互;
  4. 工具发现与执行 :动态识别并调用外部工具;
  5. 资源访问与管理 :协调模型与外部数据源的交互;
  6. 提示系统交互 :支持与模型提示(Prompt)系统的集成。

可选功能

  • 根管理(Roots Management)
  • 采样支持(如模型输出概率控制)
  • 同步与异步操作模式

传输选项

  • 基于标准输入/输出的传输(适用于进程间通信);
  • 基于Java HttpClient的SSE客户端传输(支持事件流);
  • 基于WebFlux的SSE客户端传输(用于响应式HTTP流处理)。
    在这里插入图片描述

MCP服务器

MCP服务器是MCP架构中的基础组件,负责为客户端提供工具、资源及能力支持。该服务器实现协议的服务端部分,核心职责包括:

  1. 服务端协议操作实现 :处理协议交互逻辑;
  2. 工具暴露与发现 :通过标准化接口提供可调用的外部工具(如函数/API);
  3. 基于URI的资源管理 :支持文件、数据库等本地资源的安全访问;
  4. 提示模板提供与处理 :管理预定义的Prompt模板并动态注入上下文;
  5. 能力协商 :与客户端协商支持的功能范围(如同步/异步模式);
  6. 结构化日志与通知 :记录操作日志并推送状态变更事件;
  7. 多客户端并发管理 :支持高并发连接与会话隔离;
  8. 同步与异步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客户端启动器提供以下功能

  1. 多客户端实例管理 :支持同时维护多个客户端实例以适配不同场景;
  2. 自动客户端初始化 (若启用):通过Spring Boot自动装配机制加载默认配置;
  3. 多种命名传输支持 :允许通过名称区分STDIO、HTTP或WebFlux等传输协议;
  4. 与Spring AI工具执行框架集成 :无缝衔接工具调用与Prompt处理流程;
  5. 完善的生命周期管理 :应用上下文关闭时自动清理会话与资源;
  6. 通过自定义器实现客户端可定制性 :允许通过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
nameMCP客户端实例名称(用于兼容性检查)spring-ai-mcp-client
versionMCP客户端实例版本1.0.0
initialized是否在创建时初始化客户端true
request-timeoutMCP客户端请求的超时时间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配置。
客户端定制化

自动配置通过回调接口提供丰富的客户端规格定制能力,涵盖请求超时、事件处理及消息处理等行为。

支持以下配置选项:

  1. 请求配置 :设置自定义请求超时时间;
  2. 自定义采样处理器 :标准化服务器通过客户端请求LLM采样(补全或生成)的流程,客户端可控制模型访问权限,无需服务器提供API密钥;
  3. 文件系统(Roots)访问 :客户端向服务器暴露文件系统根目录,定义服务器可操作的目录范围,并支持根目录变更通知;
  4. 事件处理器 :客户端监听服务器事件:
    • 工具变更通知 :可用工具列表变化时触发(如新增或移除工具);
    • 资源变更通知 :可用资源列表变化时触发;
    • 提示(Prompt)变更通知 :可用提示模板列表变化时触发;
  5. 日志处理器 :服务器向客户端发送结构化日志,客户端可设置最低日志级别控制输出

根据应用需求,可实现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交互流程

使用示例

  1. 添加启动器依赖 :在项目中引入对应的MCP客户端启动器(如spring-ai-mcp-client-spring-boot-starterspring-ai-mcp-client-webflux-spring-boot-starter)。
  2. 配置客户端 :在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"
  1. 注入客户端实例
// 同步客户端注入(type=SYNC时使用)
@Autowired
private List<McpSyncClient> mcpSyncClients;  

// 异步客户端注入(type=ASYNC时使用)
@Autowired
private List<McpAsyncClient> mcpAsyncClients;  
  1. 工具回调集成
  2. 通过ToolCallbackProvider获取所有注册的MCP工具回调,用于与Spring AI工具框架集成:
@Autowired
private SyncMcpToolCallbackProvider toolCallbackProvider;

// 获取工具回调列表
ToolCallback[] toolCallbacks = toolCallbackProvider.getToolCallbacks();

注意:配置中的stdio部分支持与本地进程通信,而sse部分用于远程服务器交互。工具回调机制允许模型直接调用外部API或文件系统,如查询天气或读取本地文件

示例应用

  1. Brave Wet Search Chatbot\n基于模型上下文协议(MCP)实现的聊天机器人,通过集成Web搜索服务器(如Brave Search)处理用户查询并返回搜索结果。
  2. Default MCP Client Starter\n演示如何使用基础启动器spring-ai-mcp-client-spring-boot-starter快速配置MCP客户端,支持同步请求与SSE传输。
  3. 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服务器启动器的核心功能包括

  1. 自动配置MCP服务器组件 :包括协议处理、工具暴露与资源管理;
  2. 支持同步与异步操作模式 :适配不同场景的请求处理需求(通过type参数配置);
  3. 多传输层选项 :支持STDIO(进程内通信)、基于Servlet的SSE及WebFlux的响应式SSE传输;
  4. 灵活的工具、资源与提示注册 :允许动态注册文件系统访问、数据库工具或Prompt模板;
  5. 变更通知能力 :支持向客户端推送工具、资源或提示模板的变更事件

Starters

标准MCP服务器

使用以下以来实现完整标准MCP服务器功能支持(基于STDIO传输)

<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-mcp-server-spring-boot-starter</artifactId>
</dependency>

适用场景

  • 适合命令行工具与桌面应用;
  • 无需额外Web依赖(基于标准输入/输出协议)。

自动配置功能:\n此启动器激活McpServerAutoConfiguration自动配置,负责以下核心功能:

  1. 基础服务器组件配置:包括协议处理器与传输层初始化;
  2. 工具、资源与提示注册管理:自动将Spring Bean中的工具(@Tool注解标记)和资源暴露给客户端;
  3. 服务器能力与变更通知管理:支持动态推送工具、资源或提示模板的变更事件;
  4. 同步与异步实现支持:提供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实现自动配置

  1. 基于HTTP的传输:通过WebMvcSseServerTransport实现Spring MVC的SSE传输;
  2. 自动配置的SSE端点:提供标准化事件流接口(如/mcp/sse),支持客户端通过text/event-stream协议通信;
  3. 可选STDIO传输:通过配置spring.ai.mcp.server.stdio=true启用进程内通信;
  4. 依赖集成:包含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实现自动配置

  1. 响应式传输层:通过WebFluxSseServerTransport实现基于Spring WebFlux的响应式SSE传输;
  2. 自动配置的响应式SSE端点:提供非阻塞事件流接口(如/mcp/sse),支持客户端通过text/event-stream协议进行流式交互;
  3. 可选STDIO传输:通过配置spring.ai.mcp.server.stdio=true启用进程内通信;
  4. 依赖集成:包含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-endpointWeb传输的SSE端点路径/mcp/message

同步/异步服务器类型

  • 同步服务器 :默认类型,基于McpSyncServer实现,适用于传统的请求-响应模式。通过配置spring.ai.mcp.server.type=SYNC启用,自动处理同步工具注册。
  • 异步服务器 :基于McpAsyncServer实现,支持非阻塞操作,通过spring.ai.mcp.server.type=ASYNC启用,并集成Project Reactor实现响应式处理

传输选项

MCP服务器支持三种传输机制,每种对应独立的启动器:

  1. 标准输入/输出(STDIO):通过spring-ai-mcp-server-spring-boot-starter实现进程内通信;
  2. Spring MVC(SSE):通过spring-ai-mcp-server-webmvc-spring-boot-starter提供基于Servlet的SSE传输;
  3. 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工具注册的转换。

  1. 工具回调转工具注册

同步示例

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);
  1. 从MCP客户端获取工具回调

同步示例

List<McpSyncClient> syncClients = // 获取同步客户端列表
List<ToolCallback> syncCallbacks = McpToolUtils.getToolCallbacksFromSyncClients(syncClients); // 自动提取工具

异步示例

List<McpAsyncClient> asyncClients = // 获取同步客户端列表
List<ToolCallback> asyncCallbacks = McpToolUtils.getToolCallbacksFromAsyncClients(asyncClients);
原生镜像支持

McpHints类 :为MCP模式类提供GraalVM原生镜像反射提示,自动注册必要反射配置,确保原生编译兼容性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NtK11KGXVkk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值