Sports Hub

41 proveedores de API deportivas, 396 herramientas: puntuaciones, estadísticas, cuotas, esports, ajedrez, automovilismo y más.

Documentación

Sports Hub

Sports Hub MCP Server

npm version npm downloads CI License

41 Providers 396 Tools MCP Registry

macOS Linux Windows Node.js TypeScript

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.

Funciona con: Claude ChatGPT Cursor Windsurf Zed Continue Cline

Demostración

mcp-sports-hub demo

Resultados de la NBA, cuotas de la Premier League, H2H de tenis: todo desde un solo servidor MCP.

Compatibilidad

Plataformas

SOEstado
macOSCompatible
LinuxCompatible
WindowsCompatible

Clientes MCP

ClienteEstadoNotas
Claude DesktopCompatibleAplicación de escritorio de Anthropic
Claude Code (CLI)Compatibleclaude mcp add
CursorCompatibleMCP integrado
Windsurf (Codeium)CompatibleMCP integrado
Continue.devCompatibleAsistente de IA de código abierto
ClineCompatibleExtensión de VS Code
ZedCompatibleMCP integrado
ChatGPT DesktopCompatibleAplicación de escritorio de OpenAI
Gemini CLICompatibleCLI de Google
Cualquier cliente MCPCompatibleTransporte 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.

PrefijoProveedorCoberturaHerramientasNotas
espn_ESPNMás de 20 deportes10No oficial: puede fallar
nhl_NHL Web APINHL13No documentado pero estable
mlb_MLB Stats APIMLB/MiLB13Oficial, no documentado
f1_Jolpica F1Fórmula 1 (1950+)13Mantenido por la comunidad
openf1_OpenF1Telemetría en vivo de F112Solo fines de semana de carreras en vivo
openliga_OpenLigaDBFútbol alemán10Enfoque en la Bundesliga
sportsdb_TheSportsDBMás de 40 deportes13Clave de prueba automática, marcas de agua
ncaa_NCAA APIDeportes universitarios8Límite de 5 solicitudes/segundo
sportsrc_SportSRCFútbol, baloncesto, MMA + transmisiones7V1 gratis, V2 requiere clave de pago
lichess_LichessAjedrez (usuarios, mejores jugadores, transmisiones, puzzle diario)7~20 solicitudes/segundo/IP
chesscom_Chess.comAjedrez (perfiles, estadísticas, clubes, clasificaciones)7Limita las llamadas en paralelo
squiggle_SquiggleAFL (Liga Australiana de Fútbol)6Se requiere un User-Agent honesto
motogp_MotoGPMotoGP/Moto2/Moto3/MotoE7No oficial: puede fallar
formulae_Formula EFórmula E7No oficial: puede fallar
nascar_NASCARNASCAR Cup/Xfinity/Truck3Fuentes CDN no oficiales
opendota_OpenDotaAnálisis de Dota 21160 solicitudes/min, 50k/mes
sleeper_SleeperNFL fantasy10~1000 solicitudes/min
euroleague_EuroLeagueBaloncesto EuroLeague + EuroCup6Fuentes sin clave
footballdata_uk_Football-Data.co.ukResultados históricos de fútbol + cuotas2CSV, más de 25 ligas

Consejo: Usa SPORTS_HUB_PROVIDERS=free para 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.

PrefijoProveedorCoberturaHerramientasLímite gratuitoObtener clave
pandascore_PandaScoreEsports (13 títulos)141000 solicitudes/horaRegistrarse
apifootball_API-FootballFútbol (más de 960 ligas)15100 solicitudes/díaRegistrarse
apisports_API-Sports9 deportes10100 solicitudes/día/deporteRegistrarse
apitennis_API-TennisTenis (ATP/WTA/ITF)12100 solicitudes/díaRegistrarse
bdl_BallDontLieNBA/NFL/MLB/NHL10Nivel básicoRegistrarse
cricket_CricketDataCríquet10100 solicitudes/díaRegistrarse
entitycricket_Entity SportCríquet (más de 250 competiciones)12Plan gratuitoRegistrarse
footballdata_football-data.orgFútbol (12 ligas)1110 solicitudes/minRegistrarse
sportmonks_SportmonksFútbol123000 solicitudes/horaRegistrarse
sportsdata_SportsDataIO9 deportes121000 solicitudes/mesRegistrarse
odds_The Odds APICuotas de más de 70 deportes9500 solicitudes/mesRegistrarse
oddsio_Odds-API.ioCuotas de 34 deportes10Cuenta gratuitaRegistrarse
sgo_Sports Game OddsCuotas de más de 55 ligas10PruebaRegistrarse
mma_Fighting TomatoesMMA8200 solicitudes/mesRegistrarse
livegolf_Live Golf APIGolf (PGA/DP World)8Nivel gratuitoRegistrarse
isports_iSportsAPIFútbol/Baloncesto (Asia)10Nivel gratuitoRegistrarse
sportdevs_SportDevsRugby/Voleibol/Balonmano12PruebaRegistrarse
msf_MySportsFeedsNFL/NBA/MLB/NHL12Gratuito no comercialRegistrarse
golfcourse_GolfCourseAPIMás de 30,000 campos de golf6300 solicitudes/díaRegistrarse
cfbd_College Football DataFútbol americano universitario (NCAA)141000 solicitudes/mesRegistrarse
boxing_Boxing Data APIBoxeo profesional (peleadores/combates/títulos)8100 solicitudes/mesRegistrarse
highlightly_HighlightlyResúmenes de múltiples deportes + cuotas6100 solicitudes/díaRegistrarse

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. Establecer SPORTS_HUB_HOST=0.0.0.0 expone 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_ORIGINS debe 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=0 desactiva 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

PresetProveedoresHerramientas¿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)~165No
alllos 41 proveedores396Sí (para proveedores que requieren clave)
chesslichess, chesscom14No
us-majorespn, nhl, mlb, ncaa, cfbd, bdl, msf, nascar, sleeper~93Algunas
soccerespn, apifootball, footballdata, sportmonks, openliga, sportsrc, footballdatauk, highlightly~73Algunas
f1f1, openf125No
motorsportf1, openf1, motogp, formulae, nascar~42No
esportspandascore, opendota25Algunas
oddsodds, oddsio, sgo29
cricketcricket, entitycricket22
golflivegolf, golfcourse14Algunas

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 cargan
  • sportshub://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

  1. Haz un fork del repositorio
  2. Crea src/providers/my-api.ts exportando register(server: McpServer)
  3. Prefija los nombres de las herramientas: myapi_get_something
  4. Importa y llama en src/index.ts
  5. npm run build para verificar
  6. Envía un PR

Licencia

MIT