StatsPlus MCP服务器
一 主控程序 暴露的服务器 StatsPlus API 作为与Claude和其他MCP兼容客户端一起使用的工具。
先决条件
- Node.js 18+
- 与球队关联的StatsPlus联赛账户
安装
git clone https://github.com/joshuarichard/StatsPlus-MCP.git
cd StatsPlus-MCP
npm install
npm run build配置
获取会话cookie
StatsPlus API需要一个活动的浏览器会话。要获取您的cookie:
- 登录
https://statsplus.net/在浏览器中 - 打开DevTools(
Cmd+Option+I在Mac上,F12在Windows/Linux上) - 首选 应用 → Cookie →
https://statsplus.net - 复制
sessionid和csrftoken值并将它们组合起来:
sessionid=;csrftoken=添加到您的MCP客户端
将以下内容添加到MCP客户端配置中(例如。 ~/.claude/mcp.json 克劳德代码):
{
"mcpServers": {
"statsplus": {
"command": "node",
"args": ["/path/to/StatsPlus-MCP/dist/index.js"],
"env": {
"STATSPLUS_LEAGUE_URL": "",
"STATSPLUS_COOKIE": "sessionid=;csrftoken="
}
}
}替换:
/path/to/StatsPlus-MCP--克隆此仓库的绝对路径- `
--你所在联盟的URL标记(例如。myleague,mlb2025`) - `
--thesessionid` 浏览器中的cookie值 - `
--thecsrftoken` 浏览器中的cookie值
或者,使用Claude Code CLI:
claude mcp add statsplus \
-e STATSPLUS_LEAGUE_URL= \
-e "STATSPLUS_COOKIE=sessionid=;csrftoken=" \
-- node /path/to/StatsPlus-MCP/dist/index.js可用工具
| 工具 | 说明 | 参数 |
|---|---|---|
get_player_batting_stats | 球员击球统计 | year?, pid?, split? |
get_player_pitching_stats | 球员投球统计 | year?, pid?, split? |
get_player_fielding_stats | 按位置划分的球员防守统计数据 | year?, pid?, split? |
get_team_batting_stats | 球队击球统计数据和速率统计数据 | year?, split? |
get_team_pitching_stats | 球队投球统计数据和速率统计数据 | year?, split? |
get_players | 球员名单,包括姓名和球队分配 | team_id?, org_id? |
find_player | 按名称搜索玩家(部分,不区分大小写) | name |
start_ratings_job | 启动异步评级导出;回报 poll_url 立即 | -- |
get_ratings | 收集评分结果(通过 poll_url 以避免重新启动作业) | poll_url?, player_ids? |
get_game_history | 所有有得分、命中率、失误和投手ID的大联盟比赛 | -- |
get_contracts | 所有当前和活跃的玩家合约 | team_id?, player_id? |
get_contract_extensions | 已签署的续约将在未来赛季生效 | -- |
get_teams | 带有ID和缩写的团队列表 | -- |
get_draft | 选秀权 | lid? |
get_exports | CSV导出所有联赛 | -- |
拆分ID: 1 =总体而言, 2 =vs左手, 3 =vs右手
使用技巧
- 名称到ID解析: 使用
find_player(name)用于快速命名→ 无需下载完整名册即可查找ID。对于一个完整组织的玩家,使用get_players(org_id)通过以下方式过滤Parent Team ID.
- 评级工作流程: 评级导出是一个异步作业,需要60-90秒。为避免阻塞工作流程中的进程,请调用
start_ratings_job()首先,在处理过程中进行其他查找,然后调用get_ratings(poll_url)收集结果:
start_ratings_job() → { poll_url: "..." }
get_player_batting_stats(...) ← runs concurrently
get_contracts(team_id: ...)
get_ratings(poll_url: "...") → results ready, no extra wait召唤 get_ratings() 没有a poll_url 开始一个新作业并阻塞直到完成。评分栏包括击球属性(Cntct, Gap, Pow, Eye, Ks)对于L/R分割, Pot* 潜在对手和职位等级。关键编码注意事项:
- 星级评级存储为 stars × 2 --例如3.5颗星= 7,5星级= 10 - 国际复杂球员有 负面的 League 价值(例如。 -100) - 列名不能保证在OOTP版本之间稳定
- 前置原因/空响应: 在季前赛期间,所有统计端点都返回HTTP 204,没有来年的数据。总是通过
year=以获取数据。
- 实地考察:
get_player_fielding_stats每个玩家每个位置每次拆分返回一行。出现在多个位置的玩家将有多行——每行一行。
- 游戏历史:
runs0/hits0/errors0是主队;runs1/hits1/errors1是客队。winning_pitcher,losing_pitcher,starter0,以及starter1是数字玩家ID。save_pitcher是0当没有替补投手时。
- 合同:
salary0是当前赛季的工资,salary1是下个赛季,以此类推salary14人口稀少的年份0.is_major和no_trade是0/1整数。contract_team_id是持有合同的MLB组织(与team_id过滤器)。get_contract_extensions对已签署但尚未生效的交易使用相同的模式。
- 拆分: 所有接受
split参数使用1=总体而言,2=vs左手,3=vs右手。省略split返回每个玩家/团队的所有三行。
发展
npm run build # Compile TypeScript
npm test # Run tests
npm run test:watch # Run tests in watch mode
npm run lint # Type-check without emitting许可证
麻省理工学院
