Skip to main content
Glama
sleeper-mcp

sleeper-mcp

by tweiss777

Sleeper MCP

A read-only Model Context Protocol server for the public Sleeper API. It exposes users, leagues, rosters, matchups, transactions, drafts, players, trending activity, playoff brackets, traded picks, and sport state through async FastMCP tools.

Sleeper requires no API key. Please respect its documented guidance to stay below 1,000 requests per minute. The full players response is several megabytes and should generally be fetched no more than once per day.

Install

Requires Python 3.11 or newer and uv.

uv sync

Related MCP server: sleeper-caffeine MCP

Run

The server uses MCP's stdio transport by default:

uv run sleeper-mcp

The equivalent module command is:

uv run python -m sleeper_mcp.server

Docker

The image is based on alpine:latest and runs the MCP server over stdio. Keep -i so the client can talk to the process on stdin.

docker build -t sleeper-mcp .
docker run --rm -i sleeper-mcp

Cursor (Docker)

{
  "mcpServers": {
    "sleeper": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "sleeper-mcp"
      ]
    }
  }
}

Claude Desktop (Docker)

{
  "mcpServers": {
    "sleeper": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "sleeper-mcp"
      ]
    }
  }
}

Configure an MCP client

Use the workspace's absolute path in your client configuration (or the Docker commands above).

Cursor

Add this server to your Cursor MCP configuration:

{
  "mcpServers": {
    "sleeper": {
      "command": "uv",
      "args": [
        "--directory",
        "/Users/talweiss/Desktop/codeProjects/sleeper-mcp",
        "run",
        "sleeper-mcp"
      ]
    }
  }
}

Claude Desktop

Add the same entry under mcpServers in Claude Desktop's configuration:

{
  "mcpServers": {
    "sleeper": {
      "command": "uv",
      "args": [
        "--directory",
        "/Users/talweiss/Desktop/codeProjects/sleeper-mcp",
        "run",
        "sleeper-mcp"
      ]
    }
  }
}

Restart the client after changing its configuration.

Development

uv run pytest

The package follows a layered design:

  • client.py owns HTTP concerns and the Sleeper base URL.

  • service.py maps methods to documented API endpoints.

  • tools.py documents and exposes service methods as MCP tools.

  • server.py wires the layers together and starts FastMCP.

Available Tools

18 tools
get_draftA
Read-onlyIdempotent

Fetch settings and metadata for one Sleeper draft.

Returns draft type, status, rounds, timer, slots, draft order, the draft-slot-to-roster mapping, league ID, timing, and metadata. Obtain draft_id from get_league_drafts or get_user_drafts. Use before analyzing the board so pick positions can be assigned to users and rosters.

Inputs: draft_id (required).

get_draft_picksA
Read-onlyIdempotent

Return all completed picks from a Sleeper draft.

Each pick includes player_id, selecting user, roster, round, draft slot, overall pick number, keeper status, and a player metadata snapshot. Obtain draft_id from get_league_drafts or get_user_drafts. Use for draft recaps, team-by-team results, reaches, values, and board reconstruction.

Inputs: draft_id (required).

get_draft_traded_picksA
Read-onlyIdempotent

Return traded-pick ownership specifically for one Sleeper draft.

Results identify each pick's season, round, original roster, previous owner, and current owner roster IDs. Obtain draft_id from get_league_drafts. Use with get_draft and get_draft_picks to reconstruct a draft board whose slots changed hands before or during the draft.

Inputs: draft_id (required).

get_leagueA
Read-onlyIdempotent

Fetch configuration and metadata for one Sleeper league.

Returns status, season, scoring settings, roster positions, draft ID, league name, avatar, and roster count. Obtain league_id from get_user_leagues. Use this before interpreting scores, roster slots, league status, or chaining through previous seasons.

Inputs: league_id (required).

get_league_draftsA
Read-onlyIdempotent

List every draft associated with a Sleeper league.

Drafts are returned newest first and include draft_id, type, status, settings, season, timing, and draft-order metadata. A dynasty league may have multiple drafts. Obtain league_id from get_user_leagues and use this to choose the correct draft before requesting picks.

Inputs: league_id (required).

get_league_matchupsA
Read-onlyIdempotent

Return all team matchup entries for one league week.

Each entry includes roster_id, matchup_id, starters, all players, points, and commissioner-overridden points. Teams sharing matchup_id played one another. Obtain league_id from get_user_leagues and current week from get_sport_state. Use for weekly recaps, live score summaries, and lineup analysis.

Inputs: week (required), league_id (required).

get_league_rostersA
Read-onlyIdempotent

Return every roster and its season record in a Sleeper league.

Each roster includes roster_id, owner_id, players, starters, reserve players, wins, losses, points, waiver position, and related settings. Obtain league_id from get_user_leagues. Combine with get_league_users to map owners to teams and use for standings or roster analysis.

Inputs: league_id (required).

get_league_traded_picksA
Read-onlyIdempotent

Return all current and future draft picks traded in a league.

Each item includes season, round, original roster, previous owner, and current owner roster IDs. Obtain league_id from get_user_leagues. Use for dynasty asset inventories, future-pick ownership, trade evaluation, or reconstructing who owns each rookie draft selection.

Inputs: league_id (required).

get_league_usersA
Read-onlyIdempotent

Return all users participating in a Sleeper league.

Results include user_id, username, display name, avatar, commissioner status, and team metadata such as custom team names. Obtain league_id from get_user_leagues. Combine owner user IDs with get_league_rosters when producing standings, team labels, or manager summaries.

Inputs: league_id (required).

get_losers_bracketA
Read-onlyIdempotent

Fetch the league's consolation or losers playoff bracket.

Returns bracket rounds, roster participants, progression sources, winners, losers, and placement information. Obtain league_id from get_user_leagues. Use for consolation recaps, toilet-bowl analysis, draft-order implications, and remaining postseason matchups.

Inputs: league_id (required).

get_playersA
Read-onlyIdempotent

Fetch Sleeper's player-ID lookup map, optionally filtered.

The result maps player IDs found in rosters and draft picks to names, teams, positions, status, injuries, and external IDs. The unfiltered response is several megabytes and should generally be cached and called no more than once daily. Prefer position and active filters when a smaller lookup is enough.

Inputs: sport, active, position.

get_sport_stateA
Read-onlyIdempotent

Return Sleeper's current week and season state for a sport.

For NFL this includes season, season type, week, leg, display week, previous season, league season, and season start date. Use this before week- or season-scoped calls when the current values are unknown, such as matchups, transactions, user leagues, or drafts.

Inputs: sport.

get_transactionsA
Read-onlyIdempotent

Return a league's free-agent moves, waivers, and trades for a round.

Results identify added and dropped player IDs, involved roster IDs, status, timestamps, FAAB bids or transfers, and traded draft picks. Obtain league_id from get_user_leagues. Use for waiver reports, trade histories, FAAB analysis, and weekly transaction summaries.

Inputs: round (required), league_id (required).

get_userA
Read-onlyIdempotent

Resolve a Sleeper username or user ID to its public user profile.

Returns the user's user_id, username, display name, and avatar identifier. Use this first when only a username is known, then pass the returned user_id to get_user_leagues or get_user_drafts.

Inputs: username_or_user_id (required).

get_user_draftsA
Read-onlyIdempotent

List a user's Sleeper drafts for a sport and season.

Returns draft IDs, league IDs, draft type, status, settings, order, timing, and metadata. Resolve a username through get_user to obtain the required user_id; use get_sport_state if the active season is unknown. Use this to discover draft IDs for draft-board and pick analysis.

Inputs: user_id (required), sport, season.

get_user_leaguesA
Read-onlyIdempotent

List all Sleeper leagues belonging to a user for a sport and season.

Returns league metadata including league_id, draft_id, settings, scoring, roster positions, status, and previous-league linkage. Resolve a username with get_user first. Use this to discover league IDs before standings, matchup, roster, transaction, or playoff analysis.

Inputs: user_id (required), sport, season.

get_winners_bracketA
Read-onlyIdempotent

Fetch the league's championship playoff bracket.

Returns rounds and bracket matchups with roster IDs, winner/loser IDs, source-match progression, and placement data for supported playoff sizes. Obtain league_id from get_user_leagues. Use after or during playoffs to explain championship paths, seeds, results, and upcoming matchups.

Inputs: league_id (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.4/5.0

    Scored across 18 tools

    Disambiguation5/5

    Each tool targets a distinct resource or scope: user profiles, league members/rosters, matchups, winners vs losers brackets, league-level vs draft-level traded picks, and player lookup vs trending. The few names that share terms are clearly differentiated by their scope qualifiers and descriptions.

    Naming Consistency5/5

    All tools use a consistent get_ prefix and snake_case noun-based naming, and related resources share clear patterns like get_league_*, get_user_*, and get_draft_*. There are no mixed conventions or unpredictable verb choices.

    Tool Count4/5

    At 18 tools, this is above the typical 3–15 sweet spot, but the server is scoped to the broad Sleeper fantasy sports API and every tool maps to a meaningful endpoint. The count is on the higher end but still reasonable given the domain.

    Completeness5/5

    The surface covers the full read-only Sleeper workflow: user resolution, league discovery, rosters, users, matchups, playoff brackets, transactions, traded picks, sports state, drafts, draft picks, player lookup, and trending players. There are no obvious dead ends because the descriptions include explicit chaining between related tools.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      Provides read-only access to the Sleeper Fantasy Sports API for league info, rosters, matchups, drafts, transactions, and player data.
      18
      124 npm
      1
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Provides read-only access to Sleeper fantasy football leagues, enabling team snapshots, available players, matchups, trade context, and league history through standardized MCP tools.
      MIT
    • F
      license
      Not graded
      quality
      C
      maintenance
      Read-only MCP server that provides access to public Sleeper NFL fantasy data, including leagues, rosters, matchups, waivers, drafts, and player information. It enables AI clients to retrieve fantasy football details without requiring authentication or account modifications.
      -
    • A
      license
      Not graded
      quality
      C
      maintenance
      Provides read-only access to Sleeper fantasy football data including user info, leagues, rosters, matchups, and NFL state through MCP tools.
      124 npm
      MIT