A framework for building MCP (Model Context Protocol) servers with TypeScript. Provides tool definition, server creation, and inspection utilities.
CLQ is a test/template fixture server with 3 minimal tools. All tools lack parameter descriptions (critical violation of pattern:tool-description). Tool schemas are present but incomplete: parameters have types but NO descriptions. Descriptions themselves are present but extremely brief (10-34 chars, below the 50-200 char LLM-optimized baseline). No output schemas documented. No error handling guidance. Tools are simple (echo, add, get_weather) but lack the rigor expected of production tools. This is a reference implementation, not a production-grade server.
Add two numbers and return their sum.
Echo a string back to the caller.
Get current weather for a city. Returns temperature in Celsius and a short condition.
All parameters lack descriptions. 'message', 'a', 'b', 'city' have type definitions but no description text explaining what they control or accept.
Tool descriptions are extremely brief (10-34 chars). 'Echo a string back to the caller' and 'Add two numbers and return their sum' lack context for LLM selection. Baseline is 50-200 chars.
No output schemas documented. LLMs cannot infer what fields to expect from tool responses, blocking downstream tool chaining and data extraction.
No error handling guidance. Tools provide no recovery hints, error classification, or actionable messages if inputs are invalid or operations fail.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | 2025-06-18+ | v2 |
get_weather parameter 'city' description is an example, not a constraint. 'City name, e.g. London or Addis Ababa' invites LLMs to reuse example values literally. Use enum or format constraint instead.