1616
1717package com .google .adk .tools .mcp ;
1818
19+ import static com .google .common .base .Preconditions .checkNotNull ;
20+
1921import com .fasterxml .jackson .databind .ObjectMapper ;
2022import com .google .adk .JsonBaseModel ;
2123import com .google .adk .agents .ReadonlyContext ;
2224import com .google .adk .tools .BaseTool ;
2325import com .google .adk .tools .BaseToolset ;
2426import com .google .adk .tools .NamedToolPredicate ;
2527import com .google .adk .tools .ToolPredicate ;
26- import com .google .common .base .Preconditions ;
2728import com .google .common .collect .ImmutableList ;
2829import com .google .errorprone .annotations .CanIgnoreReturnValue ;
2930import 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