学习如何实现和配置模型上下文协议 (MCP) 服务器
// 使用自定义配置创建服务器 McpSyncServer syncServer = McpServer.sync(transport) .serverInfo("my-server", "1.0.0") .capabilities(ServerCapabilities.builder() .resources(true) // 启用资源支持 .tools(true) // 启用工具支持 .prompts(true) // 启用提示支持 .logging() // 启用日志支持 .build()) .build(); // 初始化服务器 syncServer.initialize(); // 注册工具、资源和提示 syncServer.addTool(syncToolRegistration); syncServer.addResource(syncResourceRegistration); syncServer.addPrompt(syncPromptRegistration); // 发送日志通知 syncServer.loggingNotification(LoggingMessageNotification.builder() .level(LoggingLevel.INFO) .logger("custom-logger") .data("Server initialized") .build()); // 完成后关闭服务器 syncServer.close();
StdioServerTransport transport = new StdioServerTransport(new ObjectMapper());
var capabilities = ServerCapabilities.builder() .resources(false, true) // 资源支持与列表更改通知 .tools(true) // 工具支持与列表更改通知 .prompts(true) // 提示支持与列表更改通知 .logging() // 启用日志支持 (默认启用,日志级别为 INFO) .build();
// 发送日志消息给客户端 server.loggingNotification(LoggingMessageNotification.builder() .level(LoggingLevel.INFO) .logger("custom-logger") .data("自定义日志消息") .build());
mcpClient.setLoggingLevel(level)
// 同步工具注册 var syncToolRegistration = new McpServerFeatures.SyncToolRegistration( new Tool("计算器", "基本计算器", Map.of( "operation", "string", "a", "number", "b", "number" )), arguments -> { // 工具实现 return new CallToolResult(result, false); } );
// 同步资源注册 var syncResourceRegistration = new McpServerFeatures.SyncResourceRegistration( new Resource("custom://resource", "名称", "描述", "mime-type", null), request -> { // 资源读取实现 return new ReadResourceResult(contents); } );
// 同步提示注册 var syncPromptRegistration = new McpServerFeatures.SyncPromptRegistration( new Prompt("问候", "描述", List.of( new PromptArgument("名称", "描述", true) )), request -> { // 提示实现 return new GetPromptResult(description, messages); } );