Skip to content

Commit 65262ec

Browse files
committed
Address review comments
Signed-off-by: Christian Tzolov <[email protected]>
1 parent 34ddec3 commit 65262ec

File tree

3 files changed

+68
-92
lines changed

3 files changed

+68
-92
lines changed

auto-configurations/mcp/spring-ai-autoconfigure-mcp-server/src/main/java/org/springframework/ai/mcp/server/autoconfigure/ToolCallbackConverterAutoConfiguration.java

Lines changed: 23 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import org.springframework.boot.context.properties.EnableConfigurationProperties;
2929
import org.springframework.context.annotation.Bean;
3030
import org.springframework.context.annotation.Conditional;
31-
import org.springframework.core.log.LogAccessor;
3231
import org.springframework.util.CollectionUtils;
3332
import org.springframework.util.MimeType;
3433

@@ -41,29 +40,14 @@
4140
@Conditional(ToolCallbackConverterCondition.class)
4241
public class ToolCallbackConverterAutoConfiguration {
4342

44-
private static final LogAccessor logger = new LogAccessor(ToolCallbackConverterAutoConfiguration.class);
45-
4643
@Bean
4744
@ConditionalOnProperty(prefix = McpServerProperties.CONFIG_PREFIX, name = "type", havingValue = "SYNC",
4845
matchIfMissing = true)
4946
public List<McpServerFeatures.SyncToolSpecification> syncTools(ObjectProvider<List<ToolCallback>> toolCalls,
5047
List<ToolCallback> toolCallbacksList, List<ToolCallbackProvider> toolCallbackProvider,
5148
McpServerProperties serverProperties) {
5249

53-
List<ToolCallback> tools = new ArrayList<>(toolCalls.stream().flatMap(List::stream).toList());
54-
55-
if (!CollectionUtils.isEmpty(toolCallbacksList)) {
56-
tools.addAll(toolCallbacksList);
57-
}
58-
59-
List<ToolCallback> providerToolCallbacks = toolCallbackProvider.stream()
60-
.map(pr -> List.of(pr.getToolCallbacks()))
61-
.flatMap(List::stream)
62-
.filter(fc -> fc instanceof ToolCallback)
63-
.map(fc -> (ToolCallback) fc)
64-
.toList();
65-
66-
tools.addAll(providerToolCallbacks);
50+
List<ToolCallback> tools = this.aggregateToolCallbacks(toolCalls, toolCallbacksList, toolCallbackProvider);
6751

6852
return this.toSyncToolSpecifications(tools, serverProperties);
6953
}
@@ -94,22 +78,10 @@ private List<McpServerFeatures.SyncToolSpecification> toSyncToolSpecifications(L
9478
@Bean
9579
@ConditionalOnProperty(prefix = McpServerProperties.CONFIG_PREFIX, name = "type", havingValue = "ASYNC")
9680
public List<McpServerFeatures.AsyncToolSpecification> asyncTools(ObjectProvider<List<ToolCallback>> toolCalls,
97-
List<ToolCallback> toolCallbackList, List<ToolCallbackProvider> toolCallbackProvider,
81+
List<ToolCallback> toolCallbacksList, List<ToolCallbackProvider> toolCallbackProvider,
9882
McpServerProperties serverProperties) {
9983

100-
List<ToolCallback> tools = new ArrayList<>(toolCalls.stream().flatMap(List::stream).toList());
101-
if (!CollectionUtils.isEmpty(toolCallbackList)) {
102-
tools.addAll(toolCallbackList);
103-
}
104-
105-
List<ToolCallback> providerToolCallbacks = toolCallbackProvider.stream()
106-
.map(pr -> List.of(pr.getToolCallbacks()))
107-
.flatMap(List::stream)
108-
.filter(fc -> fc instanceof ToolCallback)
109-
.map(fc -> (ToolCallback) fc)
110-
.toList();
111-
112-
tools.addAll(providerToolCallbacks);
84+
List<ToolCallback> tools = this.aggregateToolCallbacks(toolCalls, toolCallbacksList, toolCallbackProvider);
11385

11486
return this.toAsyncToolSpecification(tools, serverProperties);
11587
}
@@ -136,4 +108,24 @@ private List<McpServerFeatures.AsyncToolSpecification> toAsyncToolSpecification(
136108
.toList();
137109
}
138110

111+
private List<ToolCallback> aggregateToolCallbacks(ObjectProvider<List<ToolCallback>> toolCalls,
112+
List<ToolCallback> toolCallbacksList, List<ToolCallbackProvider> toolCallbackProvider) {
113+
114+
List<ToolCallback> tools = new ArrayList<>(toolCalls.stream().flatMap(List::stream).toList());
115+
116+
if (!CollectionUtils.isEmpty(toolCallbacksList)) {
117+
tools.addAll(toolCallbacksList);
118+
}
119+
120+
List<ToolCallback> providerToolCallbacks = toolCallbackProvider.stream()
121+
.map(pr -> List.of(pr.getToolCallbacks()))
122+
.flatMap(List::stream)
123+
.filter(fc -> fc instanceof ToolCallback)
124+
.map(fc -> (ToolCallback) fc)
125+
.toList();
126+
127+
tools.addAll(providerToolCallbacks);
128+
return tools;
129+
}
130+
139131
}

auto-configurations/mcp/spring-ai-autoconfigure-mcp-stateless-server-common/src/main/java/org/springframework/ai/mcp/server/stateless/autoconfigure/ToolCallbackConverterAutoConfiguration.java

Lines changed: 23 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import org.springframework.boot.context.properties.EnableConfigurationProperties;
2929
import org.springframework.context.annotation.Bean;
3030
import org.springframework.context.annotation.Conditional;
31-
import org.springframework.core.log.LogAccessor;
3231
import org.springframework.util.CollectionUtils;
3332
import org.springframework.util.MimeType;
3433

@@ -41,29 +40,14 @@
4140
@Conditional(ToolCallbackConverterCondition.class)
4241
public class ToolCallbackConverterAutoConfiguration {
4342

44-
private static final LogAccessor logger = new LogAccessor(McpStatelessServerAutoConfiguration.class);
45-
4643
@Bean
4744
@ConditionalOnProperty(prefix = McpStatelessServerProperties.CONFIG_PREFIX, name = "type", havingValue = "SYNC",
4845
matchIfMissing = true)
4946
public List<McpStatelessServerFeatures.SyncToolSpecification> syncTools(
50-
ObjectProvider<List<ToolCallback>> toolCalls, List<ToolCallback> toolCallbacksList,
47+
ObjectProvider<List<ToolCallback>> toolCalls, List<ToolCallback> toolCallbackList,
5148
List<ToolCallbackProvider> toolCallbackProvider, McpStatelessServerProperties serverProperties) {
5249

53-
List<ToolCallback> tools = new ArrayList<>(toolCalls.stream().flatMap(List::stream).toList());
54-
55-
if (!CollectionUtils.isEmpty(toolCallbacksList)) {
56-
tools.addAll(toolCallbacksList);
57-
}
58-
59-
List<ToolCallback> providerToolCallbacks = toolCallbackProvider.stream()
60-
.map(pr -> List.of(pr.getToolCallbacks()))
61-
.flatMap(List::stream)
62-
.filter(fc -> fc instanceof ToolCallback)
63-
.map(fc -> (ToolCallback) fc)
64-
.toList();
65-
66-
tools.addAll(providerToolCallbacks);
50+
List<ToolCallback> tools = this.aggregateToolCallbacks(toolCalls, toolCallbackList, toolCallbackProvider);
6751

6852
return this.toSyncToolSpecifications(tools, serverProperties);
6953
}
@@ -93,19 +77,7 @@ public List<McpStatelessServerFeatures.AsyncToolSpecification> asyncTools(
9377
ObjectProvider<List<ToolCallback>> toolCalls, List<ToolCallback> toolCallbackList,
9478
List<ToolCallbackProvider> toolCallbackProvider, McpStatelessServerProperties serverProperties) {
9579

96-
List<ToolCallback> tools = new ArrayList<>(toolCalls.stream().flatMap(List::stream).toList());
97-
if (!CollectionUtils.isEmpty(toolCallbackList)) {
98-
tools.addAll(toolCallbackList);
99-
}
100-
101-
List<ToolCallback> providerToolCallbacks = toolCallbackProvider.stream()
102-
.map(pr -> List.of(pr.getToolCallbacks()))
103-
.flatMap(List::stream)
104-
.filter(fc -> fc instanceof ToolCallback)
105-
.map(fc -> (ToolCallback) fc)
106-
.toList();
107-
108-
tools.addAll(providerToolCallbacks);
80+
List<ToolCallback> tools = this.aggregateToolCallbacks(toolCalls, toolCallbackList, toolCallbackProvider);
10981

11082
return this.toAsyncToolSpecification(tools, serverProperties);
11183
}
@@ -128,4 +100,24 @@ private List<McpStatelessServerFeatures.AsyncToolSpecification> toAsyncToolSpeci
128100
.toList();
129101
}
130102

103+
private List<ToolCallback> aggregateToolCallbacks(ObjectProvider<List<ToolCallback>> toolCalls,
104+
List<ToolCallback> toolCallbacksList, List<ToolCallbackProvider> toolCallbackProvider) {
105+
106+
List<ToolCallback> tools = new ArrayList<>(toolCalls.stream().flatMap(List::stream).toList());
107+
108+
if (!CollectionUtils.isEmpty(toolCallbacksList)) {
109+
tools.addAll(toolCallbacksList);
110+
}
111+
112+
List<ToolCallback> providerToolCallbacks = toolCallbackProvider.stream()
113+
.map(pr -> List.of(pr.getToolCallbacks()))
114+
.flatMap(List::stream)
115+
.filter(fc -> fc instanceof ToolCallback)
116+
.map(fc -> (ToolCallback) fc)
117+
.toList();
118+
119+
tools.addAll(providerToolCallbacks);
120+
return tools;
121+
}
122+
131123
}

auto-configurations/mcp/spring-ai-autoconfigure-mcp-streamable-server-common/src/main/java/org/springframework/ai/mcp/server/streamable/autoconfigure/ToolCallbackConverterAutoConfiguration.java

Lines changed: 22 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import org.springframework.boot.context.properties.EnableConfigurationProperties;
2929
import org.springframework.context.annotation.Bean;
3030
import org.springframework.context.annotation.Conditional;
31-
import org.springframework.core.log.LogAccessor;
3231
import org.springframework.util.CollectionUtils;
3332
import org.springframework.util.MimeType;
3433

@@ -41,29 +40,14 @@
4140
@Conditional(ToolCallbackConverterCondition.class)
4241
public class ToolCallbackConverterAutoConfiguration {
4342

44-
private static final LogAccessor logger = new LogAccessor(ToolCallbackConverterAutoConfiguration.class);
45-
4643
@Bean
4744
@ConditionalOnProperty(prefix = McpStreamableServerProperties.CONFIG_PREFIX, name = "type", havingValue = "SYNC",
4845
matchIfMissing = true)
4946
public List<McpServerFeatures.SyncToolSpecification> syncTools(ObjectProvider<List<ToolCallback>> toolCalls,
5047
List<ToolCallback> toolCallbacksList, List<ToolCallbackProvider> toolCallbackProvider,
5148
McpStreamableServerProperties serverProperties) {
5249

53-
List<ToolCallback> tools = new ArrayList<>(toolCalls.stream().flatMap(List::stream).toList());
54-
55-
if (!CollectionUtils.isEmpty(toolCallbacksList)) {
56-
tools.addAll(toolCallbacksList);
57-
}
58-
59-
List<ToolCallback> providerToolCallbacks = toolCallbackProvider.stream()
60-
.map(pr -> List.of(pr.getToolCallbacks()))
61-
.flatMap(List::stream)
62-
.filter(fc -> fc instanceof ToolCallback)
63-
.map(fc -> (ToolCallback) fc)
64-
.toList();
65-
66-
tools.addAll(providerToolCallbacks);
50+
List<ToolCallback> tools = this.aggregateToolCallbacks(toolCalls, toolCallbacksList, toolCallbackProvider);
6751

6852
return this.toSyncToolSpecifications(tools, serverProperties);
6953
}
@@ -97,19 +81,7 @@ public List<McpServerFeatures.AsyncToolSpecification> asyncTools(ObjectProvider<
9781
List<ToolCallback> toolCallbackList, List<ToolCallbackProvider> toolCallbackProvider,
9882
McpStreamableServerProperties serverProperties) {
9983

100-
List<ToolCallback> tools = new ArrayList<>(toolCalls.stream().flatMap(List::stream).toList());
101-
if (!CollectionUtils.isEmpty(toolCallbackList)) {
102-
tools.addAll(toolCallbackList);
103-
}
104-
105-
List<ToolCallback> providerToolCallbacks = toolCallbackProvider.stream()
106-
.map(pr -> List.of(pr.getToolCallbacks()))
107-
.flatMap(List::stream)
108-
.filter(fc -> fc instanceof ToolCallback)
109-
.map(fc -> (ToolCallback) fc)
110-
.toList();
111-
112-
tools.addAll(providerToolCallbacks);
84+
List<ToolCallback> tools = this.aggregateToolCallbacks(toolCalls, toolCallbackList, toolCallbackProvider);
11385

11486
return this.toAsyncToolSpecification(tools, serverProperties);
11587
}
@@ -136,4 +108,24 @@ private List<McpServerFeatures.AsyncToolSpecification> toAsyncToolSpecification(
136108
.toList();
137109
}
138110

111+
private List<ToolCallback> aggregateToolCallbacks(ObjectProvider<List<ToolCallback>> toolCalls,
112+
List<ToolCallback> toolCallbacksList, List<ToolCallbackProvider> toolCallbackProvider) {
113+
114+
List<ToolCallback> tools = new ArrayList<>(toolCalls.stream().flatMap(List::stream).toList());
115+
116+
if (!CollectionUtils.isEmpty(toolCallbacksList)) {
117+
tools.addAll(toolCallbacksList);
118+
}
119+
120+
List<ToolCallback> providerToolCallbacks = toolCallbackProvider.stream()
121+
.map(pr -> List.of(pr.getToolCallbacks()))
122+
.flatMap(List::stream)
123+
.filter(fc -> fc instanceof ToolCallback)
124+
.map(fc -> (ToolCallback) fc)
125+
.toList();
126+
127+
tools.addAll(providerToolCallbacks);
128+
return tools;
129+
}
130+
139131
}

0 commit comments

Comments
 (0)