eliteprospects
CLI não oficial + servidor MCP para eliteprospects.com Recursos
Documentação
eliteprospects
Acesso não oficial aos dados de hóquei do eliteprospects.com — ligas, times, jogadores e equipe técnica — como saída estruturada em vez de HTML raspado.
Ele vem em duas formas apoiadas pelo mesmo núcleo TypeScript: uma ferramenta de linha de comando para navegar e pesquisar a partir do terminal (com --json para canalizar para outras ferramentas), e um servidor MCP que expõe as mesmas consultas a clientes MCP como o Claude. Sem chave de API e sem etapa de build.
Requisitos
- Bun >= 1.0 (executa TypeScript nativamente — sem etapa de build)
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 é a forma de encontrar um id para alimentar os outros comandos. Ele retorna uma coluna TYPE para que o id de um resultado possa ser usado com players, staff, teams ou leagues conforme apropriado. Para o caso comum de consultar uma única pessoa, players/staff também aceitam --search <name>, que executa a busca por você e renderiza o perfil quando há exatamente uma correspondência (gerando erro e listando os candidatos quando há várias).
Jogadores e equipe técnica são comandos separados porque são namespaces de id separados: o jogador 14739 e o membro da equipe 14739 são pessoas diferentes. Uma pessoa pode ter tanto um perfil de jogador quanto um de equipe técnica (por exemplo, Daniel Rasmussen é o jogador 16271 e o membro da equipe 14739), e cada perfil aponta para o outro em sua saída.
Servidor MCP
A mesma funcionalidade é exposta a clientes MCP (por exemplo, Claude) por bin/eliteprospects-mcp, um servidor Model Context Protocol que fala JSON-RPC 2.0 sobre stdio. Ele não tem dependências — o protocolo é implementado diretamente em src/mcp.ts.
Ferramentas:
| Ferramenta | Argumentos | Descrição |
|---|---|---|
search | query, type? | Buscar jogadores, equipe técnica, times e ligas por nome |
list_leagues | country? | Listar ligas, opcionalmente filtradas por código de país |
get_league | slug, season? | Metadados da liga, times, temporadas |
get_team | id, season? | Metadados do time e elenco |
get_player | id | Perfil do jogador |
get_staff | id | Perfil da equipe técnica |
Registre-o com um cliente MCP apontando para o launcher, por exemplo, em uma configuração mcpServers:
{
"mcpServers": {
"eliteprospects": {
"command": "bun",
"args": ["/absolute/path/to/eliteprospects/bin/eliteprospects-mcp"]
}
}
}
Veja também: https://coworkerai.io/guide/mcp-setup
Como funciona
EliteProspects é um site Next.js. Duas fontes de dados são usadas, ambas JSON estruturado em vez de HTML raspado:
- Páginas de índice (por exemplo,
/leagues) incorporam seus dados em uma tag<script id="__NEXT_DATA__">. Veja src/leagues.ts. - Páginas de detalhe (por exemplo,
/league/<slug>) ficam atrás de um desafio Cloudflare em sua forma renderizada, então buscamos o endpoint de dados do Next.js/_next/data/<buildId>/<route>.json, que retorna o mesmopagePropse não é desafiado. ObuildIdmuda a cada deploy, então é lido em tempo de execução da página/leaguesacessível e armazenado em cache. Veja src/client.ts e src/league.ts.
A busca usa um backend completamente diferente: a API de autocomplete do site em autocomplete.eliteprospects.com (a mesma que a caixa de busca do site usa). É um host separado, sem autenticação — não está atrás do desafio Cloudflare e não está sujeito aos limites de membros do formulário de busca do site. O endpoint /all retorna tipos mistos (cada um marcado com _type); /players, /staff, /teams e /leagues retornam cada um um único tipo. Veja src/search.ts.
As URLs de times, jogadores e equipe técnica carregam tanto um id quanto um slug (/team/42107/aalborg-u18, /player/8862/joe-sakic, /staff/14739/daniel-rasmussen). Uma requisição apenas pelo id faz um soft-redirect para o caminho canônico, que o scraper segue para descobrir o slug — então teams, players e staff funcionam apenas com o id numérico. Essa resolução id→slug vive em fetchEntityData (src/client.ts) e é compartilhada por src/team.ts e src/profile.ts.
Códigos de país
EliteProspects identifica países com códigos ISO 3166-1 alpha-3 (DNK). A saída e o filtro --country usam a forma mais universal alpha-2 (DK); ambas as formas são aceitas como entrada. As duas nações domésticas do Reino Unido que a EP lista separadamente — Inglaterra e Escócia — não são países ISO e não têm alpha-2, então mantêm os códigos de subdivisão ISO 3166-2 GB-ENG / GB-SCT (distintos de GB = Reino Unido). O mapeamento é uma tabela ISO embutida e verificada — veja src/countries.ts.
Estrutura do projeto
- bin/eliteprospects — launcher da CLI
- bin/eliteprospects-mcp — launcher do servidor MCP
- src/cli.ts — análise de comandos e formatação de saída
- src/mcp.ts — servidor MCP (Model Context Protocol)
- src/client.ts — busca HTTP (HTML + endpoint de dados do Next.js)
- src/nextData.ts — extração de
__NEXT_DATA__ - src/leagues.ts — analisador de lista de ligas
- src/league.ts — analisador de liga única
- src/team.ts — analisador de time único (metadados + elenco)
- src/profile.ts — analisadores de perfil de jogador e equipe técnica
- src/search.ts — busca de autocomplete
- src/countries.ts — conversão ISO alpha-3 ↔ alpha-2
- src/types.ts — tipos compartilhados
Desenvolvimento
bun install # install dev dependencies (TypeScript, @types/bun)
bun run typecheck