Skip to content

Commit 23d4c71

Browse files
sararobcopybara-github
authored andcommitted
feat: Add MCP support to async generate_content
FUTURE_COPYBARA_INTEGRATE_REVIEW=#1045 from googleapis:release-please--branches--main a1704f0 PiperOrigin-RevId: 912562893
1 parent 8d2a892 commit 23d4c71

3 files changed

Lines changed: 87 additions & 12 deletions

File tree

src/main/java/com/google/genai/Caches.java

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -838,6 +838,25 @@ ObjectNode listCachedContentsResponseFromVertex(JsonNode fromObject, ObjectNode
838838
return toObject;
839839
}
840840

841+
@ExcludeFromGeneratedCoverageReport
842+
ObjectNode mcpServerToVertex(JsonNode fromObject, ObjectNode parentObject) {
843+
ObjectNode toObject = JsonSerializable.objectMapper().createObjectNode();
844+
if (!Common.isZero(Common.getValueByPath(fromObject, new String[] {"name"}))) {
845+
throw new IllegalArgumentException(
846+
"name parameter is only supported in Gemini Developer API mode, not in Gemini Enterprise"
847+
+ " Agent Platform mode.");
848+
}
849+
850+
if (!Common.isZero(
851+
Common.getValueByPath(fromObject, new String[] {"streamableHttpTransport"}))) {
852+
throw new IllegalArgumentException(
853+
"streamableHttpTransport parameter is only supported in Gemini Developer API mode, not in"
854+
+ " Gemini Enterprise Agent Platform mode.");
855+
}
856+
857+
return toObject;
858+
}
859+
841860
@ExcludeFromGeneratedCoverageReport
842861
ObjectNode partToMldev(JsonNode fromObject, ObjectNode parentObject) {
843862
ObjectNode toObject = JsonSerializable.objectMapper().createObjectNode();
@@ -1291,10 +1310,16 @@ ObjectNode toolToVertex(JsonNode fromObject, ObjectNode parentObject) {
12911310
Common.getValueByPath(fromObject, new String[] {"urlContext"}));
12921311
}
12931312

1294-
if (!Common.isZero(Common.getValueByPath(fromObject, new String[] {"mcpServers"}))) {
1295-
throw new IllegalArgumentException(
1296-
"mcpServers parameter is only supported in Gemini Developer API mode, not in Gemini"
1297-
+ " Enterprise Agent Platform mode.");
1313+
if (Common.getValueByPath(fromObject, new String[] {"mcpServers"}) != null) {
1314+
ArrayNode keyArray =
1315+
(ArrayNode) Common.getValueByPath(fromObject, new String[] {"mcpServers"});
1316+
ObjectMapper objectMapper = new ObjectMapper();
1317+
ArrayNode result = objectMapper.createArrayNode();
1318+
1319+
for (JsonNode item : keyArray) {
1320+
result.add(mcpServerToVertex(JsonSerializable.toJsonNode(item), toObject));
1321+
}
1322+
Common.setValueByPath(toObject, new String[] {"mcpServers"}, result);
12981323
}
12991324

13001325
return toObject;

src/main/java/com/google/genai/LiveConverters.java

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1729,6 +1729,25 @@ ObjectNode liveServerMessageFromVertex(JsonNode fromObject, ObjectNode parentObj
17291729
return toObject;
17301730
}
17311731

1732+
@ExcludeFromGeneratedCoverageReport
1733+
ObjectNode mcpServerToVertex(JsonNode fromObject, ObjectNode parentObject) {
1734+
ObjectNode toObject = JsonSerializable.objectMapper().createObjectNode();
1735+
if (!Common.isZero(Common.getValueByPath(fromObject, new String[] {"name"}))) {
1736+
throw new IllegalArgumentException(
1737+
"name parameter is only supported in Gemini Developer API mode, not in Gemini Enterprise"
1738+
+ " Agent Platform mode.");
1739+
}
1740+
1741+
if (!Common.isZero(
1742+
Common.getValueByPath(fromObject, new String[] {"streamableHttpTransport"}))) {
1743+
throw new IllegalArgumentException(
1744+
"streamableHttpTransport parameter is only supported in Gemini Developer API mode, not in"
1745+
+ " Gemini Enterprise Agent Platform mode.");
1746+
}
1747+
1748+
return toObject;
1749+
}
1750+
17321751
@ExcludeFromGeneratedCoverageReport
17331752
ObjectNode partToMldev(JsonNode fromObject, ObjectNode parentObject) {
17341753
ObjectNode toObject = JsonSerializable.objectMapper().createObjectNode();
@@ -2169,10 +2188,16 @@ ObjectNode toolToVertex(JsonNode fromObject, ObjectNode parentObject) {
21692188
Common.getValueByPath(fromObject, new String[] {"urlContext"}));
21702189
}
21712190

2172-
if (!Common.isZero(Common.getValueByPath(fromObject, new String[] {"mcpServers"}))) {
2173-
throw new IllegalArgumentException(
2174-
"mcpServers parameter is only supported in Gemini Developer API mode, not in Gemini"
2175-
+ " Enterprise Agent Platform mode.");
2191+
if (Common.getValueByPath(fromObject, new String[] {"mcpServers"}) != null) {
2192+
ArrayNode keyArray =
2193+
(ArrayNode) Common.getValueByPath(fromObject, new String[] {"mcpServers"});
2194+
ObjectMapper objectMapper = new ObjectMapper();
2195+
ArrayNode result = objectMapper.createArrayNode();
2196+
2197+
for (JsonNode item : keyArray) {
2198+
result.add(mcpServerToVertex(JsonSerializable.toJsonNode(item), toObject));
2199+
}
2200+
Common.setValueByPath(toObject, new String[] {"mcpServers"}, result);
21762201
}
21772202

21782203
return toObject;

src/main/java/com/google/genai/Models.java

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4060,6 +4060,25 @@ ObjectNode maskReferenceConfigToVertex(
40604060
return toObject;
40614061
}
40624062

4063+
@ExcludeFromGeneratedCoverageReport
4064+
ObjectNode mcpServerToVertex(JsonNode fromObject, ObjectNode parentObject, JsonNode rootObject) {
4065+
ObjectNode toObject = JsonSerializable.objectMapper().createObjectNode();
4066+
if (!Common.isZero(Common.getValueByPath(fromObject, new String[] {"name"}))) {
4067+
throw new IllegalArgumentException(
4068+
"name parameter is only supported in Gemini Developer API mode, not in Gemini Enterprise"
4069+
+ " Agent Platform mode.");
4070+
}
4071+
4072+
if (!Common.isZero(
4073+
Common.getValueByPath(fromObject, new String[] {"streamableHttpTransport"}))) {
4074+
throw new IllegalArgumentException(
4075+
"streamableHttpTransport parameter is only supported in Gemini Developer API mode, not in"
4076+
+ " Gemini Enterprise Agent Platform mode.");
4077+
}
4078+
4079+
return toObject;
4080+
}
4081+
40634082
@ExcludeFromGeneratedCoverageReport
40644083
ObjectNode modelFromMldev(JsonNode fromObject, ObjectNode parentObject, JsonNode rootObject) {
40654084
ObjectNode toObject = JsonSerializable.objectMapper().createObjectNode();
@@ -5200,10 +5219,16 @@ ObjectNode toolToVertex(JsonNode fromObject, ObjectNode parentObject, JsonNode r
52005219
Common.getValueByPath(fromObject, new String[] {"urlContext"}));
52015220
}
52025221

5203-
if (!Common.isZero(Common.getValueByPath(fromObject, new String[] {"mcpServers"}))) {
5204-
throw new IllegalArgumentException(
5205-
"mcpServers parameter is only supported in Gemini Developer API mode, not in Gemini"
5206-
+ " Enterprise Agent Platform mode.");
5222+
if (Common.getValueByPath(fromObject, new String[] {"mcpServers"}) != null) {
5223+
ArrayNode keyArray =
5224+
(ArrayNode) Common.getValueByPath(fromObject, new String[] {"mcpServers"});
5225+
ObjectMapper objectMapper = new ObjectMapper();
5226+
ArrayNode result = objectMapper.createArrayNode();
5227+
5228+
for (JsonNode item : keyArray) {
5229+
result.add(mcpServerToVertex(JsonSerializable.toJsonNode(item), toObject, rootObject));
5230+
}
5231+
Common.setValueByPath(toObject, new String[] {"mcpServers"}, result);
52075232
}
52085233

52095234
return toObject;

0 commit comments

Comments
 (0)