# The order tool served once over MCP (Streamable HTTP), used from Spring AI and from LangChain4j

MCP server: Spring AI 2.0.1 spring-ai-starter-mcp-server-webmvc, one @McpTool method, on port 33237.
Spring AI client : McpClient.sync(HttpClientStreamableHttpTransport) -> SyncMcpToolCallbackProvider -> ChatClient.defaultToolCallbacks
LangChain4j client: DefaultMcpClient + StreamableHttpMcpTransport -> McpToolProvider -> AiServices.toolProvider

Spring AI answer   : Done: [{"text":"Order ORD-1002: Status=PROCESSING, ETA=2026-10-18"}]   (2 requests to the model)
  tool offered to the model:   tool getOrderStatus - Get current order status by order ID params {"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"orderId":{"type":"string","description":"The unique identifier of the order"}},"required":["orderId"]}
LangChain4j answer : Done: Order ORD-1002: Status=PROCESSING, ETA=2026-10-18   (2 requests to the model)
  tool offered to the model:   tool getOrderStatus - Get current order status by order ID params {"type":"object","properties":{"orderId":{"type":"string","description":"The unique identifier of the order"}},"required":["orderId"]}

Times the one tool method on the server ran: 1 for Spring AI, then 1 more for LangChain4j.
