(&self)
| 542 | } |
| 543 | |
| 544 | async fn load_tools(&self) -> Result<(), McpClientError> { |
| 545 | let response = self.send_request("tools/list", None).await?; |
| 546 | |
| 547 | let result: ListToolsResult = response |
| 548 | .result |
| 549 | .ok_or_else(|| McpClientError::ProtocolError("No result in tools/list response".into())) |
| 550 | .and_then(|r| { |
| 551 | serde_json::from_value(r).map_err(|e| { |
| 552 | McpClientError::ProtocolError(format!("Failed to parse tools/list result: {e}")) |
| 553 | }) |
| 554 | })?; |
| 555 | |
| 556 | self.tool_registry.clear_server(&self.server_name).await; |
| 557 | self.tool_registry |
| 558 | .register_batch(&self.server_name, result.tools) |
| 559 | .await; |
| 560 | |
| 561 | Ok(()) |
| 562 | } |
| 563 | |
| 564 | pub async fn call_tool( |
| 565 | &self, |
no test coverage detected