ESPN Fantasy Football MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SWID | No | Private-league cookie. Prefer setting this on the API server instead. | |
| ESPN_S2 | No | Private-league cookie. Prefer setting this on the API server instead. | |
| LEAGUE_ID | No | Default league. Tools may override it per call. | |
| SEASON_YEAR | No | Default season year. | |
| FF_API_BASE_URL | No | Base URL of the fantasy HTTP API. Must be https/http. | http://localhost:3000 |
| FF_CACHE_TTL_MS | No | TTL for the in-memory response cache. | 60000 |
| FF_API_TIMEOUT_MS | No | Per-request timeout. | 20000 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_healthA | Check that the ESPN fantasy football HTTP API this server talks to is reachable. Use this first when other tools fail, to tell "API is down" apart from "bad league config". |
| get_leagueA | Get the league id, season year, league name, team count and — most importantly — current_week. Call this before any week-scoped question so you know what "this week" means. |
| get_settingsA | Get league settings: scoring format (PPR / half-PPR / standard and per-stat values), roster and lineup slot counts, playoff team count, playoff week matchup length, waiver/FAAB rules, keeper settings, and divisions. Player value depends entirely on these rules, so read them before ranking, trading or start/sit advice. |
| get_teamsA | List every fantasy team with team_id, name, abbreviation, record (wins/losses/ties), points for, points against and division. Use this to translate a team name the user typed into the numeric teamId other tools require. |
| get_standingsA | Get standings ordered by league rank with wins, losses, ties and points_for. Compare points_for against record to spot lucky and unlucky teams. |
| get_power_rankingsA | Get computed power rankings through a given week. Power score blends scoring and strength of opponents, so it is a better quality estimate than raw record. Use alongside get_standings to explain who is overperforming their record. |
| get_draftA | Get every draft pick with round, pick number, player, drafting team, auction bid amount and keeper status. Use for draft grades, steal/bust analysis, and to see how much a manager originally invested in a player being discussed in a trade. |
| get_rosterA | Get one team's roster for a specific week: player names, positions, lineup slot (starter vs bench), eligible slots, pro team, injury status and ownership percentages. This is the starting point for start/sit, trade and roster-construction questions. Both teamId and week are required. |
| get_scoreboardA | Get head-to-head scores for a week: home/away team names, scores and whether the matchup is a playoff game. Safe to call for future weeks, where scores will be zero. For per-player detail use get_box_scores instead. |
| get_matchupsA | Get the matchup schedule for a week, including matchup_type (regular season, winners bracket, losers/consolation bracket). Use this to preview who plays whom, including future weeks, and to work out playoff scenarios. |
| get_box_scoresA | Get detailed box scores for a week: actual and projected team scores plus, with includeLineup, every starter and bench player with their points, projected points, slot, pro opponent, bye-week flag and injury status. This is the richest tool here — use it for start/sit review, bench blunders, over/under-performance versus projection and weekly recaps. Requesting a week later than the league current_week fails with an error, so check get_league first. |
| get_free_agentsA | List unrostered players available on the waiver wire or as free agents, with projected points and recent points. This is the tool for "who should I pick up", streaming a defense or kicker, and finding a replacement for an injured starter. Filter by position and raise size to see deeper options. |
| get_player_infoA | Look up a single player by name or ESPN playerId and get their position, pro team, ownership and start percentages, injury status, and scoring. Use the exact full name ("Patrick Mahomes"); if the lookup fails, find the player via get_free_agents or get_roster and use the returned player_id instead. |
| get_transactionsA | Get roster transactions (waiver claims, free-agent adds, drops, trades) for a scoring period, including FAAB bid amounts and whether a claim succeeded or failed. Use this to see what the waiver market paid for a player and which managers are chasing the same needs. |
| get_activityA | Get the league activity feed — the chronological "who added/dropped/traded what" log. Best tool for "what did I miss this week" and for newsletter or recap writing. Page through with size and offset. |
| get_league_profileA | THE tool to call before giving any fantasy advice. Translates the league's raw ESPN settings into plain English: scoring format (PPR value, passing TD value, active yardage bonuses, every scoring rule grouped by category), the exact starting lineup including how many FLEX slots and whether it is superflex, bench and IR slot counts, roster size, waiver and FAAB mechanics, trade deadline, playoff structure, and a list of strategic implications those rules create. Player value depends entirely on these rules, so call this first rather than assuming a standard league. |
| check_lineupA | Audit a team's lineup for a week against the league's real slot requirements and player availability. Detects: unfilled starting slots that would score zero, starters on a bye, starters who are OUT or DOUBTFUL, questionable starters needing a kickoff check, players illegally occupying an IR slot (which blocks lineup submission in ESPN), injured bench players who could be stashed on an open IR slot to free a bench spot, and bench players outscoring a starter they are eligible to replace. Use this for "is my lineup set", "am I missing anything", and IR or bench optimization questions. |
| explain_fantasy_footballA | Get background on how fantasy football works: the season structure, scoring formats (PPR vs standard), lineup slots, waivers and FAAB, injury designations, strategy vocabulary and league types. Call this when a question uses fantasy jargon you are not confident about, or before giving advice in an unfamiliar league format. |
| how_to_answerA | Get the recommended tool sequence for common fantasy questions (start/sit, waiver pickups, trade evaluation, playoff odds, weekly recap, draft review). Call this when you are unsure which tools to combine for a question. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| start-sit | Decide which players to start for a team this week. |
| waiver-wire-targets | Find the best available pickups and who to drop for them. |
| trade-evaluation | Judge whether a proposed trade helps or hurts. |
| matchup-preview | Preview a weekly head-to-head matchup. |
| weekly-recap | Write an entertaining recap of the week. |
| power-rankings-writeup | Turn the computed power rankings into commentary. |
| playoff-outlook | Assess playoff chances and what has to happen. |
| roster-checkup | Audit a roster for holes, bye-week gaps and dead weight. |
| draft-review | Grade the draft in hindsight. |
| league-briefing | Catch me up on everything happening in the league. |
| explain-my-league | Translate the league rules into plain English and what they mean for strategy. |
| lineup-legality-check | Verify a lineup is legal, full and optimal before kickoff. |
| ir-and-bench-optimization | Free up roster spots using IR slots and drop candidates. |
| scoring-quirks | What this league rewards that most managers overlook. |
| format-adjusted-rankings | Rank players for this league's specific rules, not generic rankings. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| fantasy-football-glossary | How fantasy football works: formats, scoring, lineup slots, waivers, strategy terms. |
| question-playbook | Which tools to combine for the questions fantasy managers actually ask. |
| api-openapi-spec | The live OpenAPI document served by the ESPN fantasy football HTTP API. |
| league-snapshot | Summary of the league this server is configured against, including current week. |
| espn-code-reference | Decoder for ESPN lineup slot IDs, stat IDs, injury statuses and transaction types. |
| league-rules-digest | Plain-English scoring, lineup, waiver and playoff rules for the configured league. |
TDQS
Scored across 19 tools
Most tools target clearly distinct data, but several overlap: get_settings and get_league_profile both describe league rules and instruct agents to call them first, get_scoreboard/get_matchups/get_box_scores all return week-level matchup data, and get_teams/get_standings both include records. Descriptions mitigate though, and there are no truly interchangeable tools.
The vast majority follow a consistent get_<noun> pattern (get_league, get_roster, get_free_agents). Three exceptions break the pattern: how_to_answer, check_lineup, and explain_fantasy_football. Still easily readable and predictable overall.
Nineteen tools is on the heavy side but justified for read-only ESPN fantasy football, which requires distinct operations for league info, rosters, scores, transactions, and player data. A few tools could be consolidated, but none feel superfluous.
The surface covers nearly everything a fantasy football assistant needs: league context, settings, teams, standings, draft, rosters, weekly scores, matchups, box scores, free agents, player lookup, transactions, activity feed, lineup auditing, and educational help. No major read-only gaps are apparent.