MCP server providing unified fantasy sports tools for ESPN, Yahoo, and Sleeper fantasy leagues
The Fantasy MCP server demonstrates solid definition quality with consistent naming conventions, descriptions present on all tools, and structured input schemas. However, several gaps limit the score from reaching 80+: output schemas are not documented anywhere in the provided source; parameter descriptions are minimal (often 15-30 chars); missing enum constraints where they should exist (e.g., 'sport' and 'platforms' parameters); and no evidence of error handling guidance or recovery patterns. The server follows verb_noun naming well (get_*, refresh_*) and parameters are reasonably typed, but lacks the depth of field documentation and output structure guidance needed for A-grade production tooling.
Retrieve historical fantasy leagues from previous seasons and archived data
Get available free agent players in a league
Get detailed league configuration, scoring settings, and metadata
Get matchup information for current or specified scoring period
Get detailed player information and stats
Get the roster for a specific team including all players and their stats
No output schemas documented for any tool. Tools return unstructured responses with no field-level documentation. LLMs cannot plan downstream operations or extract specific fields reliably.
'sport' parameter accepts free-form string enum values (football, baseball, basketball, hockey) but lacks explicit enum constraint in schema. Should use 'enum' property to prevent hallucinated sport names.
'platforms' parameter in refresh_leagues lacks enum constraint. Should declare valid platforms (espn, yahoo, sleeper) as an explicit enum to prevent invalid platform names.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 67 | 2025-06-18+ | v2 |
| 2026-03-09 | F | 43 | - | v1 |
Get league standings and team records
Get league transaction history including waiver claims, trades, and roster moves
Retrieve the user's connected fantasy leagues and current season information
Discover and refresh connected fantasy leagues across ESPN, Yahoo, and Sleeper platforms
Parameter descriptions are too short (15-30 chars). LLMs rely on descriptions to understand context. E.g., 'The league ID' provides no guidance on format, source, or how to obtain it if missing. Should explain 'The unique identifier for the fantasy league (obtain from get_user_session response).'
No error handling guidance documented. Tools do not indicate what to do if a league_id is invalid, a user has no connected leagues, or a sport is not supported. Error responses should guide LLM recovery.
No pagination guidance in tools returning lists (get_roster, get_free_agents, get_transactions, get_players). Should specify result limits, support limit/offset parameters, and document max result count.
No tool composition guidance. get_user_session is a discovery tool but its output structure is not documented, unclear what fields it returns or which IDs are needed for follow-up calls like get_league_info.
refresh_leagues is marked as WRITE (potentially destructive) but no dry-run, confirmation, or warning is documented. Multi-platform refresh could have unintended side effects.