mcp-ff2026
This MCP server helps an AI agent manage a Sleeper fantasy football team by syncing league data, generating draft/lineup/trade/waiver recommendations, and tracking decision outcomes for calibration.
League & data sync: Discover leagues, rosters, drafts, history, players, projections, and market signals from Sleeper and optional providers.
Draft assistance: Sync live draft state, list available players, maintain a conflict-safe local queue, and get ranked draft recommendations with survival estimates.
Roster & lineup tools: View value-aware roster depth, optimize weekly lineups for median/floor/upside, and compare players across horizons.
Waivers, trades, and strategy: Analyze waiver windows with FAAB ranges, find trade opportunities, and get season strategy recommendations based on record and roster strength.
Simulation & forecasting: Estimate playoff/championship probabilities with explicit uncertainty.
Decision tracking & calibration: Record actions and outcomes, attach them to recommendations, and generate calibration reports evaluating forecast accuracy.
Provider & identity management: Import licensed provider snapshots, resolve player identity mappings, and inspect sync/provider status.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-ff2026 Who should I draft with my next pick?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Sleeper Fantasy Football MCP 2026
An MCP server that helps an AI agent run a Sleeper fantasy football team from draft night through the championship. Sleeper is the read-only source of league state; recommendations, draft queues, decision history, and model data are stored locally in SQLite.
What it does
Discovers your league, roster, and draft from one Sleeper username or user ID.
Syncs rosters, drafts, picks, matchups, transactions, players, and league history.
Imports public ffverse player crosswalks and current rankings without an API key.
Best-effort fills projection/ADP gaps from Sleeper's public projection feed.
Optionally enriches remaining gaps with FantasyPros or normalized third-party snapshots.
Recommends draft picks and estimates who may survive to your next pick.
Maintains a conflict-safe local draft queue.
Optimizes lineups and analyzes waivers, FAAB, trades, and season strategy.
Learns descriptive manager tendencies from historical league behavior.
Preserves source snapshots, recommendations, actions, and outcomes for later evaluation.
The models expose their inputs and uncertainty. Heuristic survival, FAAB, and championship estimates are not presented as calibrated facts.
Related MCP server: @fantopy/fantopy-mcp
Requirements
Python 3.12+
A Sleeper username or user ID
FantasyPros is optional. The public ffverse feed is the preferred model-evidence source. Its rankings are distributed through the nflverse ecosystem by DynastyProcess and originate from FantasyPros consensus, so the server preserves that upstream lineage rather than double-counting the two feeds as independent evidence.
Setup
uv sync
cp .env.example .envEdit .env:
FF2026_SLEEPER_USER_ID=your-sleeper-username
# Optional:
# FF2026_FANTASYPROS_API_KEY=your-api-keyStart the stdio MCP server:
uv run --env-file .env ff2026-mcpState is stored in .data/ff2026.sqlite3. Credentials are read only from the environment and are
excluded from source control.
MCP configuration
{
"mcpServers": {
"ff2026": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/mcp-ff2026",
"run",
"--env-file",
".env",
"ff2026-mcp"
]
}
}
}First run
Ask the agent to perform these operations:
initialize_seasondiscovers and stores the league, roster, and draft defaults.get_season_contextconfirms the selection.sync_ffverseimports the public player crosswalk and preseason rankings using week0.sync_sleeper_projectionsattempts free preseason projection and ADP fallback data.get_provider_statusreports unresolved player identities.sync_league_historyimports previous seasons for manager analysis.
ffverse's draft dataset contains ranks, not season point projections. Import a licensed projection
feed with import_provider_snapshot, configure the optional FantasyPros API, or use the
best-effort Sleeper-hosted projection fallback. Third-party evidence fills a missing
player/metric/horizon only; matching native ffverse evidence remains authoritative. The weekly PPR
rank-to-points field is retained as an explicitly labeled fallback rather than promoted to a native
projection. Sleeper's projection URL is public but not part of its documented API, so refresh
failures warn and preserve the last good evidence instead of blocking ffverse refreshes.
If the account has multiple leagues, initialize_season returns the choices instead of guessing.
During the draft
Run
refresh_decision_inputswith week0.Read
get_draft_stateand stop if it reports stale data.Use
recommend_draft_pickand review the alternatives and survival ranges.Update the local queue with
set_draft_queue_entry.Record the chosen action, sync the draft, and repeat.
No tool makes picks or other changes in Sleeper.
During the season
Refresh inputs each week, then use the lineup, waiver, trade, value-change, simulation, and season strategy tools as needed. Record actions and outcomes so calibration reports can evaluate the system prospectively.
Create a transactionally consistent backup with:
uv run --env-file .env ff2026-backupDevelopment
uv run ruff format --check .
uv run ruff check .
uv run mypy
uv run pytestDetailed design and contracts:
Additional data sources must be licensed for your use. Boris-style tiers are treated as a FantasyPros-derived benchmark, not as independent evidence.
Available Tools
33 toolsanalyze_waiver_windowB
Evaluate add/drop pairs, FAAB ranges, and expected competition for current waivers.
Inputs: week (required), limit, league_id, roster_id. Returns: object
compare_playersB
Compare same-horizon league-scoring values without hiding their components.
Inputs: horizon (required), player_ids (required), league_id, roster_id. Returns: object
find_trade_opportunitiesA
Find plausible one-for-one roster-fit trades without inventing acceptance odds.
Inputs: limit, horizon, league_id, roster_id. Returns: object
get_calibration_reportB
Report Brier/absolute-error metrics from prospectively recorded outcomes.
Inputs: league_id. Returns: object
get_decision_historyC
Return immutable recommendation inputs, alternatives, actions, and outcomes.
Inputs: limit, league_id. Returns: object
get_draft_stateA
Get draft settings, picks, next-pick context, and an optional roster's local queue.
Inputs: draft_id, league_id, roster_id. Returns: object
get_league_overviewC
Get the current local league format, rosters, managers, and sync provenance.
Inputs: league_id. Returns: object
get_manager_profileB
Return descriptive, uncertainty-labeled manager behavior from retained history.
Inputs: league_id, roster_id. Returns: object
get_player_contextA
Return resolved projections, market inputs, injuries, and news for a player.
Inputs: player_id (required). Returns: object
get_provider_statusC
Inspect provider synchronizations and unresolved player identities.
Inputs: league_id. Returns: object
get_roster_stateC
Return value-aware roster depth, positional fragility, and current injury risk.
Inputs: horizon (required), league_id, roster_id. Returns: object
get_season_contextB
Get the persisted Sleeper user, league, roster, and draft defaults.
Inputs: season. Returns: object
get_sync_statusB
Inspect recent season/draft synchronizations and retained projection failures.
Inputs: limit, league_id. Returns: object
get_value_changesC
Screen for projection, market, trend, or contextual changes since a timestamp.
Inputs: since (required), horizon (required), limit, league_id. Returns: object
import_provider_snapshotC
Import one licensed point-in-time provider export into the same raw-first pipeline.
Inputs: payload (required), provider (required), source_key (required), document_kind (required), +4 more. Returns: object
initialize_seasonA
Discover the configured Sleeper user's league, roster, and draft for a season.
A single discovered league is selected automatically. If several exist, this returns
concise choices without guessing; call it again with league_id. The selected context is
persisted locally and becomes the default for all league-aware tools.
Inputs: season, league_id, include_players. Returns: object
list_available_playersA
List active Sleeper players absent from current rosters and this league's draft picks.
This is an availability query, not a ranking or recommendation. Sleeper's search rank only provides stable result ordering until independent valuations exist.
Inputs: limit, draft_id, league_id, positions. Returns: object
map_player_identityB
Manually resolve an ambiguous provider ID to a Sleeper player with audit metadata.
Inputs: provider (required), sleeper_player_id (required), provider_player_id (required), confidence. Returns: object
optimize_lineupB
Optimize an eligible weekly lineup for median, floor, and upside objectives.
Inputs: week (required), league_id, roster_id. Returns: object
recommend_draft_pickC
Rank available draft choices and estimate survival to the roster's next owned pick.
Inputs: limit, draft_id, league_id, roster_id. Returns: object
recommend_season_strategyC
Recommend risk posture from record, points rank, and current weekly roster strength.
Inputs: week (required), league_id, roster_id. Returns: object
record_decision_actionC
Attach the action actually taken to a previously persisted recommendation.
Inputs: decision_id (required), chosen_action (required). Returns: object
record_decision_outcomeA
Attach an observed outcome to a prior recommendation without rewriting its forecast.
Inputs: outcome (required), decision_id (required). Returns: object
record_trade_offerC
Record proposed/rejected/countered/accepted trade labels for future calibration.
Inputs: status (required), give_player_ids (required), receive_player_ids (required), receiving_roster_id (required), +3 more. Returns: object
refresh_decision_inputsD
Refresh the appropriate Sleeper ledger, market signals, and licensed evidence.
Inputs: week, season, scoring, draft_id, +2 more. Returns: object
remove_draft_queue_entryB
Conflict-safely remove one player from an agent-managed local draft queue.
Inputs: player_id (required), expected_queue_revision (required), draft_id, roster_id. Returns: object
set_draft_queue_entryA
Conflict-safely insert or update one player in the local draft queue.
Copy expected_queue_revision and expected_state_token from get_draft_state. A stale write is
rejected so a pick or another queue edit cannot be silently overwritten.
Inputs: player_id (required), queue_rank (required), expected_state_token (required), expected_queue_revision (required), +4 more. Returns: object
simulate_seasonC
Estimate explicitly experimental playoff and championship probabilities.
Inputs: week (required), league_id, simulations. Returns: object
sync_draftA
Refresh only live draft details, picks, and traded-pick ownership.
This low-latency path detects picks made during its read. Call it immediately before a
draft decision, then use the returned sync provenance from get_draft_state.
Inputs: draft_id, league_id. Returns: object
sync_fantasyprosC
Ingest licensed FantasyPros identities, ECR/ADP, projections, news, and injuries.
Inputs: week, season, scoring, league_id. Returns: object
sync_leagueA
Synchronize broad Sleeper league state for setup and season-long operation.
With weeks omitted, the current NFL week is captured automatically. Pass an explicit list
for historical/backfill work or an empty list for core state only. Set include_players only
when the large NFL catalog needs refreshing; Sleeper recommends caching it.
Inputs: weeks, league_id, include_players. Returns: object
sync_league_historyC
Backfill every week while following Sleeper's previous-league renewal chain.
Inputs: league_id, max_seasons. Returns: object
sync_sleeper_marketC
Ingest documented Sleeper global add/drop trends as a market signal.
Inputs: limit, league_id, lookback_hours. Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 33 tools
Most tools target distinct resources and actions, but the multiple sync_* variants (sync_league, sync_draft, sync_league_history, sync_fantasypros, sync_sleeper_market) and refresh_decision_inputs create potential confusion about which synchronization to call for a given task. Descriptions mitigate this, but boundaries are not always obvious.
All tool names use a consistent snake_case verb_noun pattern (e.g., get_draft_state, sync_league, recommend_draft_pick), with no convention mixing. The pattern is predictable and helps agents infer functionality.
With 33 tools, the server exceeds the 25-tool threshold for a typical MCP server. While the fantasy football domain is broad, many sync and decision-recording tools could be consolidated, making the surface unnecessarily large.
The tool set covers the full fantasy football decision lifecycle, from data ingestion and state synchronization to analysis, recommendations, and outcome recording. Minor gaps exist such as no transaction execution or lineup setting, but these appear deliberately excluded from the server's decision-support scope.
Related MCP Connectors
An MCP server that integrates with Discord to provide AI-powered features.
Driflyte MCP server which lets AI assistants query topic-specific knowledge from web and GitHub.
Official MCP server for Agentwork — delegate tasks to AI agents with human-in-the-loop
MCP server for building and testing AI agents with multi-model experimentation and insights.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceA server that integrates Sleeper fantasy sports data with Goose AI through the Machine Context Protocol (MCP), providing structured access to fantasy league information.-

@fantopy/fantopy-mcpofficial
AlicenseAqualityCmaintenanceMCP server enabling AI agents to play fantasy football on Solana through Fantopy Arena, with tools for contests, lineups, and payouts.12MIT- AlicenseNot gradedqualityDmaintenanceMCP server that turns real NFL & fantasy data into a decisive edge, offering 70+ tools for draft assistance, start/sit recommendations, trade analysis, playoff odds, and more, with live league integration.MIT
- FlicenseNot gradedqualityCmaintenanceMCP server for NFL fantasy football retrieval, providing access to NFL stats and Sleeper league data through retrieval-oriented tools.-