Sports Hub MCP Server
A unified MCP server that aggregates 32 sports API providers into a single service, providing 336 tools for scores, stats, odds, esports, and more across 70+ sports.
README
Sports Hub MCP Server
<p align="center"> <a href="https://www.npmjs.com/package/mcp-sports-hub"><img src="https://img.shields.io/npm/v/mcp-sports-hub?color=CB3837&logo=npm&logoColor=white" alt="npm version"></a> <a href="https://www.npmjs.com/package/mcp-sports-hub"><img src="https://img.shields.io/npm/dt/mcp-sports-hub?color=CB3837&logo=npm&logoColor=white" alt="npm downloads"></a> <a href="https://github.com/lacausecrypto/mcp-sports-hub/actions"><img src="https://github.com/lacausecrypto/mcp-sports-hub/actions/workflows/ci.yml/badge.svg" alt="CI"></a> <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="License"></a> </p>
<p align="center"> <img src="https://img.shields.io/badge/Providers-32-orange" alt="32 Providers"> <img src="https://img.shields.io/badge/Tools-336-green" alt="336 Tools"> <a href="https://registry.modelcontextprotocol.io"><img src="https://img.shields.io/badge/MCP_Registry-published-8B5CF6?logo=anthropic&logoColor=white" alt="MCP Registry"></a> </p>
<p align="center"> <img src="https://img.shields.io/badge/macOS-supported-lightgrey?logo=apple&logoColor=white" alt="macOS"> <img src="https://img.shields.io/badge/Linux-supported-lightgrey?logo=linux&logoColor=white" alt="Linux"> <img src="https://img.shields.io/badge/Windows-supported-lightgrey?logo=windows&logoColor=white" alt="Windows"> <img src="https://img.shields.io/badge/Node.js-18+-339933?logo=node.js&logoColor=white" alt="Node.js"> <img src="https://img.shields.io/badge/TypeScript-5.7-3178C6?logo=typescript&logoColor=white" alt="TypeScript"> </p>
A unified MCP server that aggregates 32 sports API providers into a single service. 336 tools covering scores, stats, odds, esports, college sports, chess, 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.
Demo

NBA scores, Premier League odds, Tennis H2H — all from a single MCP server.
Compatibility
Platforms
| OS | Status |
|---|---|
| macOS | Supported |
| Linux | Supported |
| Windows | Supported |
MCP Clients
| Client | Status | Notes |
|---|---|---|
| Claude Desktop | Supported | Anthropic's desktop app |
| Claude Code (CLI) | Supported | claude mcp add |
| Cursor | Supported | Built-in MCP |
| Windsurf (Codeium) | Supported | Built-in MCP |
| Continue.dev | Supported | Open-source AI assistant |
| Cline | Supported | VS Code extension |
| Zed | Supported | Built-in MCP |
| ChatGPT Desktop | Supported | OpenAI desktop app |
| Gemini CLI | Supported | Google CLI |
| Any MCP client | Supported | Stdio + HTTP/SSE transport |
Uses the stdio transport from the MCP SDK. Works with any LLM (Claude, GPT, Gemini, Llama, Mistral, etc.).
Requirements: Node.js 18+, npm.
Providers (32)
Works instantly — no API key, no signup (12 providers, ~109 tools)
These providers work out of the box. Just build and run.
| Prefix | Provider | Coverage | Tools | Notes |
|---|---|---|---|---|
espn_ |
ESPN | 20+ sports | 10 | Unofficial — can break |
nhl_ |
NHL Web API | NHL | 13 | Undocumented but stable |
mlb_ |
MLB Stats API | MLB/MiLB | 13 | Official, undocumented |
f1_ |
Jolpica F1 | Formula 1 (1950+) | 13 | Community-maintained |
openf1_ |
OpenF1 | F1 live telemetry | 12 | Live race weekends only |
openliga_ |
OpenLigaDB | German football | 10 | Bundesliga focus |
sportsdb_ |
TheSportsDB | 40+ sports | 13 | Test key auto, watermarks |
ncaa_ |
NCAA API | College sports | 8 | 5 req/s rate limit |
sportsrc_ |
SportSRC | Football, basketball, MMA + streams | 7 | V1 free, V2 needs paid key |
lichess_ |
Lichess | Chess (users, top players, broadcasts, daily puzzle) | 7 | ~20 req/sec/IP |
chesscom_ |
Chess.com | Chess (profiles, stats, clubs, leaderboards) | 7 | Throttles on parallel calls |
squiggle_ |
Squiggle | AFL (Australian Football League) | 6 | Honest UA required |
Tip: Use
SPORTS_HUB_PROVIDERS=freeto load only these 12 providers (~109 tools).
Free tier with API key — signup required, no credit card (21 providers, ~227 tools)
Registration takes 1-2 minutes. All keys are free.
| Prefix | Provider | Coverage | Tools | Free Limit | Get Key |
|---|---|---|---|---|---|
pandascore_ |
PandaScore | Esports (13 titles) | 14 | 1000 req/hr | Sign up |
apifootball_ |
API-Football | Soccer (960+ leagues) | 15 | 100 req/day | Sign up |
apisports_ |
API-Sports | 9 sports | 10 | 100 req/day/sport | Sign up |
apitennis_ |
API-Tennis | Tennis (ATP/WTA/ITF) | 12 | 100 req/day | Sign up |
bdl_ |
BallDontLie | NBA/NFL/MLB/NHL | 10 | Basic tier | Sign up |
cricket_ |
CricketData | Cricket | 10 | 100 req/day | Sign up |
entitycricket_ |
Entity Sport | Cricket (250+ comps) | 12 | Free plan | Sign up |
footballdata_ |
football-data.org | Soccer (12 leagues) | 11 | 10 req/min | Sign up |
sportmonks_ |
Sportmonks | Soccer | 12 | 3000 req/hr | Sign up |
sportsdata_ |
SportsDataIO | 9 sports | 12 | 1000 req/mo | Sign up |
odds_ |
The Odds API | 70+ sports odds | 9 | 500 req/mo | Sign up |
oddsio_ |
Odds-API.io | 34 sports odds | 10 | Free account | Sign up |
sgo_ |
Sports Game Odds | 55+ leagues odds | 10 | Trial | Sign up |
mma_ |
Fighting Tomatoes | MMA | 8 | 200 req/mo | Sign up |
livegolf_ |
Live Golf API | Golf (PGA/DP World) | 8 | Free tier | Sign up |
isports_ |
iSportsAPI | Football/Basketball (Asia) | 10 | Free tier | Sign up |
sportdevs_ |
SportDevs | Rugby/Volleyball/Handball | 12 | Trial | Sign up |
msf_ |
MySportsFeeds | NFL/NBA/MLB/NHL | 12 | Free non-commercial | Sign up |
golfcourse_ |
GolfCourseAPI | 30K+ golf courses | 6 | 300 req/day | Sign up |
cfbd_ |
College Football Data | NCAA football | 14 | 1000 req/mo | Sign up |
Providers with missing keys don't block the server — they just return an error when called. Register keys incrementally as you need them.
Installation
Quick (npx — no install)
npx mcp-sports-hub
npm global
npm install -g mcp-sports-hub
mcp-sports-hub
From source
git clone https://github.com/lacausecrypto/mcp-sports-hub.git
cd mcp-sports-hub
npm install
npm run build
MCP Registry
This server is published on the official MCP Registry as io.github.lacausecrypto/sports-hub. MCP clients that support the registry can discover and install it automatically.
Transport Modes
Stdio (default — Claude Desktop, Cursor, etc.)
npx mcp-sports-hub
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
Endpoints:
POST /mcp— MCP protocol (Streamable HTTP with SSE)GET /health— Health check ({"status":"ok","providers":9})
Supports CORS, session management via mcp-session-id header. Default port: 3000.
Configuration
Environment Variables
Only set keys for providers you want:
# Free — no key needed:
# ESPN, NHL, MLB, Jolpica F1, OpenF1, OpenLigaDB, NCAA, TheSportsDB (test key),
# SportSRC (V1), Lichess, Chess.com, Squiggle (AFL)
# 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
Windows (PowerShell):
$env:API_SPORTS_KEY = "your-key"
$env:PANDASCORE_TOKEN = "your-token"
Windows (cmd):
set API_SPORTS_KEY=your-key
set PANDASCORE_TOKEN=your-token
Claude Desktop
Config file locations:
- 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. Omit env entirely for free-only providers.
Claude Code (CLI)
claude mcp add sports-hub node /absolute/path/to/mcp-sports-hub/dist/index.js
Or in .claude/settings.json:
{
"mcpServers": {
"sports-hub": {
"command": "node",
"args": ["/absolute/path/to/mcp-sports-hub/dist/index.js"],
"env": {
"PANDASCORE_TOKEN": "your-token"
}
}
}
}
Provider Filtering
By default, only the free preset is loaded (9 providers, ~98 tools — no API keys needed). Use SPORTS_HUB_PROVIDERS to change what's loaded:
# Default — free providers only (no config needed)
npx mcp-sports-hub
# Load ALL 29 providers (319 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
Presets
| Preset | Providers | Tools | Needs keys? |
|---|---|---|---|
free (default) |
espn, nhl, mlb, f1, openf1, openliga, sportsdb, ncaa, sportsrc, lichess, chesscom, squiggle | ~109 | No |
all |
all 32 providers | 336 | Yes (for key-required providers) |
chess |
lichess, chesscom | 14 | No |
us-major |
espn, nhl, mlb, ncaa, cfbd, bdl, msf | ~79 | Some |
soccer |
espn, apifootball, footballdata, sportmonks, openliga, sportsrc | ~69 | Some |
f1 |
f1, openf1 | 25 | No |
esports |
pandascore | 14 | Yes |
odds |
odds, oddsio, sgo | 29 | Yes |
cricket |
cricket, entitycricket | 22 | Yes |
golf |
livegolf, golfcourse | 14 | Some |
Cache
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)
In Claude Desktop config:
"env": {
"SPORTS_HUB_PROVIDERS": "us-major",
"THE_ODDS_API_KEY": "your-key"
}
Tool Naming
All tools follow {provider}_{action}:
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)
Architecture
src/
├── index.ts # Imports + registers all 29 providers
├── shared/
│ └── http.ts # fetchJson, buildUrl, toolResult, errorResult
└── 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
├── 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
Each provider exports register(server). Keys are checked at call time, not startup.
Contributing
- Fork the repository
- Create
src/providers/my-api.tsexportingregister(server: McpServer) - Prefix tool names:
myapi_get_something - Import + call in
src/index.ts npm run buildto verify- Submit a PR
License
MIT
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。