NBA Player Stats
Fornece estatísticas abrangentes de jogadores da NBA do basketball-reference.com, incluindo estatísticas de carreira, comparações de temporadas e métricas avançadas.
Documentação
NBA Player Stats MCP Server
Um servidor focado do Model Context Protocol (MCP) que fornece estatísticas abrangentes de jogadores da NBA do basketball-reference.com. Este servidor é especializado em fornecer estatísticas detalhadas de jogadores, incluindo estatísticas de carreira, comparações de temporadas, métricas avançadas, estatísticas de arremessos e mais.
Sumário
- Recursos
- Início Rápido
- Instalação
- Uso
- Ferramentas Disponíveis
- Exemplos
- Correções do Scraper do Basketball Reference
- Guia de Desenvolvimento
- Problemas Conhecidos
- Contribuindo
- Licença
Recursos
Este servidor MCP fornece ferramentas especializadas de estatísticas de jogadores da NBA em três níveis de profundidade:
Nível 1: Estatísticas principais (Ferramentas 1-10)
- Estatísticas de carreira: Estatísticas completas de carreira com detalhamento temporada por temporada
- Estatísticas por temporada: Estatísticas detalhadas para temporadas específicas, incluindo playoffs
- Médias por jogo: Estatísticas tradicionais por jogo
- Estatísticas totais: Totais da temporada e da carreira (não médias)
- Por 36 minutos: Estatísticas por 36 minutos ajustadas ao ritmo
- Métricas avançadas: PER, TS%, WS, BPM, VORP e outras métricas de eficiência
- Comparações de jogadores: Comparações lado a lado entre dois jogadores
- Divisões de arremessos: Porcentagens de arremesso detalhadas e estatísticas de volume
- Desempenho nos playoffs: Estatísticas completas de playoffs com comparações com a temporada regular
- Destaques da carreira: Melhores temporadas, marcos e conquistas
Nível 2: Análise aprofundada (Ferramentas 11-17)
- Registros de jogos: Estatísticas jogo a jogo para análise detalhada
- Consultas de estatísticas específicas: Obtenha estatísticas individuais para qualquer temporada (ex.: "3P% de Steph em 2018")
- Prêmios e votação: Votações para MVP, DPOY e outros prêmios
- Estatísticas contra times: Desempenho de carreira contra times específicos
- Divisões mensais: Desempenho dividido por mês
- Estatísticas de clutch: Desempenho em jogos decididos e situações de pressão
- Detalhes dos playoffs: Desempenho nos playoffs ano a ano
Nível 3: Análise ultra-aprofundada (Ferramentas 18-23)
- Tendências de carreira: Progressão ano a ano e análise de declínio
- Recordes em jogos: Máximos de carreira, jogos de 40+ pontos, triplos-duplos
- Divisões situacionais: Casa/fora, dias de descanso, situações de vitória/derrota
- Estatísticas por quarto: Especialização no 4º quarto e desempenho em clutch
- Acompanhamento de marcos: Progresso em direção a recordes com projeções
- Rankings de todos os tempos: Onde os jogadores se posicionam na história da NBA
Recursos adicionais
- Fotos dos jogadores: URLs de fotos dos jogadores do basketball-reference.com
- Múltiplos tipos de estatísticas: PER_GAME, TOTALS, PER_MINUTE, PER_POSS, ADVANCED
- Dados históricos: Acesso a temporadas históricas e progressões de carreira
- 23 Ferramentas totais: Cobertura abrangente de todas as consultas possíveis de estatísticas de jogadores
Início Rápido
Instalar a partir do PyPI
pip install nba-player-stats-mcp
Instalar a partir do código-fonte
- Clone o repositório:
git clone https://github.com/ziyadmir/nba-player-stats-mcp
cd nba-player-stats-mcp
- Instale as dependências:
pip install -r requirements.txt
Executando o servidor
# If installed from PyPI
nba-player-stats-server
# If running from source
python src/server.py
Configurar o Claude Desktop
{
"mcpServers": {
"nba-player-stats": {
"command": "python",
"args": ["path/to/basketball/src/server.py"],
"cwd": "path/to/basketball"
}
}
}
Instalação
Pré-requisitos
- Python 3.8 ou superior
- Gerenciador de pacotes pip
Instalar a partir do PyPI
A maneira mais fácil de instalar o NBA Player Stats MCP Server:
pip install nba-player-stats-mcp
Instalar a partir do código-fonte
Para desenvolvimento ou para obter as últimas alterações:
- Clone o repositório:
git clone https://github.com/ziyadmir/nba-player-stats-mcp
cd nba-player-stats-mcp
- Crie um ambiente virtual (recomendado):
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
- Instale em modo de desenvolvimento:
pip install -e .
# Or with development dependencies
pip install -e ".[dev]"
Uso
Iniciando o servidor
# If installed from PyPI
nba-player-stats-server
# If running from source
python src/server.py
Exemplos de uso em Python
# Import the fix first
import fix_basketball_reference
from basketball_reference_scraper.players import get_stats
# Get LeBron's career per-game stats
stats = get_stats('LeBron James', stat_type='PER_GAME', ask_matches=False)
# Get specific season
stats_2023 = stats[stats['SEASON'] == '2022-23']
# Get playoff stats
playoff_stats = get_stats('LeBron James', stat_type='PER_GAME', playoffs=True, ask_matches=False)
Veja example_usage.py para exemplos mais abrangentes.
Ferramentas Disponíveis
1. get_player_career_stats
Obtenha estatísticas completas de carreira de um jogador da NBA.
Parâmetros:
player_name(string, obrigatório): O nome do jogador (ex.: "LeBron James")stat_type(string, opcional): Tipo de estatísticas - "PER_GAME", "TOTALS", "PER_MINUTE", "PER_POSS", "ADVANCED"
2. get_player_season_stats
Obtenha estatísticas para uma temporada específica.
Parâmetros:
player_name(string, obrigatório): O nome do jogadorseason(inteiro, obrigatório): Ano da temporada (ex.: 2023 para 2022-23)stat_type(string, opcional): Tipo de estatísticasinclude_playoffs(booleano, opcional): Incluir estatísticas de playoffs se disponíveis
3. get_player_advanced_stats
Obtenha estatísticas avançadas (PER, TS%, WS, BPM, VORP, etc.).
Parâmetros:
player_name(string, obrigatório): O nome do jogadorseason(inteiro, opcional): Temporada específica, ou None para todas as temporadas
4. get_player_per36_stats
Obtenha estatísticas por 36 minutos (ajustadas ao ritmo).
Parâmetros:
player_name(string, obrigatório): O nome do jogadorseason(inteiro, opcional): Temporada específica, ou None para todas as temporadas
5. compare_players
Compare estatísticas entre dois jogadores da NBA.
Parâmetros:
player1_name(string, obrigatório): Nome do primeiro jogadorplayer2_name(string, obrigatório): Nome do segundo jogadorstat_type(string, opcional): Tipo de estatísticas para compararseason(inteiro, opcional): Temporada específica, ou None para comparação de carreira
6. get_player_shooting_splits
Obtenha estatísticas detalhadas de arremessos e divisões.
Parâmetros:
player_name(string, obrigatório): O nome do jogadorseason(inteiro, opcional): Temporada específica, ou None para estatísticas de carreira
7. get_player_totals
Obtenha estatísticas totais (não médias).
Parâmetros:
player_name(string, obrigatório): O nome do jogadorseason(inteiro, opcional): Temporada específica, ou None para totais de carreira
8. get_player_playoff_stats
Obtenha estatísticas de playoffs com comparação com a temporada regular.
Parâmetros:
player_name(string, obrigatório): O nome do jogadorstat_type(string, opcional): Tipo de estatísticas
9. get_player_headshot_url
Obtenha a URL da foto do jogador no basketball-reference.com.
Parâmetros:
player_name(string, obrigatório): O nome do jogador
10. get_player_career_highlights
Obtenha destaques e conquistas da carreira.
Parâmetros:
player_name(string, obrigatório): O nome do jogador
Nível 2: Ferramentas de Análise Aprofundada
11. get_player_game_log
Obtenha estatísticas jogo a jogo para uma temporada específica.
Parâmetros:
player_name(string, obrigatório): O nome do jogadorseason(inteiro, obrigatório): Ano da temporada (ex.: 2024)playoffs(booleano, opcional): Se deseja obter registros de jogos dos playoffsdate_from(string, opcional): Data de início no formato 'YYYY-MM-DD'date_to(string, opcional): Data de término no formato 'YYYY-MM-DD'
12. get_player_specific_stat
Obtenha uma estatística específica de um jogador em uma determinada temporada. Perfeito para responder perguntas como "Qual foi o 3P% de Steph em 2018?"
Parâmetros:
player_name(string, obrigatório): O nome do jogadorstat_name(string, obrigatório): A estatística específica (ex.: "PTS", "3P%", "PER")season(inteiro, obrigatório): Ano da temporada
13. get_player_vs_team_stats
Obtenha estatísticas de carreira contra um time específico.
Parâmetros:
player_name(string, obrigatório): O nome do jogadorteam_abbreviation(string, obrigatório): Código do time (ex.: "GSW", "LAL")stat_type(string, opcional): Tipo de estatísticas
14. get_player_awards_voting
Obtenha histórico de prêmios e votações.
Parâmetros:
player_name(string, obrigatório): O nome do jogadoraward_type(string, opcional): "MVP", "DPOY", "ROY", "SMOY", "MIP"
15. get_player_monthly_splits
Obtenha estatísticas divididas por mês.
Parâmetros:
player_name(string, obrigatório): O nome do jogadorseason(inteiro, obrigatório): Ano da temporadamonth(string, opcional): Mês específico ou None para todos
16. get_player_clutch_stats
Obtenha desempenho em situações de clutch.
Parâmetros:
player_name(string, obrigatório): O nome do jogadorseason(inteiro, opcional): Temporada específica ou None para carreira
17. get_player_playoffs_by_year
Obtenha estatísticas detalhadas de playoffs para um ano específico.
Parâmetros:
player_name(string, obrigatório): O nome do jogadorseason(inteiro, obrigatório): Ano da temporada
Nível 3: Ferramentas de Análise Ultra-Aprofundada
18. get_player_career_trends
Analise tendências e progressão de carreira, incluindo mudanças ano a ano e padrões de declínio/melhora.
Parâmetros:
player_name(string, obrigatório): O nome do jogadorstat_name(string, opcional): A estatística para analisar tendências (padrão: "PTS")window_size(inteiro, opcional): Anos para média móvel (padrão: 3)
19. get_player_game_highs
Obtenha recordes de carreira e performances marcantes (jogos de 40+ pontos, 50+ pontos, triplos-duplos).
Parâmetros:
player_name(string, obrigatório): O nome do jogadorthreshold_points(inteiro, opcional): Limiar de pontos para jogos de alta pontuação (padrão: 40)include_triple_doubles(booleano, opcional): Se deseja estimar jogos de triplo-duplo
20. get_player_situational_splits
Obtenha divisões de desempenho situacional, incluindo casa/fora, dias de descanso e situações de vitória/derrota.
Parâmetros:
player_name(string, obrigatório): O nome do jogadorseason(inteiro, opcional): Temporada específica ou None para carreirasplit_type(string, opcional): "home_away", "rest_days", "monthly", "win_loss"
21. get_player_quarter_stats
Obtenha desempenho quarto a quarto, especialmente do 4º quarto e prorrogação.
Parâmetros:
player_name(string, obrigatório): O nome do jogadorseason(inteiro, opcional): Temporada específica ou None para carreiraquarter(string, opcional): "1st", "2nd", "3rd", "4th", "OT" ou "all"
22. get_player_milestone_tracker
Acompanhe o progresso em direção a marcos de carreira com projeções de conquista.
Parâmetros:
player_name(string, obrigatório): O nome do jogadormilestone_type(string, opcional): "points", "assists", "rebounds", "3pm", "games"
23. get_player_rankings
Obtenha rankings de todos os tempos para um jogador em várias categorias.
Parâmetros:
player_name(string, obrigatório): O nome do jogadorcategory(string, opcional): "points", "assists", "rebounds", "3pm", "steals", "blocks"
Exemplos
Aqui estão algumas perguntas de exemplo que este servidor MCP pode responder:
Consultas básicas (Nível 1)
- Visão geral da carreira: "Quais são as estatísticas de carreira de LeBron James?"
- Comparação de temporadas: "Como Stephen Curry se saiu na temporada de 2016?"
- Comparação de jogadores: "Compare as estatísticas de carreira de Michael Jordan e LeBron James"
- Análise de arremessos: "Quais são as porcentagens de arremesso de carreira de Steph Curry?"
- Métricas avançadas: "Qual foi o PER de Nikola Jokić em 2023?"
- Desempenho nos playoffs: "Como as estatísticas de Kawhi Leonard nos playoffs se comparam à temporada regular?"
- Marcos de carreira: "Quais são os destaques de carreira de Kareem Abdul-Jabbar?"
- Estatísticas por 36 minutos: "Quais são as estatísticas por 36 minutos de Giannis Antetokounmpo?"
Consultas de análise aprofundada (Nível 2)
- Estatística específica: "Qual foi a porcentagem de 3 pontos de Steph Curry em 2018?"
- Consulta de pontos: "Quantos pontos Stephen Curry teve em média em 2024?"
- Prêmios: "Onde LeBron James terminou na votação de MVP em 2020?"
- Registros de jogos: "Mostre-me o registro de jogos de Damian Lillard nos playoffs de 2021"
- Contra times: "Quais são as estatísticas de carreira de Kevin Durant contra os Lakers?"
- Mensal: "Como Jayson Tatum se saiu em dezembro de 2023?"
- Clutch: "Quais são as estatísticas de clutch de Kyrie Irving na carreira?"
- Ano de playoffs: "Como Jimmy Butler se saiu nos playoffs de 2020?"
Consultas de Análise Ultra-Profunda (Camada 3)
- Tendências de Carreira: "O LeBron James está em declínio com a idade?"
- Jogos Marcantes: "Quantos jogos de 40 pontos Kevin Durant tem?"
- Casa/Fora: "Como Joel Embiid se sai em casa vs fora?"
- 4º Quarto: "Qual é a média de pontos de Luka Dončić nos 4ºs quartos?"
- Acompanhamento de Marcos: "Quando LeBron vai passar dos 40.000 pontos?"
- Rankings de Todos os Tempos: "Onde Steph Curry está no ranking de todos os tempos em cestas de 3 pontos?"
- Situacional: "Como Giannis se sai em jogos consecutivos (back-to-backs)?"
- Detalhamento por Quarto: "Qual porcentagem dos pontos de Dame vem no 4º quarto?"
Explicações dos Tipos de Estatística
- PER_GAME: Médias tradicionais por jogo (pontos, rebotes, assistências, etc.)
- TOTALS: Estatísticas totais para uma temporada ou carreira
- PER_MINUTE: Estatísticas por 36 minutos (normalizadas pelo tempo de jogo)
- PER_POSS: Estatísticas por 100 posses de bola (normalizadas pelo ritmo)
- ADVANCED: Métricas avançadas (PER, TS%, WS, BPM, VORP, etc.)
Glossário de Estatísticas Principais
- PER: Player Efficiency Rating (Avaliação de Eficiência do Jogador)
- TS%: True Shooting Percentage (Porcentagem de Arremesso Real)
- WS: Win Shares (Participações em Vitórias)
- BPM: Box Plus/Minus (Box Mais/Menos)
- VORP: Value Over Replacement Player (Valor sobre o Jogador Substituto)
- eFG%: Effective Field Goal Percentage (Porcentagem Efetiva de Arremessos de Quadra)
- USG%: Usage Rate (Taxa de Uso)
- ORtg: Offensive Rating (Avaliação Ofensiva - pontos por 100 posses)
- DRtg: Defensive Rating (Avaliação Defensiva - pontos permitidos por 100 posses)
- 3P%: Porcentagem de Cestas de Três Pontos
- FT%: Porcentagem de Lances Livres
- AST%: Porcentagem de Assistências
- REB%: Porcentagem de Rebotes
Correções do Scraper do Basketball Reference
Importante: A biblioteca basketball_reference_scraper tem problemas de compatibilidade com a estrutura atual do site basketball-reference.com. Este servidor inclui correções automáticas para esses problemas.
Problemas Corrigidos
-
Mudanças nos IDs das Tabelas: O Basketball Reference atualizou os IDs das tabelas HTML
per_game→per_game_statstotals→totals_statsper_minute→per_minute_stats
-
Compatibilidade com Pandas: Corrigidos avisos de depreciação com
pd.read_html() -
Tratamento de Erros: Melhor tratamento de dados ausentes e casos extremos
As correções são aplicadas automaticamente quando o servidor inicia via o módulo fix_basketball_reference.py.
Detalhes Completos da Correção
A correção envolve a atualização do arquivo basketball_reference_scraper/players.py:
-
Adicionar importação de StringIO (após a importação do BeautifulSoup):
from io import StringIO -
Atualizar o mapeamento de IDs de tabela (na função
get_stats):# Map old table IDs to new ones table_id_map = { 'per_game': 'per_game_stats', 'totals': 'totals_stats', 'per_minute': 'per_minute_stats', 'per_poss': 'per_poss_stats', 'advanced': 'advanced' } -
Corrigir a depreciação do pandas read_html:
# Replace: df = pd.read_html(table)[0] df = pd.read_html(StringIO(table))[0] -
Tratar a linha de Carreira ausente:
career_rows = df[df['SEASON']=='Career'].index if len(career_rows) > 0: career_index = career_rows[0] # ... rest of logic
Para contribuir com essas correções de volta à biblioteca original, veja a seção Contribuindo.
Guia de Desenvolvimento
Configurando o Ambiente de Desenvolvimento
-
Criar ambiente virtual:
python -m venv venv source venv/bin/activate -
Instalar dependências:
pip install -r requirements.txt
Testes
# Run all tests
pytest
# Run with coverage
pytest --cov=src --cov-report=html
# Run specific test
pytest tests/test_integration.py -v
Testes Manuais
Teste o módulo de correção:
python example_usage.py
Casos de Teste Comuns
-
Variações de Nome do Jogador:
- Correspondência exata: "LeBron James" ✓
- Sensibilidade a maiúsculas: "lebron james" ✗
- Nomes parciais: "LeBron" ✗
-
Casos Extremos:
- Jogadores aposentados
- Jogadores sem experiência em playoffs
- Jogadores históricos (pré-1973 para estatísticas avançadas)
Diretrizes de Estilo de Código
- Estilo Python: Siga o PEP 8
- Tratamento de Erros: Sempre capture exceções específicas
- Processamento de Dados: Verifique se há resultados vazios antes de acessar
Estendendo o Servidor
Para adicionar novas ferramentas:
-
Crie a função em
server.py:@mcp.tool() async def get_player_new_stat( player_name: str, **kwargs ) -> Dict[str, Any]: """Tool description""" try: # Implementation pass except Exception as e: logger.error(f"Error: {e}") return {"error": str(e)} -
Teste completamente com vários jogadores
-
Atualize este README com a documentação da nova ferramenta
Problemas Conhecidos
Funcionalidades em Funcionamento ✅
- Todas as ferramentas de estatísticas de jogadores funcionam corretamente com as correções aplicadas
- URLs de fotos dos jogadores funcionam de forma confiável
Limitações ⚠️
-
Nomes de Jogadores: Devem corresponder exatamente ao formato do basketball-reference.com
- ✓ "LeBron James"
- ✗ "Lebron" ou "lebron james"
-
Dados Históricos: Alguns recursos podem ter dados limitados para temporadas mais antigas
- Estatísticas avançadas não disponíveis antes de 1973-74
- Algumas estatísticas de arremessos ausentes para carreiras iniciais
-
Limitações da Biblioteca: A
basketball_reference_scrapersubjacente tem:- Sem manutenção ativa
- Tratamento de erros inconsistente
- Documentação limitada
Solução de Problemas
Erro "Nenhuma tabela encontrada"
- Causa: Estrutura do site mudou
- Correção: Aplicada automaticamente pelo fix_basketball_reference.py
Jogador Não Encontrado
- Causa: Formato de nome incorreto
- Solução: Use nomes exatos do basketball-reference.com
Resultados Vazios
- Causa: O jogador não tem estatísticas para o tipo/temporada solicitado
- Solução: Verifique o período de carreira do jogador e a disponibilidade de estatísticas
Testes
Execute a suíte de testes:
# Install development dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Run with coverage
pytest --cov=src --cov-report=html
Contribuindo
- Faça um fork do repositório
- Crie sua branch de funcionalidade (
git checkout -b feature/amazing-feature) - Faça commit das suas alterações (
git commit -m 'Add some amazing feature') - Envie para a branch (
git push origin feature/amazing-feature) - Abra um Pull Request
Contribuindo com Correções para o basketball_reference_scraper
Para contribuir com nossas correções de volta à biblioteca original:
- Faça um fork: https://github.com/vishaalagartha/basketball_reference_scraper
- Aplique as alterações de
fix_basketball_reference.py - Teste completamente com vários jogadores
- Envie o PR: "Corrigir análise de tabelas para a estrutura atualizada do basketball-reference.com"
Changelog
Versão 0.3.0 (Mais Recente)
- Adicionadas ferramentas de análise ultra-profunda da Camada 3 (6 novas ferramentas)
- Análise de tendências de carreira com progressão ano a ano
- Recordes de jogos e acompanhamento de marcos (jogos de 40+ pontos, triplos-duplos)
- Divisões situacionais (casa/fora, dias de descanso, vitórias/derrotas)
- Análise de desempenho por quarto
- Projeções de marcos e rankings de todos os tempos
- Agora inclui 23 ferramentas no total em 3 camadas
Versão 0.2.0
- Adicionadas ferramentas de análise profunda da Camada 2 (7 novas ferramentas)
- Logs de jogos e consultas de estatísticas específicas
- Suporte a prêmios e histórico de votação
- Estatísticas de confrontos entre equipes
- Divisões mensais e temporais
- Métricas de desempenho em momentos decisivos
- Análise aprimorada de playoffs ano a ano
Versão 0.1.0
- Lançamento inicial com 10 ferramentas principais de estatísticas de jogadores
- Correções de compatibilidade com basketball-reference.com
- Estatísticas de carreira, temporada e avançadas
Licença
Este projeto é licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.
Agradecimentos
- Dados obtidos de basketball-reference.com
- Construído usando a biblioteca basketball_reference_scraper
- Implementa o Model Context Protocol
- Usa o framework FastMCP
Suporte
Para problemas e solicitações de recursos, use o rastreador de problemas do GitHub.