Skip to main content
Glama
jolfr

fantasy-mcp

by jolfr

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
SWIDYesYour ESPN `SWID` cookie value (keep curly braces). Required for authentication.
SEASONNoOptional season year (defaults to current calendar year). Set explicitly from January to July to view last season.
ESPN_S2YesYour ESPN `espn_s2` cookie value (keep URL-encoded). Required for authentication.
TEAM_IDNoOptional team ID (normally auto-detected from SWID; set only if needed).
LEAGUE_IDYesYour ESPN fantasy football league ID (the number after `leagueId=` in the URL).

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

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
whoamiA

Verify ESPN credentials and league configuration.

Call this first. Cheap (one small request, no roster data). Returns the league id/name, season, and the user's team id/name. Fails with an explanatory message if cookies are expired or the league/team can't be resolved.

get_league_settingsA

League rules: scoring, roster construction, schedule/playoffs, waivers, trades.

Call this before start/sit, pickup, or trade advice so recommendations use this league's scoring (scoring.ppr = points per reception; scoring.summary is a one-line description; scoring.rules maps stat names -- the same names get_player's game log uses -- to points, with unmapped ESPN ids as stat_). roster.lineup gives starting slots and bench/IR counts; roster.position_limits caps how many of a position a team may roster. waivers describes the claim system (budget is FAAB dollars when present); trades.deadline is a UTC date.

get_my_teamA

Return the user's fantasy team: season record, points, and full roster.

Each roster row has: player_id (pass to get_player); name; position (the player's NFL position, e.g. QB/RB/WR); slot (the fantasy lineup slot — BENCH and IR mean not starting, anything else is a starter); pro_team (NFL team abbreviation); injury_status. Rows are ordered starters first, then bench, then IR. Record and points are season-to-date for the configured season.

get_matchupA

Return the user's current-week head-to-head matchup with live scoring.

Use this for "am I winning?", "who am I playing?", or "should I have started X?". Covers the current week only. There is no per-player game-state field: points of 0.0 may mean the player has not played yet OR played and scored nothing -- do not claim to know which.

Top level: week; status (UPCOMING, IN_PROGRESS, or FINAL); is_home; my_team; opponent. Each team has: team_id, name, abbrev, score (fantasy points so far this week), projected (ESPN's live projection for the week's final score), win_probability (0-1, may be null), and roster. Each roster row has the same fields as get_my_team (player_id, name, position, slot, pro_team, injury_status) plus points (scored so far this week) and projected (ESPN's projection for this player this week; null if unavailable). Only rows whose slot is not BENCH or IR count toward score.

get_free_agentsA

List available players (free agents and waiver claims) in the user's league.

Use this for "who should I pick up?", "best available RB", or "who's trending".

Args: position -- one of QB, RB, WR, TE, K, D_ST (case-insensitive; D/ST also accepted); omit for all positions. limit -- 1 to 50, default 10. sort -- "owned" (most rostered across ESPN first, default) or "projected" (highest season projection first).

Each player row: player_id (pass to get_player), name, position, pro_team, injury_status, status (FREEAGENT = add immediately; WAIVERS = must submit a claim), percent_owned (% of ESPN leagues rostering them), percent_change (ownership trend -- positive means being picked up), season_projected / season_points (full-season projected / scored so far), week_projected / week_points (current NFL week; 0.0 may mean not played yet OR played and scored nothing), and positional_rank (ESPN's season rank at their position; null if unavailable). Next-week projections are not available from this tool.

get_playerA

Full profile for one player: status, league ownership, season numbers, outlook, game log.

Use this for "tell me about X", "how has X been doing", "who has X in my league", or "is X worth a claim". Pass exactly one of: name (full name is best; a partial name works if it matches one active player) or player_id (from any other tool's rows -- prefer this when you have it).

Returns: player_id, name, position, pro_team, injury_status, injured, eligible_slots; league_status (ONTEAM / FREEAGENT / WAIVERS) and owned_by (the league team rostering them, or null); ownership across all ESPN leagues (percent_owned, percent_started, percent_change = trend, adp); season {year, projected, points, positional_rank}; last_season {year, points}; outlook (ESPN's written preseason summary); game_log newest first, each week with points, projected (null until ESPN publishes it), and stats -- raw counts such as rush_yds, targets, pass_td, fg_made_40_49, dst_sacks (zero-valued stats omitted). Covers this season and last. No news articles or opponent-matchup ratings. Name lookup uses a snapshot of ESPN's active-player list taken when the server started; a player signed since then may not resolve by name but still works by player_id. In clients that support MCP Apps this renders as a card; the JSON profile is always returned as text. headshot_url points at ESPN's CDN (team logo for a D/ST) and is not verified to exist.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
Prefab Renderer (get_player)

TDQS

A4.6/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: identity/config, league rules, own roster, weekly matchup, free-agent pool, and player profile. Even get_my_team and get_matchup both return roster rows, their contexts are distinct and cross-references via player_id make selection unambiguous.

Naming Consistency4/5

Five of six tools follow a consistent get_<noun> snake_case pattern, which is predictable and clear. whoami is the lone outlier, though it is a conventional identity command and the deviation is minor.

Tool Count5/5

Six tools is a tightly scoped, well-sized surface for a fantasy football assistant. Each tool earns its place and there is no redundancy or bloat.

Completeness4/5

The read-only fantasy football workflow is well covered: identity, scoring/rules, roster, matchup, waivers, and player research. Notable gaps include no league standings/overview tool and no transaction endpoints, but the descriptions consistently frame this as an advice/analysis server, so these are minor rather than fatal.

Maintenance

ActivityMaintained
ResponsivenessNo issues