MCP server bridge with async functionality and timeout handling
This server has 6 tools with mixed quality. Core async management tools (list_pending_tasks, get_task_result, cancel_task) have minimal schemas and descriptions under 50 chars, falling well below the 194-char baseline. The example tools (add, multiply, slow_operation) are better documented but still lack parameter descriptions and comprehensive output schemas. No tool has a documented return type or output schema structure. Parameter naming is reasonable but descriptions are sparse. Error handling is not visible in the provided code. The server is STDIO-only, which caps protocol readiness at 50 and severely limits production utility.
Add two numbers (Enhanced with async/sync capability)
Cancel a pending async task
Get the result of a completed async task
List all pending async tasks currently being executed
Multiply two numbers (Enhanced with async/sync capability)
A deliberately slow operation for testing timeouts (Enhanced with async/sync capability)
Tool descriptions are too short (10-45 chars). Baseline is 194 chars. Descriptions like 'List all pending async tasks currently being executed' (51 chars) lack context on WHEN to use the tool and what the output structure is.
No documented output/return schemas. LLMs cannot infer what fields the results contain, forcing them to guess at downstream tool parameters. Every tool must document its response structure.
Parameter descriptions are missing or minimal. The 'arguments' parameter in add, multiply, and slow_operation contains nested fields (a, b, duration) but lacks descriptions beyond type hints. This violates the 100% A+ baseline of parameter descriptions.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 45 | 2025-06-18+ | v2 |
| 2026-03-09 | F | 38 | - | v1 |
The 'sync' parameter in add, multiply, and slow_operation has a description ('Set to true to force synchronous execution') but lacks context on WHEN an LLM should use it, what are the tradeoffs? When is async preferred?
No error handling documentation. Code shows exception handling in simple-math-server.py but responses (line 'error': {'code': -32602, 'message': str(exc)}') provide bare exception messages. No recovery guidance. E.g., 'Unknown tool: add' does not tell the LLM what to do next.
Naming mismatch in example tools. The 'add' tool documentation in simple-math-server.py does not reflect the enhanced 'sync' parameter visible in the tool registry. The description should explain the async/sync capability.