A basic MCP server demonstrating tool, resource, and prompt capabilities with MySQL database integration
Critical gaps across all dimensions. Tool 'add' has a trivial 18-char description ('An addition tool') that fails the 20-char minimum and provides no context for LLM selection. Tool 'query' has NO description at all (null/missing), violating the fundamental requirement that every tool must have a non-empty description. Both tools have input schemas with parameter types (number, string) but ZERO parameter descriptions, the 'a', 'b', and 'sql' parameters lack any explanation of what they control or their constraints. The 'query' tool exposes a dangerous SQL injection surface with no input validation, sanitization, or guidance. No output schemas are documented. Error handling in 'query' returns raw error messages without recovery guidance. No tool annotations (readOnlyHint/destructiveHint) despite 'query' being marked WRITE risk. Naming is generic ('add', 'query'), 'add' should be 'add_numbers' and 'query' should be 'execute_sql_query' to clarify intent. No pagination, no result limits, no chaining IDs in responses.
An addition tool
Tool 'query' has NO description (null/missing). Every tool MUST have a non-empty description explaining what it does, when to use it, and any prerequisites.
All input parameters lack descriptions. 'a', 'b', and 'sql' have no explanation of what they control, their format, or constraints. LLMs cannot infer parameter meaning from names alone.
Tool 'query' accepts raw SQL strings with no input validation, sanitization, or SQL injection protection. Agents can be tricked via prompt injection into passing malicious payloads.
No output schemas documented. LLMs cannot plan downstream tool calls or extract the right data without knowing what fields to expect.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 32 | 2026-07-28+ | v2 |
Tool 'query' marked WRITE risk but has no tool annotations (destructiveHint), no dry-run option, and no confirmation step. Agents cannot know this is irreversible.