Model Context Protocol (MCP) server for Fantasy Premier League (FPL) data and analytics
FPL Analytics MCP has 12 well-named tools with consistent verb_noun patterns (get_, search_, compute rankings). All tools have descriptions (avg ~100 chars, within baseline 34-392). Input schemas are present with type definitions and parameter descriptions. However, output schemas are NOT documented, the code shows return types (PlayerRanking, list[dict], etc.) but the tool definitions lack explicit output schema documentation. Error handling is minimal; no recovery guidance or actionable error messages. No tool annotations (readOnlyHint, destructiveHint). Parameter descriptions are adequate but lack format constraints (e.g., position enum values 1-4 are mentioned in text but not formalized). The 'format' parameter pattern (summary vs detailed) is repeated across 6 tools but not consistently constrained as an enum.
Fetch an overview of the FPL bootstrap dataset.
Fetch fixtures for the current FPL season.
Fetch a single player's season and gameweek history.
Fetch live in-game data for a gameweek. If ``gameweek`` is omitted, the current or most recent gameweek is inferred from the bootstrap snapshot.
Get live in-game stats for a specific player by (partial) web name or full name.
Get a concise performance summary for a single player.
Rank FPL players by value (points per million).
Output schemas not documented. Tools return typed objects (PlayerRanking, LiveGameweek, etc.) but MCP tool definitions lack explicit output schema documentation. LLMs cannot plan downstream tool calls or extract fields without knowing response structure.
Enum constraints not formalized. The 'format' parameter (summary|detailed) appears in 6 tools as free-form strings with description text only. Position IDs (1=GK, 2=DEF, 3=MID, 4=FWD) and metric names (total_points, form, etc.) are documented in text but not declared as enums in the schema.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
Search and filter FPL players.
Summarise upcoming fixture difficulty (FDR) for teams.
Fetch the Premier League table ordered by points.
Rank the top FPL players by a chosen metric.
Rank players by current form (recent performance trend).
No error handling or recovery guidance. Tools lack error responses that tell LLMs what to do next. No categorization of errors as retryable, user-fixable, or fatal. No actionable error messages with invalid values and constraints.
No tool annotations. Tools lack readOnlyHint, destructiveHint, or idempotentHint annotations. All 12 tools are read-only (safe to retry), but this is not declared in the schema, forcing LLMs to infer safety.
Incomplete parameter descriptions. Parameters like 'gameweek' (1-38 range), 'limit' (default 20), and 'min_minutes' lack explicit min/max constraints in descriptions. LLMs cannot validate bounds without formal constraints.