Skip to content

Commit 51b13a1

Browse files
committed
Return an error when the tool is not found
1 parent c3d2b22 commit 51b13a1

File tree

1 file changed

+22
-7
lines changed
  • mcp/mcp-server/src/main/java/software/amazon/smithy/java/mcp/server

1 file changed

+22
-7
lines changed

mcp/mcp-server/src/main/java/software/amazon/smithy/java/mcp/server/McpService.java

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,10 @@ private JsonRpcResponse handleToolsCall(
198198
var operationName = req.getParams().getMember("name").asString();
199199
var tool = tools.get(operationName);
200200

201+
if (tool == null) {
202+
return createErrorResponse(req, "No such tool: " + operationName);
203+
}
204+
201205
// Check if this tool should be dispatched to a proxy
202206
if (tool.proxy() != null) {
203207
// Forward the request to the proxy
@@ -360,16 +364,27 @@ private JsonRpcResponse createSuccessResponse(Document id, SerializableShape val
360364
}
361365

362366
private JsonRpcResponse createErrorResponse(JsonRpcRequest req, Exception exception) {
367+
return createErrorResponse(req, exception, true); //TODO change the default to false.
368+
}
369+
370+
private JsonRpcResponse createErrorResponse(JsonRpcRequest req, Exception exception, boolean sendStackTrace) {
363371
String s;
364-
try (var sw = new StringWriter();
365-
var pw = new PrintWriter(sw)) {
366-
exception.printStackTrace(pw);
367-
s = sw.toString().replace("\n", "| ");
368-
} catch (Exception e) {
369-
LOG.error("Error encoding response", e);
370-
throw new RuntimeException(e);
372+
if (sendStackTrace) {
373+
try (var sw = new StringWriter();
374+
var pw = new PrintWriter(sw)) {
375+
exception.printStackTrace(pw);
376+
s = sw.toString().replace("\n", "| ");
377+
} catch (Exception e) {
378+
LOG.error("Error encoding response", e);
379+
throw new RuntimeException(e);
380+
}
381+
} else {
382+
s = exception.getMessage();
371383
}
384+
return createErrorResponse(req, s);
385+
}
372386

387+
private JsonRpcResponse createErrorResponse(JsonRpcRequest req, String s) {
373388
var error = JsonRpcErrorResponse.builder()
374389
.code(500)
375390
.message(s)

0 commit comments

Comments
 (0)