Rust SDK for Model Context Protocol (RMCP) - a comprehensive Rust implementation of the MCP protocol with support for tools, prompts, resources, authentication, and multiple transport mechanisms
This is the Rust SDK itself, not an MCP server implementation. It provides a framework for building MCP servers. The two 'tools' (adder, empty) are minimal example/test tools in the conformance test suite, not representative of production tool design. The SDK demonstrates solid infrastructure (multiple transports, auth, elicitation, request-state support), but the sample tools are demonstrably poor quality: 'empty' tool has zero meaningful description, 'adder' description is extremely terse (20 chars, at the floor of acceptability), and neither tool's parameter descriptions provide contextual guidance for LLM selection or usage. The tools appear to be testing artifacts rather than production examples. Evaluating the SDK by these sample tools is inappropriate, however, the rubric requires assessment of visible tool definitions, and these are the only explicit tool registrations visible in the provided source.
Modular add two integers
Empty tool
Tool 'empty' has no description, LLMs cannot determine when/why to call it (HARD RULE: description score must be 0).
Tool 'adder' description is 20 chars ('Modular add two integers'), at the minimum threshold; lacks context for when to use vs other add operations, no usage guidance.
Tool 'empty' has no input schema, impossible to validate or understand parameters (HARD RULE: schema score must be 0).
Tool 'empty' violates single-responsibility principle, a tool named 'empty' with no description and no schema is non-functional. If intentionally a no-op for testing, it should not be exposed as a callable tool.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 50 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 25 | - | v1 |
Parameter descriptions for 'adder' are minimal (e.g., 'left operand', 'right operand'). They do not explain data types, ranges, units, or constraints, only context for the operation is present.
No output schema documented for either tool. LLMs cannot plan downstream calls or extract results reliably.
No error handling or recovery guidance in either tool. What happens if 'adder' receives non-integer input? What does 'empty' return? LLMs have no guidance.