Code: Select all
chatClient
.prompt()
.system("""
System prompt.
""")
.user(requestDto.prompt())
.toolCallbacks(toolCallbackProvider.getToolCallbacks())
.toolContext(Map.of("apiKey", "test_key"))
.call()
.content()
< /code>
MCP-Server, auf dem ich den vom Client gesendeten API-Code lesen möchte: < /p>
@Tool(name = "tool name", description = "tool description")
public List getData(@ToolParam(description = "des") TimeRange timeRange,
ToolContext toolContext) {
}
Code: Select all
@Configuration
public class MCPConfig {
@Bean
public SyncMcpToolCallbackProvider toolCallbackProvider(List clients) {
return new SyncMcpToolCallbackProvider(clients);
}
}
< /code>
Im MCP-Servercode: < /p>
@Tool(name = "tool name", description = "tool description")
public List getData(@ToolParam(description = "des") PlayBackState playBackState,
ToolContext toolContext) {
String apiKey = toolContext.getContext().get("apiKey").toString();
}
Idealerweise hätte es den vom MCP -Client übergebenen Wert zurückgeben müssen. "test_key" ist der Wert, der vorhanden sein sollte.
Code: Select all
2025-06-22T20:09:21.463+05:30 TRACE 17000 --- [app-mcp-server] [nio-8081-exec-3] o.s.w.s.f.support.RouterFunctionMapping : Mapped to io.modelcontextprotocol.server.transport.WebMvcSseServerTransportProvider$$Lambda/0x000001ba36662f38@b76b7d8
2025-06-22T20:09:21.463+05:30 DEBUG 17000 --- [app-mcp-server] [nio-8081-exec-3] io.modelcontextprotocol.spec.McpSchema : Received JSON message: {"jsonrpc":"2.0","method":"tools/call","id":"355f2a07-8","params":{"name":"playback_controller","arguments":{"playBackState":"PAUSE"}}}
2025-06-22T20:09:21.463+05:30 DEBUG 17000 --- [app-mcp-server] [nio-8081-exec-3] i.m.spec.McpServerSession : Received request: JSONRPCRequest[jsonrpc=2.0, method=tools/call, id=355f2a07-8, params={name=playback_controller, arguments={playBackState=PAUSE}}]
2025-06-22T20:09:21.463+05:30 DEBUG 17000 --- [app-mcp-server] [oundedElastic-1] o.s.ai.tool.method.MethodToolCallback : Starting execution of tool: playback_controller
2025-06-22T20:09:59.228+05:30 DEBUG 17000 --- [app-mcp-server] [nio-8081-Poller] org.apache.tomcat.util.net.NioEndpoint : timeout completed: keys processed=2; now=1750603199227; nextExpiration=1750603161517; keyCount=0; hasEvents=false; eval=false
2025-06-22T20:09:59.231+05:30 DEBUG 17000 --- [app-mcp-server] [oundedElastic-1] i.m.s.t.WebMvcSseServerTransportProvider : Message sent to session a3545270-ab97-4ede-882f-2bdccb36097a
2025-06-22T20:09:59.232+05:30 TRACE 17000 --- [app-mcp-server] [nio-8081-exec-3] o.s.web.servlet.DispatcherServlet : No view rendering, null ModelAndView returned.
2025-06-22T20:09:59.232+05:30 DEBUG 17000 --- [app-mcp-server] [nio-8081-exec-3] o.s.web.servlet.DispatcherServlet : Completed 200 OK, headers={}
2025-06-22T20:09:59.232+05:30 TRACE 17000 --- [app-mcp-server] [nio-8081-exec-3] o.s.b.w.s.f.OrderedRequestContextFilter : Cleared thread-bound request context: org.apache.catalina.connector.RequestFacade@4cb31c2e
2025-06-22T20:09:59.232+05:30 DEBUG 17000 --- [app-mcp-server] [nio-8081-exec-3] o.a.coyote.http11.Http11InputBuffer : Before fill(): parsingHeader: [true], parsingRequestLine: [true], parsingRequestLinePhase: [0], parsingRequestLineStart: [0], byteBuffer.position(): [0], byteBuffer.limit(): [0], end: [351]
angesehen habe
Code: Select all
public String call(String toolArguments, ToolContext toolContext) {
return this.call(toolArguments);
}
< /code>
ToolContext wird nicht verwendet. Nach meinem Verständnis wird der ToolContext < /code> im MCP -Client nicht über das Netzwerk übergeben.
Kann dies der Grund sein? Wenn ja, warum wird das so gemacht?{
"type": "about:blank",
"title": "Bad Request",
"status": 400,
"detail": "java.util.concurrent.TimeoutException: Did not observe any item or terminal signal within 30000ms in 'Mono.deferContextual ⇢ at io.modelcontextprotocol.spec.McpClientSession.sendRequest(McpClientSession.java:233)' (and no fallback has been configured)",
"instance": "/chat"
}