Robust MCP server for enterprise AI with Qwen3
Two tools with minimal documentation. execute_python_code and fetch_web_content have descriptions (10-20 chars each), but lack parameter descriptions entirely. Input schemas are visible but parameters have no descriptions, violating the critical rule that every parameter needs one. No output schemas documented. Error handling is generic ('Error: {str(e)}') with no recovery guidance. No tool annotations (readOnlyHint/destructiveHint). execute_python_code is IRREVERSIBLE but has no confirmation pattern or dry-run support. fetch_web_content lacks max_length parameter description. Naming is acceptable (verb_noun), but definitions fall far short of production baseline.
Execute Python code and return the output.
Fetch content from a given URL.
Missing parameter descriptions. 'code' and 'url' parameters have no descriptions explaining what they control, format, or constraints. LLMs cannot infer parameter meaning from names alone.
No output schema documentation. Tools return plain strings with no structured field definitions. LLMs cannot plan downstream calls or extract typed data.
execute_python_code is irreversible (RISK: IRREVERSIBLE) but has no confirmation pattern, dry-run support, or warning in description. Agents can execute arbitrary code without safeguards.
Generic error handling. Both tools return 'Error: {str(e)}' with no recovery guidance, error classification, or actionable next steps for the LLM.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 37 | 2026-07-28+ | v2 |
No tool annotations. Missing readOnlyHint (fetch_web_content), destructiveHint (execute_python_code), and idempotentHint. Agents cannot reason about side effects.