Skip to main content
Glama
gsypolt

MFL MCP Server

by gsypolt

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
MFL_CONFIGNoPath to a config file (defaults to ~/.mfl-mcp/config.json).
MFL_SEASONNoMFL season year.
MFL_API_KEYNoMFL API key for the current season.
MFL_HTTP_HOSTNoHost to bind for hosted HTTP mode (e.g. 0.0.0.0).
MFL_LEAGUE_IDNoMFL League ID.
MFL_MCP_SECRETNoSecret used by hosted mode to protect the server.
MFL_USER_AGENTNoYour registered MFL API client name (sent as User-Agent).
MFL_CONFIG_JSONNoJSON string containing the hosted mode configuration.
MFL_FRANCHISE_IDNoYour team's MFL franchise ID (e.g. 0007).
MFL_PREVIOUS_SEASON_API_KEYNoMFL API key for the previous season.

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
}
prompts
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
mfl_list_leaguesA

List the MFL leagues and seasons this server is configured for: alias, league ID, your franchise ID, which seasons have an API key, and which league is the default.

Call this first when the user mentions a league by nickname, asks about "last season", or when another tool reports an unknown league or missing API key. Never returns API keys.

Args:

  • response_format ('markdown' | 'json'): default 'markdown'.

mfl_get_leagueA

Get a league's name, every franchise (ID, team name, owner, division), roster size, taxi squad and IR slots, starting lineup requirements, and season weeks.

Use this to map franchise IDs to team names, or to answer questions about league rules and lineup requirements.

Args:

  • league (string, optional): alias, name, or numeric league ID. Default league if omitted.

  • season (number, optional): e.g. 2025.

  • response_format: 'markdown' (default) or 'json'.

mfl_get_standingsA

Get league standings: head-to-head record, points for, points against, division, division record, streak, and any extra columns the league tracks (all-play, power rating).

In leagues with divisions, the markdown output has one table per division (ranked within the division) followed by the overall table, so questions like "standings for each division" need only this tool.

Args:

  • league, season: optional; see mfl_list_leagues.

  • response_format: 'markdown' (default) or 'json'.

mfl_get_scheduleB

Get fantasy matchups by week, with scores and results for completed weeks.

Args:

  • league, season: optional.

  • week (number, optional): a single week. Omit for the full season.

  • franchise (string, optional): "mine", a franchise ID, or a team name to show only that team's games. Default: all teams.

  • response_format: 'markdown' (default) or 'json'.

mfl_get_rosterA

Get the players on a franchise's roster (or every roster in the league), with player name, position (offense and IDP), NFL team, age, roster status (Active, Taxi, IR), and salary/contract fields when the league uses them.

Defaults to YOUR franchise when one is configured. Use franchise="all" to see every team (useful for "who owns X", trade targets, or league-wide positional depth).

Args:

  • league, season: optional. Use season to see a previous season's final rosters.

  • franchise (string, optional): "mine" (default), "all", a franchise ID like "0007", or a team/owner name.

  • week (number, optional): roster as of a specific week.

  • position (string, optional): only show this position, e.g. "QB", "LB", "S".

  • status (string, optional): 'active' | 'taxi' | 'ir' to filter roster status.

  • response_format: 'markdown' (default) or 'json'.

Examples:

  • "Show my roster" -> {}

  • "Who has the most linebackers?" -> { franchise: "all", position: "LB" }

  • "What did my taxi squad look like last year?" -> { season: 2025, status: "taxi" }

mfl_get_future_draft_picksA

Get the future rookie draft picks each franchise owns (year, round, and whose original pick it is). Essential for dynasty trade analysis.

Args:

  • league, season: optional.

  • franchise (string, optional): "mine", "all" (default), a franchise ID, or a team name.

  • response_format: 'markdown' (default) or 'json'.

mfl_get_playersA

Search MFL's player database (all NFL players, offense and IDP) by name, position, NFL team, or player ID. Returns ID, name, position, team, age, draft year/round/pick, college, and (by default) which fantasy team in your league owns each player.

Use this to find player IDs for other tools, check ages and draft capital for dynasty decisions, or answer "who owns X?".

Args:

  • name (string, optional): full or partial name, e.g. "bijan" or "St. Brown".

  • positions (string, optional): comma list, e.g. "RB,WR" or "DE,DT,LB".

  • teams (string, optional): comma list of MFL team codes, e.g. "KCC,BUF". "FA" = NFL free agent.

  • player_ids (string, optional): comma list of MFL player IDs.

  • rookies_only (boolean, optional): only players drafted in the selected season.

  • owner (string, optional): only players on this fantasy team: "mine", a franchise ID, or a team name; or "available" for unrostered players.

  • sort ('name' | 'points', default 'name'): 'points' ranks by year-to-date fantasy points under the league's scoring and adds a points column.

  • include_ownership (boolean, default true): add the fantasy owner in this league (one extra API call).

  • league, season: optional (season selects that year's player database).

  • limit (1-200, default 25), offset (default 0).

  • response_format: 'markdown' (default) or 'json'.

At least one filter is recommended; the full database has thousands of players. Combine filters instead of fetching a big list and filtering it yourself:

  • "My top rookies by points" -> { rookies_only: true, owner: "mine", sort: "points" }

  • "Best available IDP linebackers" -> { positions: "LB", owner: "available", sort: "points" }

mfl_get_free_agentsA

List players available (not on any roster) in the league, sorted by year-to-date fantasy points under the league's own scoring rules. Covers offense and IDP.

Args:

  • league, season: optional.

  • position (string, optional): e.g. "LB", "S", "WR".

  • limit (1-200, default 25), offset (default 0).

  • response_format: 'markdown' (default) or 'json'.

mfl_get_injuriesA

Get the NFL injury report (status like Out/Doubtful/Questionable/IR, injury details, expected return) filtered to the players you care about.

Args:

  • scope ('mine' | 'league' | 'all'): 'mine' = your roster (default when a franchise is configured), 'league' = every rostered player in the league with their fantasy owner, 'all' = entire NFL report.

  • week (number, optional): report for a given week; omit for the latest.

  • league, season: optional.

  • response_format: 'markdown' (default) or 'json'.

mfl_get_player_scoresA

Get fantasy points under the league's scoring rules for a week, year-to-date total, or season average. Filter to a franchise's roster, specific players, or a position.

Args:

  • period ('week' | 'ytd' | 'avg'): default 'ytd'. With 'week', pass week.

  • week (number, optional): used when period='week'. Omit for the current week.

  • franchise (string, optional): "mine", a franchise ID, or a team name to score only that roster.

  • player_ids (string, optional): comma list of MFL player IDs (use mfl_get_players to find IDs).

  • position (string, optional): e.g. "LB".

  • league, season: optional.

  • limit (1-200, default 25), offset (default 0).

  • response_format: 'markdown' (default) or 'json'.

mfl_get_transactionsA

Get recent league transactions (trades, free-agent adds/drops, waiver and blind-bid claims, IR and taxi moves) in plain English, with player names and decoded draft picks.

Args:

  • type (optional): TRADE, FREE_AGENT, WAIVER, BBID_WAIVER, IR, TAXI, AUCTION_WON, DRAFT, or ALL (default).

  • franchise (string, optional): "mine", a franchise ID, or a team name.

  • days (number, optional): only the last N days.

  • count (number, default 50): max transactions (1-500).

  • league, season: optional.

  • response_format: 'markdown' (default) or 'json'.

Examples:

  • "Any trades this week?" -> { type: "TRADE", days: 7 }

  • "What has Team X added lately?" -> { franchise: "Team X", type: "FREE_AGENT", days: 14 }

mfl_get_draft_resultsA

Get the league's draft results for a season (rookie/startup draft): round, pick, the team that picked, and the player selected. Unmade picks show as "on the clock / pending".

Args:

  • league, season: optional. Use season to look at a past draft.

  • franchise (string, optional): "mine", a franchise ID, or a team name.

  • response_format: 'markdown' (default) or 'json'.

mfl_get_live_scoringA

Get live (or final) fantasy scores for every matchup in a week, including players yet to play and game time remaining.

Args:

  • week (number, optional): omit for the current week.

  • league, season: optional.

  • response_format: 'markdown' (default) or 'json'.

mfl_exportA

Read-only escape hatch: call any MyFantasyLeague export request TYPE and get the raw JSON. Use this only when no dedicated mfl_ tool covers the need, for example: projectedScores, tradeBait, pendingTrades, salaries, accounting, playoffBrackets, weeklyResults, topAdds, topDrops, adp, aav, nflSchedule, playerProfile, messageBoard, rules.

The league ID and API key are added automatically. Parameter names are CASE SENSITIVE and must match MFL's docs (e.g. W, P, FRANCHISE, POSITION). This tool cannot change anything in MFL.

Args:

  • type (string): MFL export TYPE, e.g. "projectedScores".

  • params (object, optional): extra query parameters, e.g. { "W": "5" }.

  • league_scoped (boolean, default true): false for site-wide types like adp, nflSchedule, playerProfile.

  • league, season: optional.

Prompts

Interactive templates invoked by user choice

NameDescription
mfl_daily_roster_checkInjuries, roster news, and waiver opportunities for my team. Good for a scheduled daily routine.
mfl_weekly_recapStandings, my matchup result, top scorers, and notable transactions for the week.
mfl_trade_prepCompare my roster and draft capital against another team to find trade fits.

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4/5.0

Scored across 14 tools

Disambiguation4/5

Most tools target a distinct MFL resource or action, but mfl_get_free_agents overlaps heavily with mfl_get_players using owner='available' and sort='points'; mfl_get_schedule and mfl_get_live_scoring also share completed-week matchup scoring. Descriptions help, but an agent could reasonably choose either in those cases.

Naming Consistency5/5

All tools use the mfl_ prefix with snake_case names and a predictable get/list/export verb pattern. The lone generic mfl_export still fits the namespace and read-only retrieval convention.

Tool Count5/5

14 tools is well-scoped for a fantasy-league data server, covering the main domains without obvious filler. The dedicated tools and one escape hatch are reasonable for the breadth of MFL exports.

Completeness5/5

The surface covers leagues, franchises, players, rosters, schedules, standings, drafts, future picks, transactions, injuries, free agents, scoring, live scoring, and a generic export fallback. For a read-only MFL analytics server, this leaves no major dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues