StatsPlus API服务

一个将StatsPlus API暴露为工具以供Claude和其他MCP兼容客户端使用的MCP服务器。

  • by joshuarichard
  • TypeScript
  • 本地部署
  • 5 星标
  • 更新于
在 GitHub 查看 joshuarichard/StatsPlus-MCP

使用说明

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:

  1. 登录 https://statsplus.net/<your-league-url> 在浏览器中
  2. 打开DevTools(Cmd+Option+I 在Mac上, F12 在Windows/Linux上)
  3. 首选 应用 → Cookie → https://statsplus.net
  4. 复制 sessionid 和 csrftoken 值并将它们组合起来:
    sessionid=<value>;csrftoken=<value>
    

添加到您的MCP客户端

将以下内容添加到MCP客户端配置中(例如。 ~/.claude/mcp.json 克劳德代码):

{
  "mcpServers": {
    "statsplus": {
      "command": "node",
      "args": ["/path/to/StatsPlus-MCP/dist/index.js"],
      "env": {
        "STATSPLUS_LEAGUE_URL": "<your-league-url>",
        "STATSPLUS_COOKIE": "sessionid=<sessionid>;csrftoken=<csrftoken>"
      }
    }
  }

替换:

  • /path/to/StatsPlus-MCP --克隆此仓库的绝对路径
  • <your-league-url> --你所在联盟的URL标记(例如。 myleague, mlb2025)
  • <sessionid> --the sessionid 浏览器中的cookie值
  • <csrftoken> --the csrftoken 浏览器中的cookie值

或者,使用Claude Code CLI:

claude mcp add statsplus \
  -e STATSPLUS_LEAGUE_URL=<your-league-url> \
  -e "STATSPLUS_COOKIE=sessionid=<sessionid>;csrftoken=<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=<most recent completed season> 以获取数据。

  • 实地考察: 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

许可证

麻省理工学院