A collection of MCP (Model Context Protocol) server implementations and examples, including computer vision, LLM/RAG, weather, prompts, and demo servers.
This server exhibits significant quality gaps across naming, descriptions, schemas, and error handling. While tool names follow basic verb_noun convention (add, echo, create_thumbnail, get_*, ask_*, send_*), several are generic or ambiguous. Descriptions exist but are often superficial and lack LLM-optimized detail about WHEN to use tools, WHAT they return, and prerequisites. Schemas are partially visible but lack depth: parameters often have minimal descriptions, no enum constraints where applicable, and output schemas are not documented. Error handling is absent from visible code. The RAG tools (ask_inspection_plans, ask_supplier_applications, ask_agile_docs) accept generic 'query' objects with minimal guidance about expected structure. No tool annotation hints (readOnlyHint, destructiveHint, idempotentHint) are visible. The send_ticket and send_message tools (WRITE risk) lack any confirmation mechanisms or dry-run patterns. Overall, the server reads as a demo/template project rather than production-grade, it scaffolds tool structure but does not implement the quality depth required for reliable agentic use.
Add two numbers
Answer questions from agile documents using RAG (Retrieval-Augmented Generation)
Retrieve top 10 inspection records from database
Retrieve top 5 inspection plans for the user's tenant
Retrieve top 5 supplier applications for the user's tenant
Create a thumbnail from an image.
Echo back the input message.
WRITE operations (send_ticket, send_message) lack confirmation, dry-run, or idempotent guarantees. LLM can trigger unintended side effects (duplicate sends, unverified recipients) without safeguards.
Multiple tools (ask_inspection_data, ask_inspection_plans, ask_supplier_applications, ask_agile_docs) expose unstructured 'query' or empty parameters. LLM cannot understand how to formulate queries; no schema guidance on structure, syntax, or valid operators.
No output schemas documented for ANY tool. LLM cannot plan downstream calls or extract required fields. Without documented return types, tool chaining is error-prone.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-21 | F | 46 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 44 | - | v1 |
Generate a report from inspection data with specified fields and filters
Retrieve messages for the current user from Redis cache
Get server settings using context and resources.
A simple hello world tool with context.
Send a message to another user via Redis cache
Send a support ticket email
Hard-coded limits (ask_inspection_data returns 'top 10', ask_inspection_plans returns 'top 5') without pagination parameters. LLM cannot request more or fewer results; tool is inflexible and may truncate important data.
Non-standard verbs ('ask_*' instead of 'get_', 'retrieve_', 'query_'). LLM may confuse 'ask' with narrative dialogue rather than tool invocation. Breaks naming convention (90% of A+ tools start with action verb like get, list, create, search, update).
Generic tool 'hello_world' with vague description and unclear schema (ctx parameter is unstructured object with no property definitions). Reduces clarity of what the tool actually does and when to invoke it.
Parameter descriptions are often trivial (e.g. 'First number', 'The message to echo back'). LLM cannot infer constraints, valid ranges, format requirements, or use cases. Average parameter description is < 20 characters; rubric baseline is 72 characters.
No error handling or recovery guidance visible. Tools do not indicate what happens on failure (invalid recipient, database unavailable, unauthorized access). LLM has no guidance on retry logic or next steps.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) visible. LLM cannot distinguish safe tools from destructive ones; cannot reason about retry safety or side effects.
Parameters use generic, ambiguous types (object for ctx, query, email, msg) with no property schema. JSON Schema properties are not defined. LLM cannot validate or populate these parameters meaningfully.