Skip to main content
Glama
alexbrogan10

nfl-stats-mcp

by alexbrogan10

🏈 nfl-stats-mcp

CI

An MCP server that lets Claude (or any MCP client) answer real NFL questions with real data: 25+ years of play-by-play and player stats from nflverse, updated weekly during the season.

You: Which QBs have been best on 3rd-and-long across the 2024 and 2025 seasons?

Claude: calls situational_stats(downs=[3], min_yards_to_go=7, play_kind="pass", group_by="passer", seasons=[2024, 2025], min_plays=100)

Brock Purdy leads with +0.31 EPA per dropback on 3rd-and-7+ (102 plays, 45% success rate, 0 INTs), followed by Jared Goff (+0.18) and Drake Maye (+0.15)…

Why this exists

LLMs are great at football talk but unreliable with football numbers. They hallucinate stats, mix up seasons and can't compute anything situational. This server gives the model a small set of well-described, read-only tools over a trustworthy dataset, so it can look things up instead of guessing.

Related MCP server: NFL Data MCP Server

Tools

Tool

What it answers

situational_stats

EPA/play, success rate and yards/play for any game situation: down & distance, red zone, quarter, score, two-minute drill, shotgun… Grouped by passer, rusher, receiver, offense or defense.

leaderboard

Top-N players for any counting stat (rushing_yards, def_sacks, fantasy_points_ppr…) or rate stat (yards_per_carry, passing_epa_per_dropback…), with NFL-style minimum qualifiers.

player_stats

One player's season totals or game log, with empty categories removed.

team_schedule

A team's schedule, results, record, point spreads and venues.

find_player

Disambiguates names ("Josh Allen" the QB vs. the edge rusher).

list_stats

Every stat name the other tools accept.

Example questions

  • "Who leads the league in receiving yards per game among tight ends this year?"

  • "How good is the Lions' offense in the red zone vs. last season?"

  • "Show me Saquon Barkley's game log for 2024."

  • "Which defenses are best at stopping the run on early downs when leading?"

  • "What's the Chiefs' record against the spread this season?"

Quick start

Requires Python 3.10+.

git clone https://github.com/alexbrogan10/nfl-stats-mcp.git
cd nfl-stats-mcp
python -m venv .venv
.venv/Scripts/activate        # Windows; use `source .venv/bin/activate` on macOS/Linux
pip install -e ".[dev]"

Use it in Claude Code

claude mcp add nfl-stats -- /absolute/path/to/nfl-stats-mcp/.venv/Scripts/nfl-stats-mcp

Use it in Claude Desktop

Add this to claude_desktop_config.json (Settings → Developer → Edit Config):

{
  "mcpServers": {
    "nfl-stats": {
      "command": "C:/path/to/nfl-stats-mcp/.venv/Scripts/nfl-stats-mcp.exe"
    }
  }
}

On macOS/Linux the command is /path/to/nfl-stats-mcp/.venv/bin/nfl-stats-mcp.

Try it without Claude

mcp dev src/nfl_stats_mcp/server.py

This opens the MCP Inspector, where you can call each tool by hand.

Design notes

  • Pure query layer. queries.py is plain Polars with no I/O, so every stat calculation is unit-tested against small hand-built frames. server.py only handles validation, threading and MCP plumbing.

  • Tool descriptions are the prompt. Parameter docs explain football semantics (max_yards_to_endzone: 20 = red zone, max_half_seconds_remaining: 120 = two-minute drill), so the model maps natural language to filters correctly.

  • Errors the model can recover from. Ambiguous names return candidate players with IDs, unknown stats point to list_stats, and bad team abbreviations list the valid ones. They come back as tool errors, not crashes, so Claude can retry on its own.

  • Honest rate stats. Leaderboards for rates use the NFL's per-team-game minimums (14 attempts, 6.25 carries…), so a backup's 3-for-3 day never tops "completion %".

  • Lazy, cached loading. Each season downloads on first use and stays in memory, and only the ~30 play-by-play columns the tools need are kept (out of ~370).

  • Works behind TLS-inspecting proxies. It uses the OS certificate store via truststore, so downloads work on machines with antivirus HTTPS scanning or corporate proxies.

Development

pytest              # fast offline tests (fixtures, plus an in-process MCP client)
pytest -m live      # smoke tests against real nflverse data (needs network)

Roadmap

  • Eval suite: natural-language questions with known answers, scored against Claude's tool use

  • Next Gen Stats & snap counts tools

  • Team-level aggregates (team_stats) and against-the-spread records

  • Publish to PyPI so it runs with uvx nfl-stats-mcp

Data & credits

All data comes from the nflverse project via nflreadpy. Please follow their licensing and credit them if you build on this. This project is not affiliated with the NFL.

License

MIT

Available Tools

6 tools
find_playerA
Read-only

Search for players by name. Returns ids, positions and teams to disambiguate.

NameRequiredDescriptionDefault
nameYesFull or partial player name, e.g. 'Mahomes'.
seasonsNoSeasons to include, e.g. [2024, 2025]. 1999 or later. Defaults to the current season.

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds that the call returns multiple candidate players (ids, positions, teams) for disambiguation, which usefully signals a possibly multi-result, ambiguity-resolving response. It says nothing about matching behavior (partial vs exact) beyond the schema's own note.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, zero filler, with the resource and the name-based scope front-loaded ahead of the return-value note.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description needn't detail return shape, and annotations cover safety. What remains thin is workflow context — that this is the lookup to run before player_stats or situational_stats, and how to handle multiple returned candidates — but nothing essential for calling it is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with both the name (including a 'Mahomes' example) and seasons parameters fully documented in the schema. The description's 'by name' restates rather than extends this, and it contributes nothing on the seasons parameter, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Search) and resource (players) with the key qualifier 'by name', which separates it cleanly from the stats-oriented siblings. It stops short of naming a sibling it displaces, so an agent must infer the handoff to player_stats on its own.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not clause appears; the usage is only implied by 'to disambiguate', which hints this is a resolution step before a stats call. The agent can reasonably infer the workflow, but nothing states it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

leaderboardA
Read-only

Rank players by a stat over one or more seasons (totals are summed across seasons).

NameRequiredDescriptionDefault
statYesA counting stat (e.g. 'passing_yards', 'receiving_tds') or rate stat (e.g. 'yards_per_carry'). See list_stats.
limitNo
seasonsNoSeasons to include, e.g. [2024, 2025]. 1999 or later. Defaults to the current season.
per_gameNoDivide counting stats by games played.
positionNoFilter by position or group, e.g. QB, RB, WR, TE, K.
ascendingNoTrue to list the lowest values first.
min_gamesNo
min_volumeNoOverride the qualifier for rate stats (e.g. minimum attempts). Defaults to the NFL's per-team-game minimums.
season_typeNoREG = regular season, POST = playoffs, ALL = both.REG

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds useful behavioral context by saying totals are summed across seasons, but it omits other relevant behavior such as qualifier handling for rate stats and per-game interactions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single well-formed sentence with no filler. The core action and aggregation rule are front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema and 78% schema description coverage, the definition does not need to explain return values or most parameters. The description supplies the key aggregation rule, though it leaves the sibling-routing context to other tools or schema hints.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is high at 78%, so parameter semantics are mostly handled by the schema. The description only adds meaning around multi-season aggregation, without explaining other parameters such as limit, ascending, or min_volume beyond what the schema already says.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource: ranking players by a stat across seasons. It does not name or distinguish itself from sibling tools such as player_stats or situational_stats, so sibling differentiation is missing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for leaderboard rankings, but gives no explicit when-to-use or when-not-to-use guidance versus alternatives. The schema mentions list_stats for stat names, but the description itself does not route the agent among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_statsA
Read-only

List the stat names accepted by leaderboard and returned by player_stats.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds only the relational fact that these stat names are shared with `leaderboard` and `player_stats`; it does not add behavioral details like rate limits, auth requirements, or whether the list is static. That modest added context fits a 3 given the annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence with no wasted words. It delivers the core purpose and the sibling relationship immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read-only list tool with an output schema, the description supplies the needed context: what the list contains and how it relates to `leaderboard` and `player_stats`. The only missing piece is explicit usage guidance, which keeps it from being fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so the baseline is 4. Schema description coverage is 100% and there are no parameters to document, so the description need not add anything further.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'List' and resource 'stat names', and it explicitly ties the list to two sibling tools (`leaderboard`, `player_stats`), so an agent can distinguish it from find_player, situational_stats, etc. It leaves no ambiguity about what the tool returns.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It names the related sibling tools and implies the list is the vocabulary for those endpoints, which gives clear context. However, it does not explicitly say 'use this before calling leaderboard' or when not to use it, nor does it state alternatives beyond the relational mention.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

player_statsB
Read-only

Box-score stats for one player (passing, rushing, receiving, defense, kicking, fantasy).

Includes rate stats such as completion_pct and yards_per_carry. Empty stat categories are omitted.

NameRequiredDescriptionDefault
byNoSeason totals, or a game-by-game log.season
playerYesPlayer name or nflverse player_id.
seasonsNoSeasons to include, e.g. [2024, 2025]. 1999 or later. Defaults to the current season.
season_typeNoREG = regular season, POST = playoffs, ALL = both.REG

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, so safety is covered. The description adds one genuinely useful trait beyond that: empty stat categories are omitted from results, and rate stats like completion_pct are included — both shape how an agent should interpret output. It says nothing about volume, ordering, or what happens when a player has no data at all.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the purpose before the two supporting notes about rate stats and omitted categories. No filler or repetition of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values needn't be explained, and all four parameters are fully documented in the schema. The remaining gap is positioning among the five sibling stat tools, which the description never addresses for a tool whose name alone is ambiguous.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter (by, player, seasons, season_type) is already documented in the schema, including enum meanings and the '1999 or later' constraint. The description adds no parameter-level detail beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource (box-score stats for one player) and enumerates the stat families returned (passing, rushing, receiving, defense, kicking, fantasy), which is concrete and specific. It stops short of distinguishing itself from siblings like situational_stats or leaderboard, so an agent must infer the boundary from names alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to pick this over situational_stats, list_stats, or leaderboard, and no mention of prerequisites or typical call patterns. The agent is left to infer usage purely from the tool name and the stat-family list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

situational_statsA
Read-only

Play-by-play efficiency (EPA/play, success rate, yards/play) for any game situation.

Examples: QBs on 3rd-and-long, red-zone rushing by team, defenses in the two-minute drill, one player's EPA when trailing in the 4th quarter.

NameRequiredDescriptionDefault
downsNoe.g. [3] or [3, 4].
limitNo
weeksNo
playerNoOnly plays involving this player (name or player_id).
defenseNoTeam on defense.
offenseNoTeam with the ball.
seasonsNoSeasons to include, e.g. [2024, 2025]. 1999 or later. Defaults to the current season.
shotgunNo
sort_byNoMetric to rank by.epa_per_play
group_byNoRank passers/rushers/receivers/offenses/defenses, or 'none' for one aggregate row.none
quartersNo1-4, 5 = overtime.
ascendingNo
min_playsNoMinimum plays per group to be ranked.
play_kindNopass (incl. sacks), rush (incl. scrambles), or all.all
season_typeNoREG = regular season, POST = playoffs, ALL = both.REG
max_score_diffNo
min_score_diffNoOffense score minus defense score, e.g. -8 for 'down one score or less'.
max_yards_to_goNo
min_yards_to_goNo
max_yards_to_endzoneNo20 = red zone, 10 = inside the 10, 5 = goal line.
max_half_seconds_remainingNo120 = two-minute drill.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the metric vocabulary but says nothing about defaults that materially change results (current season, min_plays=20 qualifying threshold, limit=15, REG-only), nor about ranking behavior when group_by is used. It also cannot lean on the output schema for these filtering defaults.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence defines the tool, followed by a tight example block that earns its space by demonstrating situational filtering. Slightly inefficient in that the examples restate situations already implied by parameter names, but there is no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. However, for a 21-parameter tool with several undocumented filters and non-obvious defaults (min_plays gating, season defaulting, group_by ranking vs. single aggregate row), the description leaves meaningful gaps an agent must discover by trial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

At 67% schema coverage, the schema carries most of the load and the baseline of 3 applies. The description's only parameter-adjacent contribution is naming which metrics appear in output (EPA/play, success rate, yards/play), which loosely matches sort_by values; it adds nothing for the undocumented params such as shotgun, weeks, max_score_diff, min_yards_to_go, ascending, and limit.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb-and-resource framing: per-play efficiency metrics (EPA/play, success rate, yards/play) sliced by game situation. An agent can tell this is an aggregation/ranking tool rather than a lookup, but it never names or contrasts the siblings (player_stats, list_stats, leaderboard), so differentiation is inferred rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The four examples ('QBs on 3rd-and-long', 'red-zone rushing by team', 'defenses in the two-minute drill', 'one player's EPA when trailing in the 4th quarter') map directly onto parameters like downs, max_yards_to_endzone, max_half_seconds_remaining, and min_score_diff, giving concrete usage context. What is missing is any negative guidance or explicit routing versus player_stats/leaderboard for similar efficiency questions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

team_scheduleB
Read-only

A team's schedule with results, scores, record, point spread and venue.

NameRequiredDescriptionDefault
teamYesTeam abbreviation, e.g. KC, PHI, LA.
seasonNoDefaults to the current season.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety and external-data profile is covered. The description adds the useful detail that results, scores, record, point spread and venue are included, but says nothing about season scoping nuances, ordering, or completeness, and an output schema already covers return shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single compact sentence with no padding, and the core resource is front-loaded. It is a noun-phrase fragment rather than a complete sentence, which slightly reduces clarity but keeps it tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and full schema coverage, the description needn't explain return values or parameters. However, given a competitive sibling set of stats tools, it is thin on how this tool is chosen over the alternatives, leaving a guidance gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: the team abbreviation format and the season default-to-current behavior are documented in the schema itself. The description adds no parameter-level meaning beyond that, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies a specific resource (a team's schedule) and enumerates what it contains: results, scores, record, point spread and venue. It lacks an explicit verb ('retrieve/get'), but the resource is precise enough to distinguish it from data-centric siblings like player_stats and leaderboard.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool, no prerequisites, and no mention of alternatives among siblings such as situational_stats or player_stats. The agent must infer usage entirely from the resource name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

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

  1. 6 tool updatesv0.1.0
    • First observedfind_player
    • First observedleaderboard
    • First observedlist_stats
    • First observedplayer_stats
    • First observedsituational_stats
    • First observedteam_schedule

TDQS

A3.6/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: player lookup, player box-score stats, stat leaderboards, situational efficiency, team schedules, and stat-name discovery. The boundaries between player_stats, leaderboard, and situational_stats are especially clear despite all being stats-related.

Naming Consistency3/5

All names use snake_case and are readable, but the conventions are mixed: find_player and list_stats use verb_noun, while player_stats, team_schedule, and situational_stats use noun phrases, and leaderboard is a bare noun. A more consistent action/resource naming pattern would improve predictability.

Tool Count5/5

Six tools is well-scoped for an NFL stats server and each tool covers a distinct workflow. There is no obvious filler or unnecessary tool.

Completeness3/5

The set covers player lookup, player stats, leaderboards, situational stats, and schedules, but notable gaps remain around team-level aggregate stats, standings, and game-level box scores. Agents asking common NFL questions like team rankings or standings would hit dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that provides access to over 12 years of NFL play-by-play data through a local DuckDB database. It enables users to query player performance, team statistics, and situational efficiency metrics like EPA and WPA using natural language.
    34 PyPI
    9
    MIT
  • F
    license
    B
    quality
    D
    maintenance
    Provides NFL player statistics from 2015-2024, enabling player lookups, comparisons, and position leaderboards via natural language.
    4
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables Claude to interact with Sleeper fantasy football leagues via MCP tools for roster, waiver, matchup, and transaction queries, plus a dashboard for daily reports, live scoring, and game-day alerts.
    70 npm
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Provides verified NFL stats (2016–2025) and Sleeper league context through an MCP server, with tools for querying metrics, comparing entities, verifying claims, and accessing league data.
    MIT