Skip to content

Commit 5964268

Browse files
authored
support mcp connector in agent update api (opensearch-project#4352)
Signed-off-by: Jiaping Zeng <jpz@amazon.com>
1 parent 7b43d61 commit 5964268

File tree

2 files changed

+53
-2
lines changed

2 files changed

+53
-2
lines changed

common/src/main/java/org/opensearch/ml/common/transport/agent/MLAgentUpdateInput.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import static org.opensearch.core.xcontent.XContentParserUtils.ensureExpectedToken;
99
import static org.opensearch.ml.common.CommonValue.TENANT_ID_FIELD;
1010
import static org.opensearch.ml.common.CommonValue.VERSION_2_19_0;
11+
import static org.opensearch.ml.common.utils.StringUtils.getParameterMap;
1112

1213
import java.io.IOException;
1314
import java.time.Instant;
@@ -256,7 +257,7 @@ public static MLAgentUpdateInput parse(XContentParser parser) throws IOException
256257
llmModelId = parser.text();
257258
break;
258259
case LLM_PARAMETERS_FIELD:
259-
llmParameters = parser.mapStrings();
260+
llmParameters = getParameterMap(parser.map());
260261
break;
261262
default:
262263
parser.skipChildren();
@@ -272,7 +273,7 @@ public static MLAgentUpdateInput parse(XContentParser parser) throws IOException
272273
}
273274
break;
274275
case PARAMETERS_FIELD:
275-
parameters = parser.mapStrings();
276+
parameters = getParameterMap(parser.map());
276277
break;
277278
case MEMORY_FIELD:
278279
ensureExpectedToken(XContentParser.Token.START_OBJECT, parser.currentToken(), parser);

common/src/test/java/org/opensearch/ml/common/transport/agent/MLAgentUpdateInputTest.java

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -995,4 +995,54 @@ public void testStreamInputOutputWithVersion() throws IOException {
995995
assertEquals(input.getLastUpdateTime(), parsedInput.getLastUpdateTime());
996996
assertEquals(input.getTenantId(), parsedInput.getTenantId());
997997
}
998+
999+
@Test
1000+
public void testParseWithMcpConnectors() throws Exception {
1001+
String inputStr = """
1002+
{
1003+
"agent_id": "test-agent-id",
1004+
"name": "test-agent",
1005+
"parameters": {
1006+
"_llm_interface": "openai/v1/chat/completions",
1007+
"mcp_connectors": [
1008+
{
1009+
"mcp_connector_id": "test-connector-id",
1010+
"tool_filters": ["^get_alerts$", "^list_.*$"]
1011+
}
1012+
]
1013+
}
1014+
}
1015+
""";
1016+
testParseFromJsonString(inputStr, parsedInput -> {
1017+
assertEquals("test-agent", parsedInput.getName());
1018+
assertNotNull(parsedInput.getParameters());
1019+
assertEquals("openai/v1/chat/completions", parsedInput.getParameters().get("_llm_interface"));
1020+
assertTrue(parsedInput.getParameters().containsKey("mcp_connectors"));
1021+
String mcpConnectorsJson = parsedInput.getParameters().get("mcp_connectors");
1022+
assertTrue(mcpConnectorsJson.contains("test-connector-id"));
1023+
assertTrue(mcpConnectorsJson.contains("tool_filters"));
1024+
});
1025+
}
1026+
1027+
@Test
1028+
public void testParseWithMcpConnectorsMinimal() throws Exception {
1029+
String inputStr = """
1030+
{
1031+
"agent_id": "test-agent-id",
1032+
"parameters": {
1033+
"mcp_connectors": [
1034+
{
1035+
"mcp_connector_id": "connector-123"
1036+
}
1037+
]
1038+
}
1039+
}
1040+
""";
1041+
testParseFromJsonString(inputStr, parsedInput -> {
1042+
assertNotNull(parsedInput.getParameters());
1043+
assertTrue(parsedInput.getParameters().containsKey("mcp_connectors"));
1044+
String mcpConnectorsJson = parsedInput.getParameters().get("mcp_connectors");
1045+
assertTrue(mcpConnectorsJson.contains("connector-123"));
1046+
});
1047+
}
9981048
}

0 commit comments

Comments
 (0)