MCP server for Yahoo Fantasy Sports — leagues, standings, rosters and matchups
Strong naming conventions (all tools start with action verbs: yahoo_get_*, yahoo_search_*). Descriptions are clear and contextual (avg ~120 chars, well within 10-1024 range). Input schemas are properly defined with Zod, including type and description for each parameter. Key strength: parameter descriptions explicitly guide users on format and dependencies (e.g., 'League key in the form "<game>.l.<id>"'). Weakness: no output schemas documented, callers cannot see what fields to expect from responses. No error handling guidance in descriptions. All 10 tools follow consistent patterns, but lack of output documentation and error recovery guidance prevents higher scores.
Escape hatch: GET any Yahoo Fantasy Sports API path (under /fantasy/v2/) not covered by a dedicated tool, e.g. "/league/{key}/draftresults". Read-only.
Scoring rules, roster positions, and other settings for a league.
Current standings for a league.
Recent adds/drops/trades in a league.
Lists every fantasy sport/season (NFL, NBA, MLB, NHL, across years) the logged-in Yahoo account has played.
Lists the leagues the account belongs to for a given game key (e.g. "nfl", "nba", "mlb", "nhl", or a year-specific code).
No output schemas documented. Callers cannot see what fields responses contain, forcing LLMs to guess structure and plan downstream calls blindly.
No error handling guidance in tool descriptions. LLMs cannot determine if failures are retryable, user-fixable, or fatal.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
Matchup scores for a league, optionally for a specific week.
A team's full schedule of matchups and results for the season.
A team's roster, optionally for a specific week.
Searches the player pool for a league by name.
yahoo_fantasy_raw_get is an escape hatch with minimal constraints. Path parameter lacks format validation (regex pattern, allowed prefixes). LLMs could pass invalid paths causing opaque 400 errors.
No pagination parameters (limit, offset, page) on tools that return lists (yahoo_get_my_games, yahoo_get_my_leagues, yahoo_search_league_players, yahoo_get_league_transactions). Large result sets could exhaust context window.
OAuth2 token management is server-side (good), but no documentation of token refresh behavior or expiration handling in tool descriptions. LLMs cannot reason about when re-authentication is needed.