Kuberwastaken/claurst · error
rmcp list_all_tools failed
Error message
rmcp list_all_tools failed: {} What it means
During connection setup, build_snapshot's paginated list_all_tools call failed even though the server advertised the tools capability. The initialize handshake succeeded, but enumerating tools errored (server-side failure or connection drop), so no snapshot can be built.
Solutions
- Retry connecting; transient server errors during listing are common
- Check server logs for why tools/list failed
- Verify protocol compatibility with the server
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at src-rust/crates/mcp/src/rmcp_backend.rs:640 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of Kuberwastaken/claurst@b0637c97ec (2026-09-10).
Data as JSON: /api/errors/0ed9633d5fe43d85.
Report an issue: GitHub.
Appendix: source
Thrown at src-rust/crates/mcp/src/rmcp_backend.rs:640
) -> anyhow::Result<McpClientSnapshot> {
let server_info = peer.peer_info().map(|info| (*info).clone());
let (server_info_value, capabilities, instructions) = match server_info {
Some(info) => (
Some(ServerInfo {
name: info.server_info.name,
version: info.server_info.version,
}),
convert_server_capabilities(info.capabilities),
info.instructions,
),
None => (None, ServerCapabilities::default(), None),
};
let tools = if capabilities.tools.is_some() {
peer.list_all_tools()
.await
.map_err(|e| anyhow::anyhow!("rmcp list_all_tools failed: {}", e))?
.into_iter()
.map(convert_tool)
.collect()
} else {
vec![]
};
let resources = if capabilities.resources.is_some() {
peer.list_all_resources()
.await
.map_err(|e| anyhow::anyhow!("rmcp list_all_resources failed: {}", e))?
.into_iter()
.map(convert_resource)
.collect()
} else {
vec![]
};
View on GitHub (pinned to b0637c97ec)