MCP server for NBA game data, player statistics, and betting odds analysis
This server has three tools with minimal parameter schemas (all accept empty input objects) and generic, short descriptions. No input validation, no parameter type constraints, and no documented output schemas. The tool names are reasonably clear (fetch_*) but descriptions lack depth about WHEN to use each tool, error recovery, and output structure. No tool annotations, no pagination support, and no guidance for multi-tool composition. The implementation is read-only and straightforward, but the definition quality is well below production standards.
Fetch betting odds for today's NBA games only
Fetch today's NBA schedule
Fetch recent player statistics for players on teams playing today
CRITICAL: All three tools have empty input schemas ({}). No parameters means no way to customize behavior, filter results, or pass user context. Schema score MUST be 0 per HARD SCORING RULES.
CRITICAL: Tool descriptions are extremely generic (9-12 words). 'Fetch today's NBA schedule' lacks WHEN to call this vs alternatives, what it returns, and any prerequisites. Description scores MUST be 0-20 per HARD SCORING RULES.
HARD CAP: Tools return unstructured/undocumented output. No documented output schema. fetch_nba_games returns a dict with 'date', 'total_games', 'games', but the structure of each game object is not documented. LLM cannot predict what fields to expect or chain downstream calls. This server: 0%.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 29 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 30 | - | v1 |
No pagination or result limiting. fetch_nba_stats returns ALL players on all teams playing today with no offset/limit parameters. Large result sets blow context windows.
No error guidance. Code has generic try-except blocks returning {'error': str(e)}. Missing pattern:recovery-guide.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All three are read-only and idempotent, but client cannot detect this from the tool definition. Modern MCP clients rely on tool annotations to reason about side effects.
No composition support. Each tool is standalone; output from one tool is never chained into another. fetch_nba_games returns game_id and team tricodes, but fetch_nba_stats does NOT accept a games_filter parameter to narrow down to a specific game. LLM must call all tools and merge results manually.
Verbose API responses not stripped. fetch_nba_games maps NBA API's verbose result sets into game objects, but still returns raw numeric score fields and multiple nested team objects.