Add mcp-client module: ChatClient calling tools from real external MCP servers over stdio
defaultToolCallbacks(ToolCallbackProvider) wires two real stdio MCP servers (the official filesystem server and git server) into ChatClient, contrasted with defaultTools(Object) for a local @Tool method. Every call -- MCP-sourced or local -- is logged through one Micrometer ObservationHandler<ToolCallingObservationContext>; a first version wired that handler two ways at once and every call logged twice, which is now a regression test. No real LLM is used anywhere: every test builds an AssistantMessage.ToolCall by hand and drives it through the real ToolCallingManager bean against real npx/uvx-launched MCP server processes. Co-Authored-By: Claude Sonnet 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01FtpJvZfg4nvLvtzgJTDWpB
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
# Proving the tool-call ObservationHandler fires once per call, not twice
|
||||
|
||||
startCount before call: 4
|
||||
startCount after call: 5
|
||||
fired this call: 1
|
||||
|
||||
An earlier version of ObservabilityConfig wired this same handler two ways at once
|
||||
(a plain @Bean, plus the same instance again inside an ObservationRegistryCustomizer).
|
||||
Boot's ObservationAutoConfiguration picks up both independently, so every call logged
|
||||
twice -- verified by running it that way first. See ObservabilityConfig's Javadoc.
|
||||
Reference in New Issue
Block a user