MCP server that provides weather information for cities using the wttr.in API
Severe quality gaps across all dimensions. Only 1 of 4 tools has a visible, complete definition (get_weather in mcp_server.py). The other 3 tools (run-aws-code, list-credentials, select-profile) are defined in pytonmcp_server.py but lack explicit tool registration, tool names, descriptions, and schemas are inferred from Pydantic models and comments, not from actual @mcp.tool() decorators or equivalent registration. get_weather has a minimal description ('Returns weather information for a given city') and no documented output schema. Parameters across all tools lack descriptions. Error handling is absent. Security is critically compromised: run-aws-code accepts arbitrary JavaScript code execution and AWS credentials as parameters, violating secret-injection and command-injection patterns.
Returns weather information for a given city
List all AWS credentials/configs/profiles that are configured/usable on this machine
Run AWS code
Selects AWS profile to use for subsequent interactions. If needed, does SSO authentication
run-aws-code accepts arbitrary JavaScript code and AWS credentials as parameters, enabling code injection and credential exposure. Violates secret-injection and command-injection patterns.
Three tools (run-aws-code, list-credentials, select-profile) lack explicit @mcp.tool() registration in source. Tool definitions are inferred from Pydantic models and comments, not visible in actual MCP registration code.
No parameter descriptions across all tools. LLMs cannot infer what 'reasoning', 'code', 'profileName', 'region', 'profile', 'city' mean without explicit guidance.
No output schemas documented for any tool. Agents cannot plan downstream calls or extract required fields (e.g., what does list-credentials return?).
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 27 | <=2025-11-25 | v2 |
run-aws-code description is generic ('Run AWS code'). Does not explain when to use it, what it returns, or that it executes arbitrary code, a critical safety concern.