A Rust SDK for Anthropic's Claude API that can't panic on you: unwrap/expect/panic denied at compile time. Typed output and tools from Rust structs, streaming, thinking, caching, batches.
This is a Rust SDK for Claude API, not an MCP server. The source shows example code using the SDK to call Claude with tools, but there is no MCP server implementation visible. The 'tool_runner.rs' example demonstrates tool definitions for a Claude client, not MCP tool registration. Transport is unknown/not MCP. Tool definitions exist in examples but are not registered as an MCP server. Duplicate tool names (three 'get_weather' entries with inconsistent schemas) suggest either example artifacts or serious definition conflicts. Schemas are present but inconsistent across duplicates. Descriptions are adequate (50-100 chars) but parameter descriptions vary in quality.
Get the current local time in a time zone
Get the current weather for a location
Get the current weather for a location
Get the current weather for a location
Not an MCP server, this is a Rust SDK for Claude API. No MCP protocol implementation detected. Examples show tool use with Claude client, not MCP server registration.
Duplicate tool names with inconsistent schemas. Three 'get_weather' tools with different input schemas (one omits 'unit' parameter, others include it). This violates single-responsibility and creates ambiguity for LLM tool selection.
Parameter descriptions lack format/constraint guidance. 'location' is described as 'City name' or 'The city to look up, e.g. Paris' but no guidance on format (free text only? no special chars?). 'time_zone' description mentions IANA format but does not state it is required or provide validation hints.
No output schema documented. Tools return JSON objects but the structure is not formally specified. LLMs cannot plan downstream calls or extract fields reliably without documented return types.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 45 | 2026-07-28+ | v2 |
No error handling guidance. Tool implementations in examples (tool_runner.rs) return Ok/Err but do not document what errors are possible, when they occur, or how the LLM should recover. Example: get_time returns Err if time_zone lacks '/', but this is not documented in the tool description.