CLI for interacting with MCP (Model Context Protocol) servers with AI chat integration
This is an example/demo MCP server with three simple tools (add, multiply, echo). All three tools have descriptions and input schemas present in the code. However, the server exhibits significant gaps vs. production-grade tool design: (1) parameter descriptions are entirely absent (null in the schema inspection), (2) tool names lack action verbs and are generic ('add', 'multiply', 'echo' do not follow verb_noun patterns like 'calculate_sum' or 'perform_multiplication'), (3) output schemas are defined in code but descriptions lack guidance on what the response structure contains, (4) no error handling or validation guidance is documented. The tools are functional for a demo but would not meet production standards. All three tools score identically due to structural equivalence.
Add two numbers together
Echo back the provided message
Multiply two numbers together
Parameter descriptions are null/missing for all tools. The rubric requires non-empty descriptions for every input parameter. Tools 'add' and 'multiply' have parameters 'a' and 'b' with no description of what these represent or their valid ranges. Tool 'echo' has parameter 'message' with no description.
Tool names lack action verbs and are too generic. 'add', 'multiply', and 'echo' do not follow verb_noun patterns. LLMs rely on names to infer intent before reading descriptions. Recommendations: rename 'add' → 'calculate_sum', 'multiply' → 'calculate_product', 'echo' → 'repeat_message'. This makes intent clear at a glance.
No parameter constraints or ranges documented. Parameters 'a' and 'b' in add/multiply are typed as numbers but lack documentation of valid ranges (e.g., integers vs. floats, min/max bounds). The rubric requires descriptions like 'A numeric value (integer or float, range -10^6 to 10^6)' to prevent LLMs from passing absurd values.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 40 | 2025-06-18+ | v2 |
| 2026-03-09 | F | 43 | - | v1 |
No output schema documentation in tool descriptions. While the code defines outputSchema (e.g., { result: z.number() }), the tool descriptions do not explain what fields the response will contain or what they mean. LLMs need this to plan downstream actions.
No error handling or validation guidance. The tools have no documented error conditions, recovery paths, or validation rules. If an LLM passes non-numeric input to 'add', there is no guidance on what error to expect or how to recover. The rubric requires error responses to tell the agent what to do next.