eliteprospects
CLI no oficial + servidor MCP para eliteprospects.com Recursos
Documentación
eliteprospects
Acceso no oficial a los datos de hockey de eliteprospects.com — ligas, equipos, jugadores y personal — como salida estructurada en lugar de HTML extraído.
Se presenta en dos formas respaldadas por el mismo núcleo TypeScript: una herramienta de línea de comandos para navegar y buscar desde la terminal (con --json para canalizar a otras herramientas), y un servidor MCP que expone las mismas búsquedas a clientes MCP como Claude. Sin clave de API y sin paso de compilación.
Requisitos
- Bun >= 1.0 (ejecuta TypeScript de forma nativa — sin paso de compilación)
Uso
# List all leagues
./bin/eliteprospects leagues
# Filter by country — accepts a 2- or 3-letter code (DK or DNK)
./bin/eliteprospects leagues --country DK
# Machine-readable output
./bin/eliteprospects leagues --json
# Show a single league: metadata, teams, and available seasons
./bin/eliteprospects leagues denmark-u18
# A specific season
./bin/eliteprospects leagues denmark-u18 --season 2024-2025
# Show a team by id: metadata, roster, and available seasons
./bin/eliteprospects teams 42107
./bin/eliteprospects teams 42107 --season 2024-2025
# Show a player's profile by id (bio, draft, current team)
./bin/eliteprospects players 8862
# Look a player up by name instead of id (renders only on a single match)
./bin/eliteprospects players --search "connor mcdavid"
# Show a staff member's profile by id (role, current team)
./bin/eliteprospects staff 14739
# Staff can be looked up by name too
./bin/eliteprospects staff --search "daniel rasmussen"
# Search by name (across players, staff, teams, leagues)
./bin/eliteprospects search "connor mcdavid"
# Limit search to one type (--player, --staff, --team, --league)
./bin/eliteprospects search rasmussen --staff
# Help
./bin/eliteprospects help
search es la forma de encontrar un id para alimentar los demás comandos. Devuelve una columna TYPE para que el id de un resultado pueda usarse con players, staff, teams o leagues según corresponda. Para el caso común de buscar una persona, players/staff también aceptan --search <name>, que ejecuta la búsqueda por ti y muestra el perfil cuando hay exactamente una coincidencia (mostrando un error, y listando los candidatos, cuando hay varias).
Jugadores y personal son comandos separados porque son espacios de nombres de id separados: el jugador 14739 y el personal 14739 son personas diferentes. Una persona puede tener tanto un perfil de jugador como de personal (p. ej. Daniel Rasmussen es el jugador 16271 y el personal 14739), y cada perfil enlaza al otro en su salida.
Servidor MCP
La misma funcionalidad se expone a clientes MCP (p. ej. Claude) mediante bin/eliteprospects-mcp, un servidor del Model Context Protocol que habla JSON-RPC 2.0 sobre stdio. No tiene dependencias: el protocolo está implementado directamente en src/mcp.ts.
Herramientas:
| Herramienta | Argumentos | Descripción |
|---|---|---|
search | query, type? | Buscar jugadores, personal, equipos, ligas por nombre |
list_leagues | country? | Listar ligas, opcionalmente filtradas por código de país |
get_league | slug, season? | Metadatos de liga, equipos, temporadas |
get_team | id, season? | Metadatos de equipo y plantilla |
get_player | id | Perfil de jugador |
get_staff | id | Perfil de personal |
Regístralo con un cliente MCP apuntando al lanzador, p. ej. en una configuración de mcpServers:
{
"mcpServers": {
"eliteprospects": {
"command": "bun",
"args": ["/absolute/path/to/eliteprospects/bin/eliteprospects-mcp"]
}
}
}
Ver también: https://coworkerai.io/guide/mcp-setup
Cómo funciona
EliteProspects es un sitio Next.js. Se utilizan dos fuentes de datos, ambas JSON estructurado en lugar de HTML extraído:
- Páginas de índice (p. ej.
/leagues) incrustan sus datos en una etiqueta<script id="__NEXT_DATA__">. Ver src/leagues.ts. - Páginas de detalle (p. ej.
/league/<slug>) están detrás de un desafío de Cloudflare en su forma renderizada, así que en su lugar obtenemos el endpoint de datos de Next.js/_next/data/<buildId>/<route>.json, que devuelve el mismopagePropsy no está desafiado. ElbuildIdcambia en cada despliegue, por lo que se lee en tiempo de ejecución desde la página/leaguesaccesible y se almacena en caché. Ver src/client.ts y src/league.ts.
La búsqueda usa un backend completamente distinto: la API de autocompletado del sitio en autocomplete.eliteprospects.com (la misma que usa el cuadro de búsqueda del sitio). Es un host separado y sin autenticación — no está detrás del desafío de Cloudflare, ni sujeto a los límites de miembros del formulario de búsqueda del sitio. El endpoint /all devuelve tipos mixtos (cada uno etiquetado con _type); /players, /staff, /teams y /leagues devuelven cada uno un único tipo. Ver src/search.ts.
Las URL de equipo, jugador y personal llevan tanto un id como un slug (/team/42107/aalborg-u18, /player/8862/joe-sakic, /staff/14739/daniel-rasmussen). Una solicitud solo con el id redirige suavemente a la ruta canónica, que el scraper sigue para conocer el slug — así que teams, players y staff funcionan solo con el id numérico. Esta resolución id→slug vive en fetchEntityData (src/client.ts) y es compartida por src/team.ts y src/profile.ts.
Códigos de país
EliteProspects identifica los países con códigos ISO 3166-1 alpha-3 (DNK). La salida y el filtro --country usan la forma alpha-2 más universal (DK); ambas formas se aceptan como entrada. Las dos naciones del Reino Unido que EP lista por separado — Inglaterra y Escocia — no son países ISO y no tienen alpha-2, por lo que conservan los códigos de subdivisión ISO 3166-2 GB-ENG / GB-SCT (distintos de GB = R.U.). El mapeo es una tabla ISO incrustada y verificada — ver src/countries.ts.
Estructura del proyecto
- bin/eliteprospects — lanzador CLI
- bin/eliteprospects-mcp — lanzador del servidor MCP
- src/cli.ts — análisis de comandos y formato de salida
- src/mcp.ts — servidor MCP (Model Context Protocol)
- src/client.ts — obtención HTTP (HTML + endpoint de datos de Next.js)
- src/nextData.ts — extracción de
__NEXT_DATA__ - src/leagues.ts — analizador de lista de ligas
- src/league.ts — analizador de liga individual
- src/team.ts — analizador de equipo individual (metadatos + plantilla)
- src/profile.ts — analizadores de perfil de jugador y personal
- src/search.ts — búsqueda de autocompletado
- src/countries.ts — conversión ISO alpha-3 ↔ alpha-2
- src/types.ts — tipos compartidos
Desarrollo
bun install # install dev dependencies (TypeScript, @types/bun)
bun run typecheck