Statcast MCP服务器
A. MCP(模型上下文协议) 允许您查询的服务器 使用简明英语的MLB Statcast数据。向你的人工智能助手询问玩家、游戏、统计数据、排行榜等信息,无需编码。
建于 棒球,此服务器允许AI助手直接访问来自 棒球野蛮人, FanGraphs,以及 棒球参考.
你能问什么?
连接后,只需自然地与您的AI助手交谈:
- *“Aaron Judge在2024年7月是怎么打的?”*
- *“让我看看格里特·科尔本赛季的投球武器库”*
- *“2024年谁的出口速度最高?”*
- *“2023年底荷兰的排名是多少?”*
- *“找到最被低估的击球手——将xBA与实际BA进行比较”*
- *“整个洋基队阵容和五名先发球员的预期数据”* (使用
expected_stats_batch名称以逗号分隔) - *“现在谁是最快的棒球运动员?”*
- *“给我看看2024年7月4日洋基队红袜队比赛的每一个投球”*
AI会自动将您的问题转化为正确的数据查询。
示例:提示和响应
以下是使用Statcast MCP时典型交易所的样子:
提示
“格里特·科尔2023年的军火库统计数据是什么?”
回应
| 音高类型 | 用法 | 音高 | PA | BA | SLG | Whiff% | K% | 跑值/100 |
|---|---|---|---|---|---|---|---|---|
| 四缝快球 | 52.9% | 1737 | 427 | .202 | .333 | 23.0% | 28.3% | +1.7 |
| 滑块 | 20.8% | 683 | 175 | .186 | .251 | 32.7% | 29.1% | +1.4 |
| 曲线球 | 12.1% | 396 | 97 | .215 | .269 | 24.4% | 27.8% | +1.4 |
| 切割器 | 7.0% | 231 | 65 | .262 | .377 | 31.1% | 23.1% | +1.6 |
| 变化 | 7.1% | 233 | 54 | .235 | .510 | 28.6% | 13.0% | -1.3 |
*他的四连队快球是他的主要武器(使用率为52.9%),对阵时BA为.202,每100次投球得分为+1.7。这次改变是他唯一的负投球(-1.3分)。*
______________________________________________________________________
另一个提示
“2024年谁的出口速度最高?”
回应
*AI呼叫 statcast_batter_exitvelo_barrels(year=2024) 并重返排行榜——Aaron Judge以97.0英里/小时的平均出场速度和21.8%的投篮命中率领先,紧随其后的是(其他顶级击球手)。..*
______________________________________________________________________
可用工具
| 工具 | 它做什么 |
|---|---|
player_lookup | 查找任何玩家的ID、活跃年份和数据库链接(默认 10 排;最多 5000 如果许多模糊匹配) |
statcast_search | 日期范围内的逐音高数据(可选择按团队过滤);默认 100 间距排,最多 5000 |
statcast_batter | 特定击球手在日期范围内看到的每个投球(默认值 100 行,最多 5000) |
statcast_batter_pitch_arsenal | 按投球类型划分的击球数据(BA、SLG、wOBA vs快球、滑球等) |
statcast_pitcher | 特定投手在日期范围内投出的每个投球(默认值 100 行,最多 5000) |
season_batting_stats | 全赛季击球 FanGraphs (AVG、OPS、WAR、wRC+等)。 max_output_rows (默认值 50,最大值 5000),可选 sort_by / sort_descending 对于排行榜。如果FG失败, 单季 查询回退到 棒球参考. |
season_pitching_stats | FanGraphs的全赛季投球数据(ERA、FIP、K/9、WAR等);默认 50 行,最多 5000 通过 max_output_rows |
team_season_batting_stats | 团队 击球——完整阵容的实际统计数据(FG或BRef回退);默认 200 行,最多 5000 |
team_season_pitching_stats | 团队 投球-轮换+牛棚实际数据(FG或BRef回退);默认 200 行,最多 5000 |
statcast_batter_expected_stats | xBA、xSLG、xwOBA排行榜——谁 *值得* 更好的统计数据? |
statcast_pitcher_expected_stats | 投手允许的预期数据 |
expected_stats_batch | 预期统计数据 许多 击球手和/或投手 一 呼叫(排队、轮换) |
statcast_batter_exitvelo_barrels | 出口速度和桶率领先者 |
statcast_pitcher_exitvelo_barrels | 投手允许的退出速度和桶速 |
statcast_pitcher_pitch_arsenal | 音高组合分解(快球、滑球、曲线等百分比) |
statcast_pitcher_arsenal_stats | 每种投球类型的表现统计数据(吸气率、BA对抗等) |
sprint_speed_leaderboard | 棒球短跑速度最快的球员 |
team_standings | 任何赛季的分区排名(15 默认情况下,每个部门的团队表;可通过调节 max_output_rows,最大值 5000 每个部门) |
batter_percentile_ranks | 击球手的Statcast百分位数排名(退出速度、桶百分比、xwOBA等) |
pitcher_percentile_ranks | 投手的Statcast百分位数排名(填充、旋转、气味百分比等) |
outs_above_average | 按职位划分的防守型OAA排行榜(SS、CF、, ALL等等) |
outfield_directional_oaa | 按方向(后/内、左/右)列出的外场OAA |
batting_stats_date_range | 任何日期范围内的击球数据(棒球参考) |
pitching_stats_date_range | 任何日期范围内的投球统计数据(棒球参考) |
总共46个工具。 大多数表支持可选 max_output_rows (每个工具默认值:10/50/100/200/250——请参见 参考.md);值被固定到 5000 上面的最大核心表; 延长的 这些工具可以添加日程表、分段、拉赫曼历史、选秀/前景、战争文件、额外的Statcast防守/移动、联盟球队总数、单场比赛投球日志和击球手-投手对决摘要。呼叫 statcast_tool_directory 有关完整列表,请参阅 工具_总结.md 和 参考.md.
扩展工具(高级)
| 工具 | 它做什么 |
|---|---|
statcast_tool_directory | Markdown目录 全部 工具 |
team_schedule | 球队时间表和比分(棒球参考) |
player_stat_splits | BRef分裂(排、主场/客场……) |
statcast_game_pitches | 一场比赛中的每一个投球(game_pk) |
batter_vs_pitcher_statcast | 一名击球手与一名投手的Statcast总结 |
lahman_season_batting / lahman_season_pitching / lahman_season_teams | 拉赫曼/棒球数据库切片 |
top_prospects_mlb | MLB Pipeline风格的潜在客户列表 |
amateur_draft_round | 全年业余选秀 |
war_daily_batting / war_daily_pitching | BRef WAR组件文件 |
season_fielding_stats | FanGraphs部署排行榜 |
league_team_batting_totals / league_team_pitching_totals | FG球队阵容(全联盟) |
statcast_running_splits_detail | 90英尺短跑分段 |
statcast_outfield_catch_probability | OF捕获问题/星 |
statcast_outfield_jump | OF跳跃度量 |
statcast_catcher_framing / statcast_catcher_poptime | 捕手装帧和流行时间 |
statcast_pitcher_pitch_movement / statcast_pitcher_active_spin_leaderboard | 俯仰运动和主动旋转(Statcast) |
球队赛季: 使用 team_season_batting_stats / team_season_pitching_stats 带有3个字母的代码(PHI, NYY,…)以获得完整的名单 实际的 统计数据(阵容+工作人员)。首先尝试FanGraphs;如果FG失败或未返回任何结果,则使用棒球参考。
玩家搜索: 几乎每个排行榜/统计工具都接受可选功能 player_name (例如。 "Aaron Judge")因此,您可以获得该玩家的完整行,而不仅仅是表中的前50行。对于 群组 (完整阵容+轮换,“所有首发球员”),使用 expected_stats_batch 名称以逗号分隔——服务器会这样做 不 自动拉取MLB名单;明确列出名称或先解析名称(例如web/ player_lookup).音高工具已经通过以下方式命名 statcast_batter / statcast_pitcher. team_standings 只有团队。
快速开始
先决条件
- Python 3.10+ — 在这里下载 如果你没有
选项1:从PyPI安装(推荐)
# Using uv (fastest)
uv pip install statcast-mcp
# Or using pip
pip install statcast-mcp选项2:从源代码安装
git clone https://github.com/YOUR_USERNAME/statcast-mcp.git
cd statcast-mcp
uv pip install .设置
克劳德桌面版
将此添加到您的Claude Desktop配置文件中:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 视窗:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"statcast": {
"command": "statcast-mcp"
}
}
}如果您从源代码安装并希望直接运行它:
{
"mcpServers": {
"statcast": {
"command": "uv",
"args": ["run", "--directory", "/absolute/path/to/statcast-mcp", "statcast-mcp"]
}
}
}光标
打开 光标设置→ MCP 并添加新服务器:
- 名字:
statcast - 类型:
command - 命令:
statcast-mcp
或添加到您的 .cursor/mcp.json:
{
"mcpServers": {
"statcast": {
"command": "statcast-mcp"
}
}
}VS代码(副本)
添加到您的VS代码 settings.json:
{
"mcp": {
"servers": {
"statcast": {
"command": "statcast-mcp"
}
}
}
}查询示例
查找玩家
“抬头看大谷正平”
返回玩家的MLBAM ID、FanGraphs ID、棒球参考ID和活跃年份。
俯仰水平数据
“给我看看2024年10月15日道奇队比赛的所有投球”
statcast_search(start_date="2024-10-15", team="LAD")电池分析
“从2024年7月1日到7月31日,胡安·索托看到了什么投球?”
statcast_batter(player_name="Juan Soto", start_date="2024-07-01", end_date="2024-07-31")“Aaron Judge是如何在不同的球场类型上击球的?”(例如2023年,106场比赛)
statcast_batter_pitch_arsenal(year=2023, player_name="Aaron Judge")赛季排行榜
“谁是wRC+在2024年的顶级击球手?”
season_batting_stats(start_season=2024)“2023年击球前200名,最低100 PA”
season_batting_stats(
start_season=2023,
min_plate_appearances=100,
sort_by="SLG",
max_output_rows=200,
)预期统计数据(查找被低估的玩家)
“向我展示2024年预期数据远高于实际数据的击球手”
statcast_batter_expected_stats(year=2024)“Aaron Judge在2025年的预期数据与实际数据是什么?”
statcast_batter_expected_stats(year=2025, player_name="Aaron Judge")退出速度领导者
“2024年谁打的球最多?”
statcast_batter_exitvelo_barrels(year=2024)投手阿森纳
“Spencer Strider投出了什么球,它们有多有效?”
statcast_pitcher_pitch_arsenal(year=2024)
statcast_pitcher_arsenal_stats(year=2024)冲刺速度
“棒球运动中谁跑得最快?”
sprint_speed_leaderboard(year=2024)排名
“给我看看2024年美国职业棒球大联盟的排名”
team_standings(season=2024)百分位数排名和防御
“2024年Aaron Judge的Statcast百分位数排名是多少?”
batter_percentile_ranks(year=2024, player_name="Aaron Judge")“谁是2024年OAA最好的防守游击手?”
outs_above_average(year=2024, position="SS")热条纹(日期范围)
“2024年7月1日至7月31日,谁打得最好?”
batting_stats_date_range(start_date="2024-07-01", end_date="2024-07-31")数据源
所有数据来源于:
参考指南
有关详细的逐个工具文档、行限制、参数和使用模式,请参阅 参考.md.
社交/分享: 帖子的简短描述和标签创意在 工具_总结.md.
备注
- 日期范围:统计数据从2008年开始提供。一些指标(出口速度、发射角度)仅在2015年以后可用。
- 查询速度:日期范围越短,返回速度越快。对于音高数据,尽可能将范围保持在1-5天内。
- 速率限制:Baseball Savant将个人请求限制在约30000行。服务器自动处理拆分较大的查询。
- Markdown行显示:每个工具的markdown表的上限为
max_output_rows(默认值各不相同;硬最大值 5000 每 limits.py)因此,聊天客户端中的响应是有限的。 - 玩家姓名:工具接受“Mike Trout”、“Trout,Mike”或“Shohei Ohtani”等名称。服务器会自动将名称解析为MLB ID。
发展
# Clone the repo
git clone https://github.com/YOUR_USERNAME/statcast-mcp.git
cd statcast-mcp
# Create a virtual environment and install in editable mode
uv venv
uv pip install -e ".[dev]"
# Run the server locally
statcast-mcp
# Test with the MCP Inspector
npx @modelcontextprotocol/inspector statcast-mcp
# Smoke-test all 46 tools (needs network; ~2024 fixtures)
PYTHONPATH=src python scripts/verify_tools.py贡献
欢迎投稿!一些想法:
- 添加更多工具(游戏分数、团队击球/投球、历史数据)
- 提高玩家名称分辨率
- 添加数据缓存以实现更快的重复查询
- 为常见分析创建提示模板
许可证
麻省理工学院
