欢迎光临
我们一直在努力

75_Spring AI 干货笔记之 MCP 客户端注解

一、MCP 客户端注解

MCP 客户端注解提供了一种使用 Java 注解来实现 MCP 客户端处理器的声明式方法。这些注解简化了服务器通知和客户端操作的处理。

所有 MCP 客户端注解必须包含一个 clients 参数,用于将处理器与特定的 MCP 客户端连接关联。该参数必须与应用程序配置文件中配置的连接名称相匹配。

二、客户端注解

2.1 @McpLogging

@McpLogging 注解用于处理来自 MCP 服务器的日志消息通知。

2.1.1 基本用法

@Component
public class LoggingHandler {

@McpLogging(clients = \”my-mcp-server\”)
public void handleLoggingMessage(LoggingMessageNotification notification) {


System.out.println(\”收到日志: \” + notification.level() +
\” – \” + notification.data());
}
}

2.1.2 使用独立参数

@McpLogging(clients = \”my-mcp-server\”)
public void handleLoggingWithParams(LoggingLevel level, String logger, String data) {


System.out.println(String.format(\”[%s] %s: %s\”, level, logger, data));
}

2.2 @McpSampling

@McpSampling 注解用于处理来自 MCP 服务器的大语言模型补全采样请求。

2.2.1 同步实现

@Component
public class SamplingHandler {

@McpSampling(clients = \”llm-server\”)
public CreateMessageResult handleSamplingRequest(CreateMessageRequest request) {


// 处理请求并生成响应
String response = generateLLMResponse(request);

return CreateMessageResult.builder()
.role(Role.ASSISTANT)
.content(new TextContent(response))
.model(\”gpt-4\”)
.build();
}
}

2.2.2 异步实现

@Component
public class AsyncSamplingHandler {

@McpSampling(clients = \”llm-server\”)
public Mono<CreateMessageResult> handleAsyncSampling(CreateMessageRequest request) {


return Mono.fromCallable(() -> {


String response = generateLLMResponse(request);

return CreateMessageResult.builder()
.role(Role.ASSISTANT)
.content(new TextContent(response))
.model(\”gpt-4\”)
.build();
}).subscribeOn(Schedulers.boundedElastic());
}
}

2.3 @McpElicitation

@McpElicitation 注解用于处理向用户收集额外信息的征询请求。

2.3.1 基本用法

@Component
public class ElicitationHandler {

@McpElicitation(clients = \”interactive-server\”)
public ElicitResult handleElicitationRequest(ElicitRequest request) {


// 向用户展示请求并收集输入
Map<String, Object> userData = presentFormToUser

赞(0)
未经允许不得转载:171主机测评 » 75_Spring AI 干货笔记之 MCP 客户端注解
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址