2828import io .modelcontextprotocol .server .McpServer .AsyncSpecification ;
2929import io .modelcontextprotocol .server .McpServer .SyncSpecification ;
3030import io .modelcontextprotocol .server .McpServerFeatures ;
31- // import io.modelcontextprotocol.server.McpServerFeatures.AsyncCompletionSpecification;
31+ import io .modelcontextprotocol .server .McpServerFeatures .AsyncCompletionSpecification ;
3232import io .modelcontextprotocol .server .McpServerFeatures .AsyncPromptSpecification ;
3333import io .modelcontextprotocol .server .McpServerFeatures .AsyncResourceSpecification ;
3434import io .modelcontextprotocol .server .McpServerFeatures .AsyncToolSpecification ;
35- // import io.modelcontextprotocol.server.McpServerFeatures.SyncCompletionSpecification;
35+ import io .modelcontextprotocol .server .McpServerFeatures .SyncCompletionSpecification ;
3636import io .modelcontextprotocol .server .McpServerFeatures .SyncPromptSpecification ;
3737import io .modelcontextprotocol .server .McpServerFeatures .SyncResourceSpecification ;
3838import io .modelcontextprotocol .server .McpServerFeatures .SyncToolSpecification ;
@@ -175,7 +175,7 @@ public McpSyncServer mcpSyncServer(McpServerTransportProvider transportProvider,
175175 ObjectProvider <List <SyncToolSpecification >> tools ,
176176 ObjectProvider <List <SyncResourceSpecification >> resources ,
177177 ObjectProvider <List <SyncPromptSpecification >> prompts ,
178- // ObjectProvider<List<SyncCompletionSpecification>> completions,
178+ ObjectProvider <List <SyncCompletionSpecification >> completions ,
179179 ObjectProvider <BiConsumer <McpSyncServerExchange , List <McpSchema .Root >>> rootsChangeConsumers ,
180180 List <ToolCallbackProvider > toolCallbackProvider ) {
181181
@@ -219,15 +219,14 @@ public McpSyncServer mcpSyncServer(McpServerTransportProvider transportProvider,
219219 + serverProperties .isPromptChangeNotification ());
220220 }
221221
222- // List<SyncCompletionSpecification> completionSpecifications =
223- // completions.stream()
224- // .flatMap(List::stream)
225- // .toList();
226- // if (!CollectionUtils.isEmpty(completionSpecifications)) {
227- // serverBuilder.completions(completionSpecifications);
228- // capabilitiesBuilder.completions();
229- // logger.info("Registered completions: " + completionSpecifications.size());
230- // }
222+ List <SyncCompletionSpecification > completionSpecifications = completions .stream ()
223+ .flatMap (List ::stream )
224+ .toList ();
225+ if (!CollectionUtils .isEmpty (completionSpecifications )) {
226+ serverBuilder .completions (completionSpecifications );
227+ capabilitiesBuilder .completions ();
228+ logger .info ("Registered completions: " + completionSpecifications .size ());
229+ }
231230
232231 rootsChangeConsumers .ifAvailable (consumer -> {
233232 serverBuilder .rootsChangeHandler ((exchange , roots ) -> consumer .accept (exchange , roots ));
@@ -283,7 +282,7 @@ public McpAsyncServer mcpAsyncServer(McpServerTransportProvider transportProvide
283282 ObjectProvider <List <AsyncToolSpecification >> tools ,
284283 ObjectProvider <List <AsyncResourceSpecification >> resources ,
285284 ObjectProvider <List <AsyncPromptSpecification >> prompts ,
286- // ObjectProvider<List<AsyncCompletionSpecification>> completions,
285+ ObjectProvider <List <AsyncCompletionSpecification >> completions ,
287286 ObjectProvider <BiConsumer <McpAsyncServerExchange , List <McpSchema .Root >>> rootsChangeConsumer ,
288287 List <ToolCallbackProvider > toolCallbackProvider ) {
289288
@@ -327,15 +326,14 @@ public McpAsyncServer mcpAsyncServer(McpServerTransportProvider transportProvide
327326 + serverProperties .isPromptChangeNotification ());
328327 }
329328
330- // List<AsyncCompletionSpecification> completionSpecifications =
331- // completions.stream()
332- // .flatMap(List::stream)
333- // .toList();
334- // if (!CollectionUtils.isEmpty(completionSpecifications)) {
335- // serverBuilder.completions(completionSpecifications);
336- // capabilitiesBuilder.completions();
337- // logger.info("Registered completions: " + completionSpecifications.size());
338- // }
329+ List <AsyncCompletionSpecification > completionSpecifications = completions .stream ()
330+ .flatMap (List ::stream )
331+ .toList ();
332+ if (!CollectionUtils .isEmpty (completionSpecifications )) {
333+ serverBuilder .completions (completionSpecifications );
334+ capabilitiesBuilder .completions ();
335+ logger .info ("Registered completions: " + completionSpecifications .size ());
336+ }
339337
340338 rootsChangeConsumer .ifAvailable (consumer -> {
341339 BiFunction <McpAsyncServerExchange , List <McpSchema .Root >, Mono <Void >> asyncConsumer = (exchange , roots ) -> {
@@ -353,4 +351,4 @@ public McpAsyncServer mcpAsyncServer(McpServerTransportProvider transportProvide
353351 return serverBuilder .build ();
354352 }
355353
356- }
354+ }
0 commit comments