Skip to content

Commit 8f86b06

Browse files
Make mcp methods more robust
Signed-off-by: Phillip Kruger <[email protected]>
1 parent b753fb0 commit 8f86b06

File tree

2 files changed

+13
-4
lines changed

2 files changed

+13
-4
lines changed

extensions/devui/runtime/src/main/java/io/quarkus/devui/runtime/jsonrpc/JsonRpcRequestCreator.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,13 @@ private JsonRpcRequest remap(JsonRpcRequest jsonRpcRequest) {
5050
Map params = jsonRpcRequest.getParams();
5151
String mappedName = (String) params.remove("name");
5252
Map mappedParams = (Map) params.remove("arguments");
53-
53+
5454
JsonRpcRequest mapped = new JsonRpcRequest(this.jsonMapper);
5555
mapped.setId(jsonRpcRequest.getId());
5656
mapped.setJsonrpc(jsonRpcRequest.getJsonrpc());
5757
mapped.setMethod(mappedName);
58-
if(mappedParams!=null && !mappedParams.isEmpty())mapped.setParams(mappedParams);
58+
if (mappedParams != null && !mappedParams.isEmpty())
59+
mapped.setParams(mappedParams);
5960

6061
return mapped;
6162
}

extensions/devui/runtime/src/main/java/io/quarkus/devui/runtime/mcp/McpHttpHandler.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,9 +110,17 @@ private void handleMCPJsonRPCRequest(RoutingContext ctx) {
110110
// This is a MCP notification
111111
this.routeToMCPNotification(jsonRpcRequest, codec, writer);
112112
} else if (methodName.equalsIgnoreCase(McpBuiltinMethods.TOOLS_LIST) ||
113-
methodName.equalsIgnoreCase(McpBuiltinMethods.RESOURCES_LIST) ||
114-
methodName.equalsIgnoreCase(McpBuiltinMethods.RESOURCES_READ)) {
113+
methodName.equalsIgnoreCase(McpBuiltinMethods.RESOURCES_LIST)) {
115114
jsonRpcRequest.setMethod(methodName.replace(SLASH, UNDERSCORE));
115+
// Make sure that parameters is empty as expected.
116+
jsonRpcRequest.setParams(null);
117+
jsonRpcRouter.route(jsonRpcRequest, writer);
118+
} else if (methodName.equalsIgnoreCase(McpBuiltinMethods.RESOURCES_READ)) {
119+
jsonRpcRequest.setMethod(methodName.replace(SLASH, UNDERSCORE));
120+
// Make sure that the only parameter is uri (as expected).
121+
String uri = jsonRpcRequest.getParam("uri", String.class);
122+
jsonRpcRequest.getParams().clear();
123+
jsonRpcRequest.setParams(Map.of("uri", uri));
116124
jsonRpcRouter.route(jsonRpcRequest, writer);
117125
} else {
118126
// This is a normal extension method

0 commit comments

Comments
 (0)