nba-stats-mcp
Provides comprehensive NBA statistics via Model Context Protocol, enabling queries for player stats, game scores, team info, and advanced analytics through natural language.
README
🏀 NBA MCP Server
Access comprehensive NBA statistics via Model Context Protocol
A Model Context Protocol (MCP) server that provides access to live and historical NBA data including player stats, game scores, team information, and advanced analytics. v0.3.0: All 21 tools accept human names (not just IDs), return structured data + compact text, and default season to current. Optimized for both large and small LLM clients.
Quick Start with Claude Desktop
- Install the server:
# Using uvx (recommended - no install required)
uvx nba-stats-mcp
# Or using pip
pip install nba-stats-mcp
# Or from source
git clone https://github.com/labeveryday/nba-stats-mcp.git
cd nba-stats-mcp
uv sync
- Add to your Claude Desktop config file:
MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"nba-stats": {
"command": "uvx",
"args": ["nba-stats-mcp"]
}
}
}
Or if you installed from source:
{
"mcpServers": {
"nba-stats": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/nba-stats-mcp/",
"run",
"nba-stats-mcp"
]
}
}
}
- Restart Claude Desktop
What You Can Ask
- "Show me today's NBA games"
- "What are LeBron James' stats this season?"
- "Get the box score for Lakers vs Warriors"
- "Who are the top 10 scorers this season?"
- "Show me all-time assists leaders"
- "When do the Celtics play next?"
- "Get Stephen Curry's shot chart"
- "Who are the league leaders in deflections?"
- "Show me Giannis' career awards"
Available Tools (21 total)
All tools accept human names — no need to resolve IDs first. Every response includes structured data + compact text.
Player Tools
get_player_info(player)- Player bio and details (accepts name or ID)get_player_stats(player, stat_type)- Season, career, game log, hustle, defense, or advanced statsget_player_awards(player)- All awards and accoladesget_shooting_data(player, data_type)- Shot chart or shooting splits
Team Tools
get_team_roster(team)- Team roster (accepts team name or ID)get_team_advanced_stats(team)- Team efficiency metrics (ORtg, DRtg, pace)get_schedule(team)- Upcoming gamesget_standings()- League standings by conference
Game Tools
get_scoreboard(date?)- Games for a date (defaults to today)find_game(team1, team2?, date?)- Find game_id by team matchupget_game_details(game_id)- Live game info with team statsget_box_score(game_id)- Full box score with player statsget_play_by_play(game_id)- Play-by-play with timestampsget_game_rotation(game_id)- Player rotation/substitution data
League Tools
get_leaders(category, scope)- Current season, all-time, or hustle leadersget_season_awards(season?)- Season MVP and major awards
Composite Tools (new in v0.3.0)
compare_players(player1, player2)- Side-by-side player comparisondaily_summary(date?)- All games + scores for a dateteam_overview(team)- Roster + record + upcoming schedule
Resolution Tools
resolve_player_id(query)- Fuzzy match player name to IDresolve_team_id(query)- Fuzzy match team name to ID
Visual Assets (Public NBA CDN)
This MCP server also returns public NBA CDN asset URLs (no API key) alongside IDs in several tool responses, so UI clients can render visuals.
- Player headshots:
- Full size:
https://cdn.nba.com/headshots/nba/latest/1040x760/{playerId}.png - Thumbnail:
https://cdn.nba.com/headshots/nba/latest/260x190/{playerId}.png
- Full size:
- Team logos (SVG):
https://cdn.nba.com/logos/nba/{teamId}/global/L/logo.svg
Tools that include these URLs:
- players:
resolve_player_id,get_player_info,get_player_stats - teams:
resolve_team_id,get_standings,get_team_roster
Installation Options
With uv (recommended)
git clone https://github.com/labeveryday/nba-stats-mcp.git
cd nba-stats-mcp
uv sync
With pip
pip install nba-stats-mcp
From source
git clone https://github.com/labeveryday/nba-stats-mcp.git
cd nba-stats-mcp
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
pip install -e .
Usage with Other MCP Clients
Python/Strands
from mcp import stdio_client, StdioServerParameters
from strands.tools.mcp import MCPClient
mcp_client = MCPClient(lambda: stdio_client(
StdioServerParameters(
command="uvx",
args=["nba-stats-mcp"]
)
))
Running Standalone (for testing)
# If installed via pip/uvx (stdio, default)
nba-stats-mcp
# Or from source
uv run nba-stats-mcp
# or
python -m nba_mcp_server
Streamable HTTP Transport (new in v0.2.0)
# Run as an HTTP server instead of stdio
nba-stats-mcp --transport streamable-http --host 127.0.0.1 --port 8000
# Also supports SSE transport
nba-stats-mcp --transport sse --port 8000
MCP Inspector
npx @modelcontextprotocol/inspector
# In the Inspector UI, configure a stdio server:
# - Command: uv
# - Args: --directory /absolute/path/to/nba-stats-mcp run nba-stats-mcp
# (or Command: python, Args: -m nba_mcp_server)
JSON Response Format (v3.0)
All tools return a single JSON object (encoded as the MCP TextContent.text string). The top-level schema is:
tool_name: tool that ranarguments: arguments passedtext: compact 1-3 line summary (clean — no IDs or CDN URLs)data: structured dict with all machine-readable values (primary output for programmatic use)entities: extracted IDs + asset URLs for UI rendering
Visual Assets (Public NBA CDN)
The server includes public CDN URLs (no API key required) in entities:
- Player headshots:
headshot_url:https://cdn.nba.com/headshots/nba/latest/1040x760/{playerId}.pngthumbnail_url:https://cdn.nba.com/headshots/nba/latest/260x190/{playerId}.png
- Team logos:
team_logo_url:https://cdn.nba.com/logos/nba/{teamId}/global/L/logo.svg
Configuration
Logging Levels
Control logging verbosity with the NBA_MCP_LOG_LEVEL environment variable (default: WARNING):
export NBA_MCP_LOG_LEVEL=INFO # For debugging
nba-stats-mcp
In Claude Desktop config:
{
"mcpServers": {
"nba-stats": {
"command": "uvx",
"args": ["nba-stats-mcp"],
"env": {
"NBA_MCP_LOG_LEVEL": "INFO"
}
}
}
}
Performance & Reliability Tuning
You can tune request behavior (helpful when agents do parallel tool calls) via env vars:
NBA_MCP_HTTP_TIMEOUT_SECONDS: Per-request timeout (default:30)NBA_MCP_MAX_CONCURRENCY: Max concurrent outbound NBA API requests (default:8)NBA_MCP_RETRIES: Retries for transient failures (429 / 5xx / network) (default:2)NBA_MCP_CACHE_TTL_SECONDS: Cache TTL for stats endpoints (default:120)NBA_MCP_LIVE_CACHE_TTL_SECONDS: Cache TTL for live endpoints (default:5)NBA_MCP_TLS_VERIFY: TLS verification enabled (default:1). If you seePermissionErrorreading CA bundles (common in sandboxed/macOS privacy contexts), set to0.
Example Claude Desktop config:
{
"mcpServers": {
"nba-stats": {
"command": "uvx",
"args": ["nba-stats-mcp"],
"env": {
"NBA_MCP_LOG_LEVEL": "INFO",
"NBA_MCP_MAX_CONCURRENCY": "8",
"NBA_MCP_CACHE_TTL_SECONDS": "120",
"NBA_MCP_LIVE_CACHE_TTL_SECONDS": "5",
"NBA_MCP_RETRIES": "2",
"NBA_MCP_HTTP_TIMEOUT_SECONDS": "30"
}
}
}
}
Data Sources
This server uses official NBA APIs:
- Live Data API - Real-time scores and game data
- Stats API - Player stats, team info, historical data
- Schedule API - Full season schedule including future games
Development
Running Tests
uv sync --all-extras
uv run pytest
uv run pytest --cov=nba_mcp_server --cov-report=html
Code Quality
uv run ruff check src/
uv run ruff format src/
Security (Bandit)
Static security analysis:
uv sync --all-extras
uv run bandit -c pyproject.toml -r src/
Releasing to PyPI
This project uses Hatchling for builds. Recommended release steps:
# 1) Ensure clean env + tests
uv sync --all-extras
uv run pytest
uv run ruff check src/ tests/
uv run bandit -c pyproject.toml -r src/
# 2) Build distributions
uv run python -m build
# 3) Upload
uv run twine upload dist/*
Tip: for TestPyPI uploads, use twine upload --repository testpypi dist/*.
Requirements
- Python 3.10+
- mcp >= 1.23.0
- httpx >= 0.27.0
License
MIT License - see LICENSE file for details.
Contributing
Contributions welcome! Please submit a Pull Request.
About the Author
This project was created by Du'An Lightfoot, a developer passionate about AI agents, cloud infrastructure, and teaching in public.
Learn more and connect:
- 🌐 Website: duanlightfoot.com
- 📺 YouTube: @LabEveryday
- 🐙 GitHub: @labeveryday
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。