A Rust-based MCP server scaffold for building Model Context Protocol servers with HTTP transport
Single tool with basic structure but significant gaps. Tool name 'get_test_message' follows verb_noun convention (+). Description is minimal (18 chars, well below 50-200 char baseline for LLM optimization). Input schema present with proper JSON Schema typing and parameter description. However, output schema is undocumented, LLMs cannot predict return structure. No error handling guidance. Tool is read-only but lacks explicit idempotent annotation. Overall: scaffold-quality, not production-ready.
Return a test string
Output schema undocumented. Tool returns CallToolResult with Content::text() but LLMs cannot infer the response structure (fields, types, format). This violates pattern:tool requirement that output schemas be documented.
Description too short (18 chars: 'Return a test string'). Baseline for LLM-optimized descriptions is 50-200 chars. Current description lacks context on WHEN to use, WHAT it returns, and any prerequisites. LLMs cannot reliably select this tool.
No error handling guidance. Tool has no documented error cases, recovery paths, or actionable error messages. If validation fails (e.g., test_param is empty), LLM receives no guidance on next steps.
Tool annotations missing. Tool is read-only and idempotent but lacks explicit readOnlyHint and idempotentHint annotations. LLMs cannot infer safety properties without these hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2026-07-28+ | v2 |
Parameter description minimal. 'A test parameter' (18 chars) does not explain what test_param controls, expected format, constraints, or examples. LLMs cannot reason about valid inputs.