Sports Hub
About
41 sports API providers, 396 tools: scores, stats, odds, esports, chess, motorsport & more.
Details
- Author
- lacausecrypto
- Downloads
- 130
- Categories
- Database, Other, API
Jump to
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:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
Sports HubCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- 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.
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.





