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