1616
1717package com .google .cloud .mcp ;
1818
19+ import com .fasterxml .jackson .core .type .TypeReference ;
20+ import com .fasterxml .jackson .databind .ObjectMapper ;
21+ import dev .langchain4j .agent .tool .ToolExecutionRequest ;
1922import dev .langchain4j .agent .tool .ToolSpecification ;
2023import dev .langchain4j .service .tool .ToolExecutor ;
2124import java .util .Map ;
2427/** Adapter for LangChain4j Tools. */
2528public class LangChain4jTool {
2629
30+ private static final ObjectMapper mapper = new ObjectMapper ();
2731 private final Tool tool ;
2832
2933 public LangChain4jTool (Tool tool ) {
@@ -40,11 +44,17 @@ public ToolSpecification specification() {
4044 }
4145
4246 public ToolExecutor executor () {
43- return (arguments , memoryId ) -> {
44- ToolResult result = tool .execute (arguments ).join ();
45- return result .content ().stream ()
46- .map (ToolResult .Content ::text )
47- .collect (Collectors .joining ("\n " ));
47+ return (request , memoryId ) -> {
48+ try {
49+ Map <String , Object > arguments =
50+ mapper .readValue (request .arguments (), new TypeReference <Map <String , Object >>() {});
51+ ToolResult result = tool .execute (arguments ).join ();
52+ return result .content ().stream ()
53+ .map (ToolResult .Content ::text )
54+ .collect (Collectors .joining ("\n " ));
55+ } catch (Exception e ) {
56+ throw new RuntimeException ("Failed to execute tool" , e );
57+ }
4858 };
4959 }
5060}
0 commit comments