Skip to content

Commit 8105b7a

Browse files
google-genai-botcopybara-github
authored andcommitted
feat: Allowing McpAsycToolset Builder to take in a McpSessionManager
PiperOrigin-RevId: 897886449
1 parent 14027d1 commit 8105b7a

1 file changed

Lines changed: 21 additions & 34 deletions

File tree

core/src/main/java/com/google/adk/tools/mcp/McpAsyncToolset.java

Lines changed: 21 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,15 @@
1616

1717
package com.google.adk.tools.mcp;
1818

19+
import static com.google.common.base.Preconditions.checkNotNull;
20+
1921
import com.fasterxml.jackson.databind.ObjectMapper;
2022
import com.google.adk.JsonBaseModel;
2123
import com.google.adk.agents.ReadonlyContext;
2224
import com.google.adk.tools.BaseTool;
2325
import com.google.adk.tools.BaseToolset;
2426
import com.google.adk.tools.NamedToolPredicate;
2527
import com.google.adk.tools.ToolPredicate;
26-
import com.google.common.base.Preconditions;
2728
import com.google.common.collect.ImmutableList;
2829
import com.google.errorprone.annotations.CanIgnoreReturnValue;
2930
import io.modelcontextprotocol.client.McpAsyncClient;
@@ -64,21 +65,31 @@ public class McpAsyncToolset implements BaseToolset {
6465
private final @Nullable Object toolFilter;
6566
private final AtomicReference<Mono<List<McpAsyncTool>>> mcpTools = new AtomicReference<>();
6667

68+
public static Builder builder() {
69+
return new Builder();
70+
}
71+
6772
/** Builder for McpAsyncToolset */
6873
public static class Builder {
69-
private Object connectionParams = null;
74+
private McpSessionManager mcpSessionManager = null;
7075
private ObjectMapper objectMapper = null;
7176
private @Nullable Object toolFilter = null;
7277

7378
@CanIgnoreReturnValue
7479
public Builder connectionParams(ServerParameters connectionParams) {
75-
this.connectionParams = connectionParams;
80+
this.mcpSessionManager = new McpSessionManager(connectionParams);
7681
return this;
7782
}
7883

7984
@CanIgnoreReturnValue
8085
public Builder connectionParams(SseServerParameters connectionParams) {
81-
this.connectionParams = connectionParams;
86+
this.mcpSessionManager = new McpSessionManager(connectionParams);
87+
return this;
88+
}
89+
90+
@CanIgnoreReturnValue
91+
public Builder mcpSessionManager(McpSessionManager mcpSessionManager) {
92+
this.mcpSessionManager = mcpSessionManager;
8293
return this;
8394
}
8495

@@ -90,7 +101,7 @@ public Builder objectMapper(ObjectMapper objectMapper) {
90101

91102
@CanIgnoreReturnValue
92103
public Builder toolFilter(List<String> toolNames) {
93-
this.toolFilter = new NamedToolPredicate(Preconditions.checkNotNull(toolNames));
104+
this.toolFilter = new NamedToolPredicate(checkNotNull(toolNames));
94105
return this;
95106
}
96107

@@ -104,14 +115,8 @@ public McpAsyncToolset build() {
104115
if (objectMapper == null) {
105116
objectMapper = JsonBaseModel.getMapper();
106117
}
107-
if (connectionParams instanceof ServerParameters setSelectedParams) {
108-
return new McpAsyncToolset(setSelectedParams, objectMapper, toolFilter);
109-
} else if (connectionParams instanceof SseServerParameters sseServerParameters) {
110-
return new McpAsyncToolset(sseServerParameters, objectMapper, toolFilter);
111-
} else {
112-
throw new IllegalArgumentException(
113-
"connectionParams must be either ServerParameters or SseServerParameters");
114-
}
118+
checkNotNull(mcpSessionManager, "Connection params must be set");
119+
return new McpAsyncToolset(mcpSessionManager, objectMapper, toolFilter);
115120
}
116121
}
117122

@@ -123,29 +128,11 @@ public McpAsyncToolset build() {
123128
* @param toolFilter Either a ToolPredicate or a List of tool names.
124129
*/
125130
McpAsyncToolset(
126-
SseServerParameters connectionParams,
127-
ObjectMapper objectMapper,
128-
@Nullable Object toolFilter) {
129-
Objects.requireNonNull(connectionParams);
130-
Objects.requireNonNull(objectMapper);
131-
this.objectMapper = objectMapper;
132-
this.mcpSessionManager = new McpSessionManager(connectionParams);
133-
this.toolFilter = toolFilter;
134-
}
135-
136-
/**
137-
* Initializes the McpAsyncToolset with local server parameters.
138-
*
139-
* @param connectionParams The local server connection parameters to the MCP server.
140-
* @param objectMapper An ObjectMapper instance for parsing schemas.
141-
* @param toolFilter Either a ToolPredicate or a List of tool names or null.
142-
*/
143-
McpAsyncToolset(
144-
ServerParameters connectionParams, ObjectMapper objectMapper, @Nullable Object toolFilter) {
145-
Objects.requireNonNull(connectionParams);
131+
McpSessionManager mcpSessionManager, ObjectMapper objectMapper, @Nullable Object toolFilter) {
132+
Objects.requireNonNull(mcpSessionManager);
146133
Objects.requireNonNull(objectMapper);
147134
this.objectMapper = objectMapper;
148-
this.mcpSessionManager = new McpSessionManager(connectionParams);
135+
this.mcpSessionManager = mcpSessionManager;
149136
this.toolFilter = toolFilter;
150137
}
151138

0 commit comments

Comments
 (0)