使用说明
🏀 NBA MCP服务器
通过模型上下文协议访问全面的NBA统计数据
一种模型上下文协议(MCP)服务器,提供对NBA实时和历史数据的访问,包括球员统计数据、比赛得分、球队信息和高级分析。 v0.3.0:所有21个工具都接受人名(而不仅仅是ID),返回结构化数据+压缩文本,并将默认季节设置为当前季节。针对大型和小型LLM客户进行了优化。
Claude Desktop快速入门
- 安装服务器:
# 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
- 添加到您的Claude Desktop配置文件中:
MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
视窗: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"nba-stats": {
"command": "uvx",
"args": ["nba-stats-mcp"]
}
}
}
或者,如果您是从源代码安装的:
{
"mcpServers": {
"nba-stats": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/nba-stats-mcp/",
"run",
"nba-stats-mcp"
]
}
}
}
- 重新启动克劳德桌面
你可以问什么
- “给我看看今天的NBA比赛”
- “勒布朗·詹姆斯本赛季的数据如何?”
- “为湖人队对阵勇士队取得得分”
- “谁是本赛季得分最高的10人?”
- “向我展示历史助攻领先者”
- “凯尔特人队下一场比赛是什么时候?”
- “获取斯蒂芬·库里的投篮图表”
- “偏转的联盟领袖是谁?”
- “给我看看Giannis的职业奖”
可用工具(共21个)
所有工具均接受 人名 --不需要先解析ID。每个响应都包括结构化 data +紧凑型 text.
玩家工具
get_player_info(player)-玩家简介和详细信息(接受姓名或ID)get_player_stats(player, stat_type)-赛季、职业生涯、比赛日志、冲刺、防守或高级统计数据get_player_awards(player)-所有奖项和荣誉get_shooting_data(player, data_type)-射击图表或射击分段
团队工具
get_team_roster(team)-球队名单(接受球队名称或ID)get_team_advanced_stats(team)-团队效率指标(ORtg、DRtg、速度)get_schedule(team)-即将到来的游戏get_standings()-按会议划分的联赛排名
游戏工具
get_scoreboard(date?)-日期游戏(默认为今天)find_game(team1, team2?, date?)-按团队匹配查找game_idget_game_details(game_id)-包含球队统计数据的实时比赛信息get_box_score(game_id)-带球员统计数据的全框得分get_play_by_play(game_id)-使用时间戳逐个播放get_game_rotation(game_id)-球员轮换/替换数据
联盟工具
get_leaders(category, scope)-当前赛季、历史或喧嚣的领导者get_season_awards(season?)-赛季MVP和主要奖项
复合工具(v0.3.0中的新功能)
compare_players(player1, player2)-并排球员比较daily_summary(date?)-约会的所有游戏+分数team_overview(team)-名册+记录+即将到来的日程安排
分辨率工具
resolve_player_id(query)-将玩家姓名与ID进行模糊匹配resolve_team_id(query)-模糊匹配球队名称到ID
视觉资产(公共NBA CDN)
此MCP服务器也返回 公共NBA CDN资产URL (没有API键)以及多个工具响应中的ID,因此UI客户端可以呈现视觉效果。
- 球员头像:
- 全尺寸:
https://cdn.nba.com/headshots/nba/latest/1040x760/{playerId}.png - 缩略图:
https://cdn.nba.com/headshots/nba/latest/260x190/{playerId}.png
- 全尺寸:
- 团队徽标(SVG):
https://cdn.nba.com/logos/nba/{teamId}/global/L/logo.svg
包含这些URL的工具:
- 玩家:
resolve_player_id,get_player_info,get_player_stats - 团队:
resolve_team_id,get_standings,get_team_roster
安装选项
紫外线(推荐)
git clone https://github.com/labeveryday/nba-stats-mcp.git
cd nba-stats-mcp
uv sync
使用pip
pip install nba-stats-mcp
来源
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 .
与其他MCP客户端一起使用
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"]
)
))
独立运行(用于测试)
# If installed via pip/uvx (stdio, default)
nba-stats-mcp
# Or from source
uv run nba-stats-mcp
# or
python -m nba_mcp_server
流式HTTP传输(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检查员
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响应格式(v3.0)
所有工具返回a 单个JSON对象 (编码为MCP TextContent.text 字符串)。顶级架构是:
tool_name:运行的工具arguments:已传递参数text:简洁的1-3行摘要(干净--没有ID或CDN URL)data:具有所有机器可读值的结构化字典(用于编程的主要输出)entities:提取的ID+用于UI渲染的资源URL
视觉资产(公共NBA CDN)
服务器在中包含公共CDN URL(不需要API密钥) entities:
- 球员头像:
headshot_url:https://cdn.nba.com/headshots/nba/latest/1040x760/{playerId}.pngthumbnail_url:https://cdn.nba.com/headshots/nba/latest/260x190/{playerId}.png
- 团队徽标:
team_logo_url:https://cdn.nba.com/logos/nba/{teamId}/global/L/logo.svg
配置
日志记录级别
使用控制日志的冗长程度 NBA_MCP_LOG_LEVEL 环境变量(默认值:警告):
export NBA_MCP_LOG_LEVEL=INFO # For debugging
nba-stats-mcp
在Claude桌面配置中:
{
"mcpServers": {
"nba-stats": {
"command": "uvx",
"args": ["nba-stats-mcp"],
"env": {
"NBA_MCP_LOG_LEVEL": "INFO"
}
}
}
}
性能和可靠性调整
您可以通过env-vars调整请求行为(当代理执行并行工具调用时很有帮助):
NBA_MCP_HTTP_TIMEOUT_SECONDS:每次请求超时(默认值:30)NBA_MCP_MAX_CONCURRENCY:最大并发出站NBA API请求数(默认值:8)NBA_MCP_RETRIES:瞬态故障重试(429/5xx/网络)(默认值:2)NBA_MCP_CACHE_TTL_SECONDS:缓存统计端点的TTL(默认值:120)NBA_MCP_LIVE_CACHE_TTL_SECONDS:缓存活动端点的TTL(默认值:5)NBA_MCP_TLS_VERIFY:启用TLS验证(默认值:1).如果你看到PermissionError读取CA包(在沙盒/MOS隐私上下文中很常见),设置为0.
Claude桌面配置示例:
{
"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"
}
}
}
}
数据源
此服务器使用官方NBA API:
- 实时数据API -实时比分和比赛数据
- 统计API -球员统计数据、球队信息、历史数据
- 附表API -整个赛季时间表,包括未来的比赛
发展
运行测试
uv sync --all-extras
uv run pytest
uv run pytest --cov=nba_mcp_server --cov-report=html
代码质量
uv run ruff check src/
uv run ruff format src/
安全(土匪)
静态安全分析:
uv sync --all-extras
uv run bandit -c pyproject.toml -r src/
发布到PyPI
此项目使用Hatching进行构建。推荐的发布步骤:
# 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/*
提示:对于TestPyPI上传,请使用 twine upload --repository testpypi dist/*.
需求
- Python 3.10+
- mcp>=1.23.0
- httpx>=0.27.0
许可证
MIT许可证-有关详细信息,请参阅许可证文件。
贡献
欢迎投稿!请提交拉取请求。
关于作者
该项目由以下人员创建 杜安轻脚,一位对人工智能代理、云基础设施和公共教学充满热情的开发人员。
了解更多信息并连接:
- 🌐 网站: duanlightfoot.com
- 📺 油管 @实验室每天
- 🐙 github: @标签每天