棒球数据查询服务器

Statcast MCP Server是一个基于模型上下文协议(MCP)的服务器,允许用户通过自然语言查询MLB Statcast数据,无需编码。

  • by alex-rimerman
  • Python
  • 本地部署
  • 36 星标
  • 更新于
在 GitHub 查看 alex-rimerman/statcast-mcp

使用说明

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 只有团队。

快速开始

先决条件

选项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

贡献

欢迎投稿!一些想法:

  • 添加更多工具(游戏分数、团队击球/投球、历史数据)
  • 提高玩家名称分辨率
  • 添加数据缓存以实现更快的重复查询
  • 为常见分析创建提示模板

许可证

麻省理工学院