Sports Hub
41 proveedores de API deportivas, 396 herramientas: puntuaciones, estadísticas, cuotas, esports, ajedrez, automovilismo y más.
Documentación
Sports Hub MCP Server
Un servidor MCP unificado que agrega 41 proveedores de API deportivas en un solo servicio. 396 herramientas que cubren resultados, estadísticas, cuotas, esports, deportes universitarios, ajedrez, automovilismo, boxeo, AFL y más en más de 70 deportes.
Cada proveedor funciona de forma independiente. Solo necesitas claves de API para los proveedores que uses. Las claves faltantes no bloquean el inicio: las herramientas devuelven un error cuando se las llama sin su clave.
Demostración

Resultados de la NBA, cuotas de la Premier League, H2H de tenis: todo desde un solo servidor MCP.
Compatibilidad
Plataformas
| SO | Estado |
|---|---|
| macOS | Compatible |
| Linux | Compatible |
| Windows | Compatible |
Clientes MCP
| Cliente | Estado | Notas |
|---|---|---|
| Claude Desktop | Compatible | Aplicación de escritorio de Anthropic |
| Claude Code (CLI) | Compatible | claude mcp add |
| Cursor | Compatible | MCP integrado |
| Windsurf (Codeium) | Compatible | MCP integrado |
| Continue.dev | Compatible | Asistente de IA de código abierto |
| Cline | Compatible | Extensión de VS Code |
| Zed | Compatible | MCP integrado |
| ChatGPT Desktop | Compatible | Aplicación de escritorio de OpenAI |
| Gemini CLI | Compatible | CLI de Google |
| Cualquier cliente MCP | Compatible | Transporte Stdio + HTTP/SSE |
Utiliza el transporte stdio del MCP SDK. Funciona con cualquier LLM (Claude, GPT, Gemini, Llama, Mistral, etc.).
Requisitos: Node.js 18+, npm.
Proveedores (32)
Funciona al instante: sin clave de API, sin registro (19 proveedores, ~165 herramientas)
Estos proveedores funcionan de inmediato. Solo compila y ejecuta.
| Prefijo | Proveedor | Cobertura | Herramientas | Notas |
|---|---|---|---|---|
espn_ | ESPN | Más de 20 deportes | 10 | No oficial: puede fallar |
nhl_ | NHL Web API | NHL | 13 | No documentado pero estable |
mlb_ | MLB Stats API | MLB/MiLB | 13 | Oficial, no documentado |
f1_ | Jolpica F1 | Fórmula 1 (1950+) | 13 | Mantenido por la comunidad |
openf1_ | OpenF1 | Telemetría en vivo de F1 | 12 | Solo fines de semana de carreras en vivo |
openliga_ | OpenLigaDB | Fútbol alemán | 10 | Enfoque en la Bundesliga |
sportsdb_ | TheSportsDB | Más de 40 deportes | 13 | Clave de prueba automática, marcas de agua |
ncaa_ | NCAA API | Deportes universitarios | 8 | Límite de 5 solicitudes/segundo |
sportsrc_ | SportSRC | Fútbol, baloncesto, MMA + transmisiones | 7 | V1 gratis, V2 requiere clave de pago |
lichess_ | Lichess | Ajedrez (usuarios, mejores jugadores, transmisiones, puzzle diario) | 7 | ~20 solicitudes/segundo/IP |
chesscom_ | Chess.com | Ajedrez (perfiles, estadísticas, clubes, clasificaciones) | 7 | Limita las llamadas en paralelo |
squiggle_ | Squiggle | AFL (Liga Australiana de Fútbol) | 6 | Se requiere un User-Agent honesto |
motogp_ | MotoGP | MotoGP/Moto2/Moto3/MotoE | 7 | No oficial: puede fallar |
formulae_ | Formula E | Fórmula E | 7 | No oficial: puede fallar |
nascar_ | NASCAR | NASCAR Cup/Xfinity/Truck | 3 | Fuentes CDN no oficiales |
opendota_ | OpenDota | Análisis de Dota 2 | 11 | 60 solicitudes/min, 50k/mes |
sleeper_ | Sleeper | NFL fantasy | 10 | ~1000 solicitudes/min |
euroleague_ | EuroLeague | Baloncesto EuroLeague + EuroCup | 6 | Fuentes sin clave |
footballdata_uk_ | Football-Data.co.uk | Resultados históricos de fútbol + cuotas | 2 | CSV, más de 25 ligas |
Consejo: Usa
SPORTS_HUB_PROVIDERS=freepara cargar solo estos 19 proveedores (~165 herramientas).
Nivel gratuito con clave de API: se requiere registro, sin tarjeta de crédito (22 proveedores, ~231 herramientas)
El registro toma 1-2 minutos. Todas las claves son gratuitas.
| Prefijo | Proveedor | Cobertura | Herramientas | Límite gratuito | Obtener clave |
|---|---|---|---|---|---|
pandascore_ | PandaScore | Esports (13 títulos) | 14 | 1000 solicitudes/hora | Registrarse |
apifootball_ | API-Football | Fútbol (más de 960 ligas) | 15 | 100 solicitudes/día | Registrarse |
apisports_ | API-Sports | 9 deportes | 10 | 100 solicitudes/día/deporte | Registrarse |
apitennis_ | API-Tennis | Tenis (ATP/WTA/ITF) | 12 | 100 solicitudes/día | Registrarse |
bdl_ | BallDontLie | NBA/NFL/MLB/NHL | 10 | Nivel básico | Registrarse |
cricket_ | CricketData | Críquet | 10 | 100 solicitudes/día | Registrarse |
entitycricket_ | Entity Sport | Críquet (más de 250 competiciones) | 12 | Plan gratuito | Registrarse |
footballdata_ | football-data.org | Fútbol (12 ligas) | 11 | 10 solicitudes/min | Registrarse |
sportmonks_ | Sportmonks | Fútbol | 12 | 3000 solicitudes/hora | Registrarse |
sportsdata_ | SportsDataIO | 9 deportes | 12 | 1000 solicitudes/mes | Registrarse |
odds_ | The Odds API | Cuotas de más de 70 deportes | 9 | 500 solicitudes/mes | Registrarse |
oddsio_ | Odds-API.io | Cuotas de 34 deportes | 10 | Cuenta gratuita | Registrarse |
sgo_ | Sports Game Odds | Cuotas de más de 55 ligas | 10 | Prueba | Registrarse |
mma_ | Fighting Tomatoes | MMA | 8 | 200 solicitudes/mes | Registrarse |
livegolf_ | Live Golf API | Golf (PGA/DP World) | 8 | Nivel gratuito | Registrarse |
isports_ | iSportsAPI | Fútbol/Baloncesto (Asia) | 10 | Nivel gratuito | Registrarse |
sportdevs_ | SportDevs | Rugby/Voleibol/Balonmano | 12 | Prueba | Registrarse |
msf_ | MySportsFeeds | NFL/NBA/MLB/NHL | 12 | Gratuito no comercial | Registrarse |
golfcourse_ | GolfCourseAPI | Más de 30,000 campos de golf | 6 | 300 solicitudes/día | Registrarse |
cfbd_ | College Football Data | Fútbol americano universitario (NCAA) | 14 | 1000 solicitudes/mes | Registrarse |
boxing_ | Boxing Data API | Boxeo profesional (peleadores/combates/títulos) | 8 | 100 solicitudes/mes | Registrarse |
highlightly_ | Highlightly | Resúmenes de múltiples deportes + cuotas | 6 | 100 solicitudes/día | Registrarse |
Los proveedores con claves faltantes no bloquean el servidor: solo devuelven un error cuando se les llama. Registra las claves de forma incremental según las necesites.
Instalación
Rápido (npx, sin instalación)
npx mcp-sports-hub
npm global
npm install -g mcp-sports-hub
mcp-sports-hub
Desde el código fuente
git clone https://github.com/lacausecrypto/mcp-sports-hub.git
cd mcp-sports-hub
npm install
npm run build
Registro MCP
Este servidor está publicado en el Registro MCP oficial como io.github.lacausecrypto/sports-hub. Los clientes MCP que admiten el registro pueden descubrirlo e instalarlo automáticamente.
Modos de transporte
Stdio (predeterminado: Claude Desktop, Cursor, etc.)
npx mcp-sports-hub
HTTP/SSE (clientes remotos, aplicaciones web, integraciones personalizadas)
# Via flag
npx mcp-sports-hub --http
# Via env
SPORTS_HUB_HTTP=1 SPORTS_HUB_PORT=3000 npx mcp-sports-hub
Endpoints:
POST /mcp— protocolo MCP (HTTP transmisible con SSE)GET /health— verificación de salud ({"status":"ok","providers":19})
Admite CORS, gestión de sesiones mediante el encabezado mcp-session-id. Puerto predeterminado: 3000.
⚠ Seguridad: El modo HTTP se vincula a
127.0.0.1(bucle local) de forma predeterminada. EstablecerSPORTS_HUB_HOST=0.0.0.0expone un punto de conexión MCP sin autenticación a toda tu red: cualquiera que pueda alcanzarlo puede usar tus claves de API configuradas. La protección contra el reenlace de DNS solo bloquea ataques de origen de navegador, no clientes directos. Solo expónlo detrás de un proxy inverso con autenticación/TLS.SPORTS_HUB_CORS_ORIGINSdebe listar orígenes explícitos (un*literal se rechaza).
Alojado (Smithery)
Se incluyen un Dockerfile y un smithery.yaml para el alojamiento en contenedores en Smithery. El punto de conexión alojado sirve el preset free sin clave, por lo que los clientes se conectan sin configuración. El despliegue establece SPORTS_HUB_DNS_REBINDING_PROTECTION=0 porque el proxy de Smithery reenvía un encabezado Host que no es de localhost.
SPORTS_HUB_DNS_REBINDING_PROTECTION=0desactiva la verificación de Host/Origen (está activada de forma predeterminada). Solo establécelo cuando el servidor se ejecute detrás de un proxy confiable que controle el enrutamiento; nunca para un servidor directamente accesible por navegadores en localhost.
Configuración
Variables de entorno
Solo establece claves para los proveedores que quieras:
# 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
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
Ubicaciones de archivos de configuración:
- 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"
}
}
}
}
Ruta de Windows: "args": ["C:/Users/you/mcp-sports-hub/dist/index.js"]
Solo incluye variables de entorno para los proveedores que necesites. Omite env por completo para proveedores solo gratuitos.
Claude Code (CLI)
claude mcp add sports-hub node /absolute/path/to/mcp-sports-hub/dist/index.js
O en .claude/settings.json:
{
"mcpServers": {
"sports-hub": {
"command": "node",
"args": ["/absolute/path/to/mcp-sports-hub/dist/index.js"],
"env": {
"PANDASCORE_TOKEN": "your-token"
}
}
}
}
Filtrado de proveedores
De forma predeterminada, solo se carga el preset gratuito (19 proveedores, ~165 herramientas, sin necesidad de claves de API). Usa SPORTS_HUB_PROVIDERS para cambiar lo que se carga:
# Default — free providers only (no config needed)
npx mcp-sports-hub
# Load ALL 41 providers (396 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 | Proveedores | Herramientas | ¿Necesita claves? |
|---|---|---|---|
free (predeterminado) | 19 proveedores sin clave (espn, nhl, mlb, f1, openf1, openliga, sportsdb, ncaa, sportsrc, lichess, chesscom, squiggle, motogp, formulae, nascar, opendota, sleeper, euroleague, footballdatauk) | ~165 | No |
all | los 41 proveedores | 396 | Sí (para proveedores que requieren clave) |
chess | lichess, chesscom | 14 | No |
us-major | espn, nhl, mlb, ncaa, cfbd, bdl, msf, nascar, sleeper | ~93 | Algunas |
soccer | espn, apifootball, footballdata, sportmonks, openliga, sportsrc, footballdatauk, highlightly | ~73 | Algunas |
f1 | f1, openf1 | 25 | No |
motorsport | f1, openf1, motogp, formulae, nascar | ~42 | No |
esports | pandascore, opendota | 25 | Algunas |
odds | odds, oddsio, sgo | 29 | Sí |
cricket | cricket, entitycricket | 22 | Sí |
golf | livegolf, golfcourse | 14 | Algunas |
Caché
Todas las respuestas GET se almacenan en caché en memoria durante 60 segundos de forma predeterminada. Esto protege contra llamadas duplicadas y desperdicio de límites de tasa. Configura con:
SPORTS_HUB_CACHE_TTL=120 # seconds (0 to disable)
En la configuración de Claude Desktop:
"env": {
"SPORTS_HUB_PROVIDERS": "us-major",
"THE_ODDS_API_KEY": "your-key"
}
Nomenclatura de herramientas
Todas las herramientas siguen {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)
Recursos y prompts de MCP
Además de las herramientas, el servidor expone:
Recursos (catálogos legibles, sin llamada a API):
sportshub://providers— el catálogo completo de proveedores (prefijo, nombre, cobertura, clave requerida)sportshub://presets— todos los presets y los proveedores que cargansportshub://provider/{key}— detalles de un proveedor (con autocompletado de clave)
Prompts (flujos de trabajo de comandos de barra seleccionados sobre las 396 herramientas):
whats-on-today·compare-odds {event}·motorsport-weekend {series}·league-standings {league}·team-deep-dive {team}·f1-race {season} {round}
Todas las herramientas están anotadas con readOnly / idempotent para que los clientes puedan omitir los prompts de confirmación.
Arquitectura
src/
├── index.ts # Imports + registers all 41 providers
├── shared/
│ ├── http.ts # fetchJson, fetchText, buildUrl, toolResult, errorResult
│ ├── catalog.ts # provider catalog + presets (single source of truth)
│ ├── annotations.ts # central read-only annotations + titles
│ ├── 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
├── 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
Cada proveedor exporta register(server). Las claves se verifican en el momento de la llamada, no al inicio.
Contribuciones
- Haz un fork del repositorio
- Crea
src/providers/my-api.tsexportandoregister(server: McpServer) - Prefija los nombres de las herramientas:
myapi_get_something - Importa y llama en
src/index.ts npm run buildpara verificar- Envía un PR
Licencia
MIT