stat-api — Sports Data

com.stat-apiPublished by stat-api.comOfficial publisherv1.0.1Updated Oct 24, 2026

NFL/NBA/MLB/NHL/PGA + DFS and prediction-market data. Browse free; query with a free API key.

VerifiedStreamable HTTPWeb executableFinanceData & Analytics

Overview

AI-generated overview

Remote MCP server for stat-api sports data: browse NFL, NBA, MLB, NHL, PGA, DFS and prediction-market tables and query them with a free API key.

What you can do
  • Browse the catalog: list leagues and data groups, list a league's tables, and read a table's fields, filters and limits
  • Query tables with field filters and keyset pagination, or run relational GraphQL queries across games, teams, players and odds
  • Look up single records by primary key and search player names with typo tolerance
  • Find games on a calendar date and prediction-market contracts linked to a game
  • Check the account's plan, quota used and reset date
When to use it
Useful when an assistant needs structured sports statistics, schedules, box scores, DFS salaries or prediction-market prices for NFL, NBA, MLB, NHL or PGA, and you want it to discover the schema itself before querying.
Requirements
A remote streamable HTTP endpoint; no local runtime or package. Catalog tools work anonymously; data tools need a free stat-api API key sent as an Authorization Bearer header. Network access to the endpoint is required.
Before you install
The API key is passed as an Authorization header and should be kept secret. Data calls consume account quota (get_record, search_players and api_usage each cost records), so heavy querying can exhaust the free tier; check api_usage and pricing before relying on it.

Installation

In SourceWeft

  1. Open stat-api — Sports Data in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/com.stat-api%2Fsports-data/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "stat-api-sports-data": {
      "type": "http",
      "url": "https://api.stat-api.com/mcp"
    }
  }
}

README

STAT API — Sports Data MCP Server

Remote MCP server (streamable HTTP) for stat-api.com: NFL, NBA, MLB, NHL, and PGA data — players, games, box scores, play-by-play — plus DFS salaries/slates and prediction-market prices from Kalshi and Polymarket.

Endpoint: https://api.stat-api.com/mcp

Listed in the official MCP Registry as com.stat-api/sports-data.

Setup

Works anonymously out of the box; add a free API key to unlock the data tools.

Claude Code

bash
claude mcp add --transport http stat-api https://api.stat-api.com/mcp \  --header "Authorization: Bearer <YOUR_API_KEY>"

JSON config (Claude Desktop, Cursor, and most other clients)

json
{  "mcpServers": {    "stat-api": {      "type": "streamable-http",      "url": "https://api.stat-api.com/mcp",      "headers": { "Authorization": "Bearer <YOUR_API_KEY>" }    }  }}

Omit the headers block to connect without credentials — the catalog tools still work, and the server tells you where to get a key when you call a data tool.

Tools

No credentials needed (browse the catalog):

ToolWhat it does
list_leaguesAll leagues/data groups (nfl, nba, mlb, nhl, pga, dfs, kalshi, polymarket, reference) with table counts
list_tablesEvery queryable table in one league, one-line summary each
describe_tableFull contract for a table: fields, types, accepted filters and operators, page limits, a runnable example

Free API key required (get one at stat-api.com):

ToolWhat it does
query_tableQuery any table with filters (field__gte, __between, __like, …) and keyset pagination
get_recordFetch a single row by primary key
search_playersTypo-tolerant player-name search
games_on_dateGames on one calendar date (US-Eastern)
game_marketsKalshi/Polymarket contracts linked to a specific game
graphql_queryRelational queries — game → teams → players → odds in one call
api_usageYour key's plan, quota used/remaining, and reset date

Data coverage

  • NFL / NBA / MLB / NHL / PGA — teams, players, games, box scores, play-by-play, odds, injuries, news
  • DFS — DraftKings/FanDuel slates, salaries, contest results
  • Prediction markets — Kalshi and Polymarket events, markets, prices, and trades, linked to the underlying games

~200 tables total. list_leagues → list_tables → describe_table walks the whole catalog.

Other access methods

Links

Source: README.md at commit 494d3c6

Tools

9

list_leagues

List leagues

List every league/data group this API serves (nfl, nba, mlb, nhl, pga, dfs, reference) with table counts and availability. No credentials needed. Start here, then call list_tables.

Takes no parameters.

list_tables

List tables

List every queryable table in one league with a one-line summary each. No credentials needed. Follow with describe_table before querying.

Parametersleaguerequired

describe_table

Describe table

Full contract for one table: fields with types and descriptions, the filters query_table accepts (with operators like __gte/__lte/__between/__like and required filter combinations), page-size limits, primary key, and a runnable example URL. No credentials needed. Always call this before query_table — filters not listed here are rejected.

Parameterstablerequiredleaguerequired

query_table

Query table

Query any table. Returns `{"<table>": [rows], "limit": N, "next_from_id": M|null, "has_more": bool}`. To read every row, start with from_id=0 and re-call with from_id set to the previous next_from_id until it is null. A call without from_id returns the first page in the table's default sort with next_from_id null. filters is a flat object of `field` or `field__op` keys from describe_table (e.g. {"season_id": 2024, "day__between": "20250101,20250131"}). Requires a stat-api account: sign in when the app asks (free account at https://stat-api.com), or send an API key as Authorization: Bearer <key>. Every returned row counts against the monthly record quota.

Parameterslimittablerequiredleaguerequiredfiltersfrom_id

get_record

Get record

Fetch a single row by primary key. Returns the row object. Requires a stat-api sign-in or API key; costs 1 record of quota.

Parametersidrequiredtablerequiredleaguerequired

search_players

Search NBA players

Fuzzy player-name search (typo-tolerant). Currently NBA only — for other leagues query the players table with a name filter via query_table. Returns player rows ordered by match quality. Requires a stat-api sign-in or API key; rows count against quota.

Parametersnamerequiredlimitleague

games_on_date

Games on date

Games scheduled/played on one calendar date (US-Eastern) for nba, mlb, or nhl; defaults to today. Returns the same envelope as query_table on the games table. NFL is week-based, not date-based — for nfl, use query_table on nfl/games with season_id + week filters instead. Requires a stat-api sign-in or API key; rows count against quota.

Parametersdateleaguerequired

graphql_query

GraphQL query

Run a GraphQL query against the same data with relations — nest from a game to its teams/players/odds in one call. Root fields are leagues (nfl, nba, …), each exposing its tables with the same filter arguments as REST plus `first`/`after` pagination. Do NOT send introspection queries (the schema is huge) — use describe_table instead; the SDL is at https://api.stat-api.com/api/v1/graphql/sdl. Requires a stat-api sign-in or API key; every row resolved anywhere in the tree counts against quota.

Parametersqueryrequiredvariables

api_usage

API usage

Your account's quota position: plan, monthly record limit, records used, remaining, and when the quota resets. Requires a stat-api sign-in or API key; costs 1 record.

Takes no parameters.

Version history

1
  1. v1.0.1LatestSep 16, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.