Sports Hub

by lacausecrypto

130 downloads
Not rated
GitHub

About

41 sports API providers, 396 tools: scores, stats, odds, esports, chess, motorsport & more.

Details

Author
lacausecrypto
Downloads
130
Categories
Database, Other, API

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Sports Hub
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

{
  "mcpServers": {
    "sports-hub": {
      "command": "npx",
      "args": [
        "mcp-sports-hub"
      ],
      "env": {
        "SPORTS_HUB_PROVIDERS": "free"
      }
    }
  }
}

espn_get_scoreboard

Get live or date-specific scores for a sport/league. Returns current scoreboard with game status, scores, and basic game info.

espn_get_standings

Get league standings. Returns conference/division standings with team records, win/loss, and ranking info.

espn_get_teams

List all teams in a league. Returns team names, IDs, abbreviations, logos, and locations.

espn_get_team_details

Get detailed information about a specific team, including record, stats, venue, and next event.

espn_get_team_roster

Get the full roster for a specific team, including player names, positions, jersey numbers, and basic stats.

espn_get_team_schedule

Get a team's schedule for a season, including past results and upcoming games.

espn_get_event_summary

Get a detailed summary of a specific event/game, including play-by-play, box score, leaders, and game info.

espn_get_athlete

Get information about a specific athlete, including bio, stats, and career history.

espn_get_news

Get the latest news articles for a sport/league, including headlines, descriptions, and links.

espn_get_seasons

Get available seasons for a sport/league, including season types (preseason, regular, postseason) and date ranges.

nhl_get_schedule

Get the NHL schedule for a given date. Returns all games, start times, teams, and venues.

nhl_get_scores

Get live and final scores for today's NHL games.

nhl_get_standings

Get NHL standings. Optionally filter by date or season.

nhl_get_game_boxscore

Get the box score for a specific NHL game. Includes goals, assists, shots, saves, and other stats.

nhl_get_game_play_by_play

Get the full play-by-play feed for an NHL game. Contains every event (shots, goals, penalties, faceoffs, etc.).

nhl_get_game_landing

Get the game landing page data for an NHL game. Includes summary, three stars, scoring plays, and more.

nhl_get_team_roster

Get the roster for an NHL team. Returns forwards, defensemen, and goalies with jersey numbers and positions.

nhl_get_team_schedule

Get the monthly schedule for an NHL team.

nhl_get_team_stats

Get current-season stats for an NHL team (goals, shots, power play, penalty kill, etc.).

nhl_get_player

Get detailed information about an NHL player -- bio, career stats, current season stats, awards.

nhl_get_player_game_log

Get the game-by-game stats log for an NHL player in a given season.

nhl_get_stat_leaders

Get the NHL stat leaders for a given category (points, goals, assists, wins, etc.).

nhl_get_draft

Get the current NHL draft rankings and prospect information.

mlb_get_schedule

Get the MLB game schedule for a date or date range. Returns games with scores, status, and teams.

mlb_get_game

Get detailed game data from the live feed including plays, box score, and line score.

mlb_get_game_play_by_play

Get play-by-play data for a specific game including all at-bats and pitches.

mlb_get_game_boxscore

Get the box score for a game with full batting and pitching stats for both teams.

mlb_get_game_linescore

Get the line score (inning-by-inning scoring summary) for a game.

mlb_get_standings

Get league standings with win/loss records, division ranks, and streaks.

mlb_get_teams

List MLB teams with their IDs, names, venues, divisions, and leagues.

mlb_get_team_roster

Get a team's roster with player names, positions, jersey numbers, and status.

mlb_get_player

Get detailed player information including bio, position, and optionally hydrated stats.

mlb_get_player_stats

Get detailed statistics for a player by stat type and group.

mlb_search_players

Search for players by name. Returns matching players with their IDs, teams, and positions.

mlb_get_divisions

List all MLB divisions with their IDs, names, and associated leagues.

mlb_get_league_leaders

Get league stat leaders for categories like home runs, batting average, ERA, strikeouts, etc.

f1_get_race_results

Get Formula 1 race results. Returns finishing positions, drivers, constructors, times, and status for a season or specific round.

f1_get_qualifying

Get Formula 1 qualifying results. Returns Q1/Q2/Q3 times for drivers in a specific qualifying session.

f1_get_sprint

Get Formula 1 sprint race results for a specific round.

f1_get_driver_standings

Get Formula 1 World Drivers' Championship standings for a given season.

f1_get_constructor_standings

Get Formula 1 World Constructors' Championship standings for a given season.

f1_get_schedule

Get the Formula 1 race schedule/calendar for a given season, including circuit info and race dates.

f1_get_drivers

List Formula 1 drivers for a given season or all-time. Returns driver IDs, names, nationalities, and other info.

f1_get_constructors

List Formula 1 constructors/teams for a given season or all-time.

f1_get_circuits

List Formula 1 circuits for a given season or all-time. Returns circuit names, locations, and coordinates.

f1_get_lap_times

Get lap times for a specific race. Can return all laps or a specific lap number. Data available from 1996 onwards.

f1_get_pit_stops

Get pit stop data for a specific race. Can return all pit stops or a specific stop number. Data available from 2012 onwards.

f1_get_seasons

List all Formula 1 seasons from 1950 to present, including Wikipedia links.

f1_get_driver_results

Get all race results for a specific driver in a given season. Use driver IDs like 'hamilton', 'max_verstappen', 'leclerc'.

openf1_get_sessions

List Formula 1 sessions. A session is a single on-track period such as a practice, qualifying, sprint, or race.

openf1_get_drivers

Get driver information for a session or across sessions. Returns driver names, numbers, team names, and more.

openf1_get_laps

Get lap timing data including sector times, lap duration, and more for a session.

openf1_get_positions

Get position/ranking data during a session. Shows how positions change over time.

openf1_get_car_data

Get detailed car telemetry: speed, RPM, gear, throttle, brake, DRS. WARNING: This endpoint returns massive amounts of data (multiple samples per second per car). Always use date_gte and date_lte filters to limit the time window, ideally to a few seconds or a single lap.

openf1_get_intervals

Get interval data showing the gap between drivers and the leader during a session.

openf1_get_stints

Get stint data including tire compound, stint number, lap counts, and tire age for each driver.

openf1_get_pit

Get pit stop data including pit lane time and duration for each stop.

openf1_get_race_control

Get race control messages: flags, safety cars, penalties, track status changes, and other official messages.

openf1_get_weather

Get weather data for a session: air/track temperature, humidity, pressure, wind speed/direction, rainfall.

openf1_get_team_radio

Get team radio message metadata for a session. Returns URLs to audio recordings of driver-engineer communications.

openf1_get_meetings

Get meeting (race weekend/event) information. A meeting groups multiple sessions at one circuit.

openliga_get_matches_by_league_season

Get all matches for a league and season. Known league shortcuts: bl1 (1. Bundesliga), bl2 (2. Bundesliga), bl3 (3. Liga), dfb (DFB-Pokal), ucl (Champions League).

openliga_get_matches_by_matchday

Get matches for a specific matchday in a league and season.

openliga_get_current_matchday

Get the matches for the current matchday of a league.

openliga_get_match_data

Get detailed data for a specific match by its ID, including goals, results, and location.

openliga_get_table

Get the league table / standings for a league and season.

openliga_get_top_scorers

Get the top goal scorers for a league and season.

openliga_get_teams

Get the list of teams participating in a league for a given season.

openliga_get_available_leagues

List all available leagues and seasons in OpenLigaDB.

openliga_get_next_match_by_team

Get the next upcoming match for a team. Use get_teams to find team IDs.

openliga_get_last_match_by_team

Get the last completed match for a team. Use get_teams to find team IDs.

sportsdb_search_teams

Search teams by name. Returns matching teams with basic info, badges, and stadium details.

sportsdb_search_players

Search players by name, or list all players on a team. Provide either player_name or team_name (or both).

sportsdb_get_team_details

Get full details for a team by its TheSportsDB ID. Includes description, stadium, badges, social links, and more.

sportsdb_get_player_details

Get full details for a player by their TheSportsDB ID. Includes biography, position, stats, and images.

sportsdb_get_league_list

List all leagues, optionally filtered by country and/or sport.

sportsdb_get_events_by_date

Get sporting events on a specific date. Optionally filter by sport or league name.

sportsdb_get_event_details

Get full details for a specific event by its TheSportsDB ID. Includes scores, venue, thumbnails, and video highlights.

sportsdb_get_last_events

Get the last 15 completed events for a team. Includes scores and results.

sportsdb_get_next_events

Get the next 15 upcoming events for a team.

sportsdb_get_standings

Get league table / standings for a given league and season.

sportsdb_get_event_results

Get past event results for a specific round of a league season.

sportsdb_get_seasons

List all available seasons for a league.

sportsdb_get_sports_list

List all available sports on TheSportsDB.

ncaa_get_scoreboard

Get the NCAA scoreboard for a sport and division. Returns games with scores, status, and basic info.

ncaa_get_game

Get detailed information about a specific NCAA game, including play-by-play, box score, and stats.

ncaa_get_rankings

Get NCAA rankings/polls (AP, Coaches, CFP, etc.) for a sport.

ncaa_get_standings

Get NCAA standings for a sport and division, optionally for a specific year.

ncaa_get_teams

Get NCAA teams in a division, optionally filtered by conference.

ncaa_get_schedule

Get a team's NCAA schedule for a season.

ncaa_get_stats

Get player or team statistics for an NCAA sport/division.

ncaa_get_news

Get the latest NCAA news, optionally filtered by sport.

sportsrc_get_sports

List sport categories supported by SportSRC. Returns ids you can pass to other tools.

sportsrc_get_matches

List matches for a sport. Returns live, upcoming, and recently finished matches with team info.

sportsrc_get_match

Get detailed match information including streams, venue, and lineups.

sportsrc_get_leagues

List football leagues/competitions supported by SportSRC. Returns league ids you can pass to scores and tables tools.

sportsrc_get_league_scores

Get scores / recent results for a specific football league.

sportsrc_get_table

Get the standings table for a specific football league.

sportsrc_get_live

Convenience: get the matches feed for a sport. Filter the returned `data` array client-side by `status` for live games.

lichess_get_user

Get a Lichess user's public profile, including per-variant ratings, played games, and account flags.

lichess_get_users_status

Get realtime online + streaming status for up to 100 Lichess users in a single call.

lichess_get_top_players

Get the top N players for a Lichess performance variant (bullet, blitz, rapid, classical, etc.).

lichess_get_team

Get information about a Lichess team: description, member count, leader, open/closed status.

lichess_get_tournaments

Get current Lichess Arena tournaments (created, started, and recently finished).

lichess_get_broadcasts

List official Lichess broadcast tournaments (live coverage of OTB events). Returns up to ~20 most recent.

lichess_get_daily_puzzle

Get the Lichess puzzle of the day, including the source game and the solution moves.

chesscom_get_player

Get a Chess.com player's public profile (name, country, joined date, last online, title, etc.).

chesscom_get_player_stats

Get a Chess.com player's stats by time control (daily, rapid, blitz, bullet) and chess960, with current ratings, best, and W/L/D records.

chesscom_get_player_clubs

Get the list of Chess.com clubs a player belongs to (with last-activity timestamps).

chesscom_get_player_archives

List the YYYY/MM archive URLs containing a player's monthly game history.

chesscom_get_club

Get Chess.com club details by URL id (the slug after /club/ in the web URL).

chesscom_get_country_players

Get the list of titled Chess.com players from a country (returns usernames and titles).

chesscom_get_leaderboards

Get Chess.com global leaderboards across all categories (daily, daily960, live_rapid, live_blitz, live_bullet, tactics, rush, battle).

squiggle_get_teams

List all AFL teams in the Squiggle database (current and historic), with id, abbreviation, debut/retirement years, and logo path.

squiggle_get_games

Get AFL games with optional filters. Returns home/away teams, scores, completion status, venue, and time.

squiggle_get_ladder

Get the projected AFL ladder for a given year and round, by prediction model. Each model gives its own projected wins / mean rank.

squiggle_get_standings

Get the actual AFL ladder/standings (wins, losses, draws, points, percentage) for a year and round.

squiggle_get_tips

Get game-level tips/predictions from one or all Squiggle prediction models. Each tip includes margin, confidence, and post-hoc correctness when known.

squiggle_get_sources

List the prediction model sources contributing to Squiggle (Squiggle, MoS, FiveThirtyEight, etc.). Use the returned ids with tips and ladder tools.

motogp_get_seasons

List MotoGP seasons with their UUIDs and year. The `id` (seasonUuid) feeds the categories/events/standings tools. `current:true` marks the live season.

motogp_get_categories

List the racing categories (MotoGP, Moto2, Moto3, MotoE) for a season, with their UUIDs. Use a seasonUuid from motogp_get_seasons; the returned categoryUuid feeds sessions and standings.

motogp_get_events

List the events (Grands Prix) in a season with circuit, country and dates. Each event's UUID feeds motogp_get_sessions.

motogp_get_sessions

List the sessions (practice, qualifying, race, etc.) for an event and category. Pass eventUuid from motogp_get_events and categoryUuid from motogp_get_categories. Each session id feeds motogp_get_session_classification.

motogp_get_session_classification

Get the full classification (results) of a session: rider, team, constructor, time/gap and points. Use a session id from motogp_get_sessions.

motogp_get_standings

Get the championship standings for a season and category (riders' or constructors' points table). Pass seasonUuid and categoryUuid.

motogp_get_riders

List MotoGP riders with their profile data (name, number, country, team). Optionally filter by category UUID.

formulae_get_championships

List Formula E championships (one per season, from 2014-15 to the current season) with their ids and status. The `id` (championshipId) feeds the standings tools.

formulae_get_races

List Formula E races / E-Prix with id, name, country, city, date and result-availability flags. Paginated — use `page` to advance. Each race id feeds formulae_get_race / formulae_get_race_results.

formulae_get_race

Get details for a single Formula E race (sessions, circuit, schedule). Use a race id from formulae_get_races.

formulae_get_race_results

Get the race results / classification for a Formula E race (driver, team, position, points). Use a race id from formulae_get_races.

formulae_get_teams

List Formula E teams with wins, podiums and race starts.

formulae_get_driver_standings

Get the Formula E drivers' championship standings for a championship (season). Pass a championshipId from formulae_get_championships.

formulae_get_team_standings

Get the Formula E teams' championship standings for a championship (season). Pass a championshipId from formulae_get_championships.

nascar_get_schedule

Get the NASCAR race schedule for a season and series, including track, dates, winners and stage info for completed races.

nascar_get_live

Get the live race feed: current lap, flag state, laps to go, leader and per-vehicle running order. When no race is live, fields are in an idle state (flag_state 9, race_id -1).

nascar_get_lap_times

Get per-driver lap times and speeds for a specific race. Use the race_id from nascar_get_schedule.

opendota_get_pro_matches

Get recent professional Dota 2 matches (teams, league, duration, winner). Use a match_id with opendota_get_match for full detail.

opendota_get_match

Get full detail for a Dota 2 match: players, heroes, K/D/A, items, gold/xp, objectives.

opendota_get_player

Get a player's profile and aggregate stats by Steam32 account id (rank, MMR estimate, profile).

opendota_get_player_matches

Get a player's recent matches (hero, result, K/D/A, duration). Use `limit` to cap the list.

opendota_get_player_win_loss

Get a player's overall win/loss record.

opendota_get_player_heroes

Get a player's per-hero stats (games, win rate, last played).

opendota_get_hero_stats

Get hero stats / current meta: per-bracket pick and win counts for every hero.

opendota_get_heroes

List all Dota 2 heroes with id, name, primary attribute and roles.

opendota_get_pro_teams

List professional Dota 2 teams with rating, wins/losses and last match time.

opendota_get_pro_leagues

List Dota 2 leagues / tournaments with id, name and tier.

opendota_search_players

Search for Dota 2 players by persona name. Returns account_id values for use with the player tools.

sleeper_get_nfl_state

Get the current NFL season, week, and season type (pre/regular/post/off) as tracked by Sleeper.

sleeper_search_players

Search the Sleeper NFL player database by name (and optionally team/position). Returns slim records with injury status, depth-chart order, team and position. The full player set is cached for 24h.

sleeper_get_trending_players

Get the most-added or most-dropped NFL players over a lookback window, enriched with names/teams/positions. Doubles as a crude buzz signal.

sleeper_get_user

Get a Sleeper user (profile, user_id, display name) by username or numeric user id.

sleeper_get_user_leagues

List the NFL leagues a user belongs to for a given season. Use the user_id from sleeper_get_user.

sleeper_get_league

Get details for a Sleeper league (settings, scoring, roster positions, status).

sleeper_get_league_rosters

Get all rosters in a league (owners, player_ids, wins/losses, points).

sleeper_get_league_users

Get all users (managers) in a league with display names and team names.

sleeper_get_league_matchups

Get the matchups for a league in a given week (roster_id, points, starters).

sleeper_get_draft_picks

Get all picks for a draft (round, pick number, roster, player_id, metadata). Get a draft_id from sleeper_get_league (draft_id) or the league's drafts.

euroleague_get_games

Get all EuroLeague/EuroCup games for a season (teams, scores, dates, round, status).

euroleague_get_clubs

List the clubs participating in a EuroLeague/EuroCup season (names, codes, venues, country).

euroleague_get_rounds

List the rounds (game days) of a EuroLeague/EuroCup season.

euroleague_get_game_header

Get a game's header/summary: final and per-quarter scores, teams, coaches. Use a game code from euroleague_get_games.

euroleague_get_game_boxscore

Get a game's full box score (per-player and team stats for both teams). Use a game code from euroleague_get_games.

euroleague_get_game_playbyplay

Get a game's full play-by-play feed (every event by quarter). Use a game code from euroleague_get_games.

footballdata_uk_list_leagues

List the football-data.co.uk league codes usable with footballdata_uk_get_matches, and how to form the season code.

footballdata_uk_get_matches

Get historical matches (results + bookmaker odds) for a league and season from football-data.co.uk. Returns the most recent matches first; filter by team and cap with limit.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "sports hub": {
            "sports-hub": {
                "command": "npx",
                "args": [
                    "mcp-sports-hub"
                ],
                "env": {
                    "SPORTS_HUB_PROVIDERS": "free"
                }
            }
        }
    }
}

McpServers

{
    "sports-hub": {
        "command": "npx",
        "args": [
            "mcp-sports-hub"
        ],
        "env": {
            "SPORTS_HUB_PROVIDERS": "free"
        }
    }
}

A unified MCP server that aggregates42 sports API providersinto a single service.410 toolscovering scores, stats, odds, esports, college sports, chess, motorsport, boxing, AFL, and more across 70+ sports.

Each provider works independently. You only need API keys for the providers you use. Missing keys don't block startup — tools return an error when called without their key.

NBA scores, Premier League odds, Tennis H2H — all from a single MCP server.

Uses thestdio transportfrom theMCP SDK. Works with any LLM (Claude, GPT, Gemini, Llama, Mistral, etc.).

Works instantly — no API key, no signup (19 providers, ~165 tools)

These providers work out of the box. Just build and run.

Tip: UseSPORTS_HUB_PROVIDERS=freeto load only these 19 providers (~165 tools).

Free tier with API key — signup required, no credit card (23 providers, ~245 tools)

Registration takes 1-2 minutes. All keys are free.

Providers with missing keys don't block the server — they just return an error when called. Register keys incrementally as you need them.

npm install -g mcp-sports-hub mcp-sports-hub
git clone https://github.com/lacausecrypto/mcp-sports-hub.git cd mcp-sports-hub npm install npm run build

This server is published on theofficial MCP Registryasio.github.lacausecrypto/sports-hub. MCP clients that support the registry can discover and install it automatically.

Stdio (default — Claude Desktop, Cursor, etc.)

HTTP/SSE (remote clients, web apps, custom integrations)

# Via flag npx mcp-sports-hub --http # Via env SPORTS_HUB_HTTP=1 SPORTS_HUB_PORT=3000 npx mcp-sports-hub

- POST /mcp— MCP protocol (Streamable HTTP with SSE)
- GET /health— Health check ({"status":"ok","providers":19,"sessions":0,"mode":"session"})

Supports CORS and multi-client session management via themcp-session-idheader. Default port: 3000.

Each client gets its own session, created oninitializeand addressed afterwards by its session id. Building a session costs ~90 ms for the 165-toolfreepreset, paid once per client rather than per request. Idle sessions are reaped.

SPORTS_HUB_MAX_SESSIONS=200 # concurrent sessions before new ones get a 503 SPORTS_HUB_SESSION_TTL=1800 # seconds a session may sit idle SPORTS_HUB_STATELESS=1 # opt out: build a throwaway server per request

SPORTS_HUB_STATELESS=1suits several replicas behind a load balancer with no sticky routing. It pays the build cost on every call, so prefer sessions for a single instance.

⚠ Security: HTTP mode binds to127.0.0.1(loopback) by default. SettingSPORTS_HUB_HOST=0.0.0.0exposes anunauthenticatedMCP endpoint to your whole network — anyone who can reach it can use your configured API keys. DNS-rebinding protection only blocks browser-origin attacks, not direct clients. Only expose it behind a reverse proxy with auth/TLS.SPORTS_HUB_CORS_ORIGINSmust list explicit origins (a literal*is rejected).

ADockerfileandsmithery.yamlare included for container hosting onSmithery. The hosted endpoint serves the keylessfreepreset, so clients connect with zero setup. The deploy setsSPORTS_HUB_DNS_REBINDING_PROTECTION=0because Smithery's proxy forwards a non-localhostHostheader.

SPORTS_HUB_DNS_REBINDING_PROTECTION=0disables the Host/Origin check (it isonby default). Only set it when the server runs behind a trusted proxy that owns routing — never for a server directly reachable by browsers on localhost.

# Free — no key needed: # ESPN, NHL, MLB, Jolpica F1, OpenF1, OpenLigaDB, NCAA, TheSportsDB (test key), # SportSRC (V1), Lichess, Chess.com, Squiggle (AFL), # MotoGP, Formula E, NASCAR, OpenDota, Sleeper # Optional (defaults to test key) export THESPORTSDB_API_KEY="your-key" # https://www.thesportsdb.com/ # Requires free registration export PANDASCORE_TOKEN="your-token" # https://pandascore.co/ export API_SPORTS_KEY="your-key" # https://api-sports.io/ export API_FOOTBALL_KEY="your-key" # https://www.api-football.com/ export API_TENNIS_KEY="your-key" # https://api-tennis.com/ export BALLDONTLIE_API_KEY="your-key" # https://www.balldontlie.io/ export CRICKETDATA_API_KEY="your-key" # https://cricketdata.org/ export ENTITY_SPORT_KEY="your-key" # https://www.entitysport.com/ export FOOTBALL_DATA_API_KEY="your-key" # https://www.football-data.org/ export SPORTMONKS_API_KEY="your-key" # https://www.sportmonks.com/ export SPORTSDATA_IO_KEY="your-key" # https://sportsdata.io/ export THE_ODDS_API_KEY="your-key" # https://the-odds-api.com/ export ODDS_API_IO_KEY="your-key" # https://odds-api.io/ export SPORTS_GAME_ODDS_KEY="your-key" # https://sportsgameodds.com/ export FIGHTING_TOMATOES_API_KEY="your-key" # https://fightingtomatoes.com/ export LIVE_GOLF_API_KEY="your-key" # https://livegolfapi.com/ export ISPORTSAPI_KEY="your-key" # https://www.isportsapi.com/ export SPORTDEVS_API_KEY="your-key" # https://sportdevs.com/ export GOLFCOURSE_API_KEY="your-key" # https://golfcourseapi.com/ export MYSPORTSFEEDS_USER="your-user" # https://www.mysportsfeeds.com/ export MYSPORTSFEEDS_PASS="your-pass" export CFBD_API_KEY="your-key" # https://collegefootballdata.com/key export LUMIFY_API_KEY="your-key" # https://lumify.ai/
$env:API_SPORTS_KEY = "your-key" $env:PANDASCORE_TOKEN = "your-token"
set API_SPORTS_KEY=your-key set PANDASCORE_TOKEN=your-token

Sports APIs return very wide objects, and every byte a tool returns is spent from the model's context window. A singleespn_get_scoreboard-style team listing is ~300 KB of JSON, of which the part anyone wants is under 3 KB.

Every tool accepts an optionalfieldsparameter: a comma-separated list of key names to keep, matched at any depth. Branches that match nothing are dropped, and a matched key keeps its whole value.

// espn_get_teams { "sport": "basketball", "league": "nba" } // -> 297 KB // espn_get_teams { "sport": "basketball", "league": "nba", // "fields": "id,abbreviation,displayName,location" } // -> 2.9 KB, same 30 teams

Iffieldsmatches nothing, the tool says so and lists the top-level keys it did see, rather than returning an empty object.

Responses are also capped. Above the limit, the longest lists in the payload are shortened until it fits (so the JSON still parses) and a note reports how many items were dropped.

SPORTS_HUB_MAX_RESULT_BYTES=40000 # default; serialized bytes per tool result

- macOS:~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:%APPDATA%\Claude\claude_desktop_config.json
- Linux:~/.config/claude/claude_desktop_config.json

{ "mcpServers": { "sports-hub": { "command": "node", "args": ["/absolute/path/to/mcp-sports-hub/dist/index.js"], "env": { "PANDASCORE_TOKEN": "your-token", "API_SPORTS_KEY": "your-key", "THE_ODDS_API_KEY": "your-key" } } } }

Windows path:"args": ["C:/Users/you/mcp-sports-hub/dist/index.js"]

Only include env vars for providers you need. Omitenventirely for free-only providers.

claude mcp add sports-hub node /absolute/path/to/mcp-sports-hub/dist/index.js
{ "mcpServers": { "sports-hub": { "command": "node", "args": ["/absolute/path/to/mcp-sports-hub/dist/index.js"], "env": { "PANDASCORE_TOKEN": "your-token" } } } }

By default, only thefree presetis loaded (19 providers, ~165 tools — no API keys needed). UseSPORTS_HUB_PROVIDERSto change what's loaded:

# Default — free providers only (no config needed) npx mcp-sports-hub # Load ALL 42 providers (410 tools) SPORTS_HUB_PROVIDERS=all npx mcp-sports-hub # Use a preset SPORTS_HUB_PROVIDERS=us-major npx mcp-sports-hub # Pick specific providers SPORTS_HUB_PROVIDERS=espn,nhl,odds npx mcp-sports-hub # Exclude from all (prefix with -) SPORTS_HUB_PROVIDERS=-sportsdata,-mma npx mcp-sports-hub

All GET responses are cached in memory for 60 seconds by default. This protects against duplicate calls and rate limit waste. Configure with:

SPORTS_HUB_CACHE_TTL=120 # seconds (0 to disable)

The cache key includes a digest of the request's auth headers, so two API keys never read each other's entries. Concurrent identical requests are collapsed into a single upstream call, and a404/410is remembered briefly (SPORTS_HUB_NEGATIVE_CACHE_TTL, default 30s) so a wrong ID can't be re-fetched in a loop.

429and5xxresponses are retried with exponential backoff, honouringRetry-Afterwhen the upstream sends one. Client errors (4xxother than 408/425/429) and timeouts are not retried.

SPORTS_HUB_MAX_RETRIES=2 # extra attempts after the first (0 disables) SPORTS_HUB_RETRY_BASE_MS=300 # backoff base; doubles per attempt
"env": { "SPORTS_HUB_PROVIDERS": "us-major", "THE_ODDS_API_KEY": "your-key" }
espn_get_scoreboard — Live scores (ESPN) nhl_get_standings — NHL standings mlb_get_game_boxscore — MLB box score f1_get_race_results — F1 results (1950+) openf1_get_laps — F1 live telemetry pandascore_get_lives — Live esports matches apifootball_get_fixtures — Soccer fixtures (960+ leagues) odds_get_odds — Betting odds (70+ sports) sportsrc_get_xg_stats — Expected goals (xG)

Resources(readable catalogs, no API call):

- sportshub://providers— the full provider catalog (prefix, name, coverage, required key)
- sportshub://presets— all presets and the providers they load
- sportshub://provider/{key}— details for one provider (with key autocompletion)

Prompts(curated slash-command workflows over the 410 tools):

- whats-on-today·compare-odds {event}·motorsport-weekend {series}·league-standings {league}·team-deep-dive {team}·f1-race {season} {round}

All tools are annotatedreadOnly/idempotentso clients can skip confirmation prompts.

src/ ├── index.ts # Imports + registers all 42 providers; transports ├── shared/ │ ├── http.ts # fetchJson, fetchText, buildUrl, toolResult, errorResult │ │ # + retry/backoff, coalescing, keyed cache │ ├── catalog.ts # provider catalog + presets (single source of truth) │ ├── annotations.ts # central read-only annotations + titles │ ├── tool-pipeline.ts # central fields param, size cap, empty-result hints │ ├── projection.ts # field projection used by the pipeline │ ├── slim.ts # strips $schema boilerplate from tools/list │ ├── resources.ts # MCP resources (provider/preset catalogs) │ └── prompts.ts # MCP prompts (curated workflows) └── providers/ ├── espn.ts # 10 tools — no key ├── nhl.ts # 13 tools — no key ├── mlb-stats.ts # 13 tools — no key ├── jolpica-f1.ts # 13 tools — no key ├── openf1.ts # 12 tools — no key ├── openligadb.ts # 10 tools — no key ├── golfcourse.ts # 6 tools — GOLFCOURSE_API_KEY ├── thesportsdb.ts # 13 tools — optional key ├── pandascore.ts # 14 tools — PANDASCORE_TOKEN ├── api-football.ts # 15 tools — API_FOOTBALL_KEY ├── api-sports.ts # 10 tools — API_SPORTS_KEY ├── api-tennis.ts # 12 tools — API_TENNIS_KEY ├── balldontlie.ts # 10 tools — BALLDONTLIE_API_KEY ├── cricketdata.ts # 10 tools — CRICKETDATA_API_KEY ├── entity-sport-cricket.ts # 12 tools — ENTITY_SPORT_KEY ├── football-data.ts # 11 tools — FOOTBALL_DATA_API_KEY ├── sportmonks.ts # 12 tools — SPORTMONKS_API_KEY ├── sportsdata-io.ts # 12 tools — SPORTSDATA_IO_KEY ├── the-odds-api.ts # 9 tools — THE_ODDS_API_KEY ├── odds-api-io.ts # 10 tools — ODDS_API_IO_KEY ├── sports-game-odds.ts # 10 tools — SPORTS_GAME_ODDS_KEY ├── lumify.ts # 14 tools — LUMIFY_API_KEY ├── fighting-tomatoes.ts # 8 tools — FIGHTING_TOMATOES_API_KEY ├── live-golf.ts # 8 tools — LIVE_GOLF_API_KEY ├── isportsapi.ts # 10 tools — ISPORTSAPI_KEY ├── sportdevs.ts # 12 tools — SPORTDEVS_API_KEY ├── mysportsfeeds.ts # 12 tools — MYSPORTSFEEDS_USER/PASS ├── sportsrc.ts # 7 tools — V1 free, V2 needs paid key (not exposed) ├── ncaa.ts # 8 tools — no key ├── cfbd.ts # 14 tools — CFBD_API_KEY ├── lichess.ts # 7 tools — no key ├── chess-com.ts # 7 tools — no key ├── squiggle.ts # 6 tools — no key ├── motogp.ts # 7 tools — no key ├── formula-e.ts # 7 tools — no key ├── nascar.ts # 3 tools — no key ├── opendota.ts # 11 tools — no key ├── sleeper.ts # 10 tools — no key ├── euroleague.ts # 6 tools — no key ├── football-data-uk.ts # 2 tools — no key (CSV) ├── boxing.ts # 8 tools — BOXING_DATA_API_KEY └── highlightly.ts # 6 tools — HIGHLIGHTLY_API_KEY

Each provider exportsregister(server). Keys are checked at call time, not startup.
- Fork the repository
- Createsrc/providers/my-api.tsexportingregister(server: McpServer)
- Prefix tool names:myapi_get_something
- Import + call insrc/index.ts
- npm run buildto verify
- Submit a PR

Access college football statistics from the College Football Data API.

Access Formula 1 data, including race results, driver standings, and circuit information.

Access extensive Formula 1 statistics and information using the FastF1 library and OpenF1 API.

Provides football (soccer) data using the API-Football service.

Access MLB game data, standings, and player statistics using the SportRadar API.

The hockey data API. Stats, odds, and everything between.

Provides club information and advanced player statistics for Euroleague and Eurocup basketball from the Euroleague API.

An MCP server for the NHL API, providing access to all documented endpoints.

Provides real-time football match information from the SoccerDataAPI using natural language.

Provides football (soccer) statistics and live match data using the API-Football service.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.