棒球数据协议服务器

一个为MCP兼容的LLM提供实时MLB和MiLB棒球数据访问的无密钥服务器。

  • by JerrySievert
  • JavaScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 JerrySievert/mlb-mcp-server

使用说明

MLB MCP服务器

MCP(模型上下文协议)服务器,允许任何支持MCP的LLM通过免费的 MLB统计API (statsapi.mlb.com)。

不需要API密钥。 没有注册。没有速率限制键。它只是工作。

安装

npm install @jerrysv/mlb-mcp-server

或者直接使用npx运行:

npx @jerrysv/mlb-mcp-server

用法

将团队名称作为参数传递,以跟踪特定团队。服务器在启动时根据MLB Stats API模糊匹配名称。

# Generic mode — all tools work, no pre-configured teams
npx @jerrysv/mlb-mcp-server

# Track specific teams by name
npx @jerrysv/mlb-mcp-server mariners diamondbacks "hillsboro hops"

# Track by team ID
npx @jerrysv/mlb-mcp-server 136 109 419

# Track by abbreviation
npx @jerrysv/mlb-mcp-server SEA ARI

# Mix and match
npx @jerrysv/mlb-mcp-server mariners 109 "hillsboro hops"

球队名称是模糊匹配的,所以像“钻石背”或“Seattel Mariners”这样的拼写仍然可以正确解决。服务器将模糊匹配记录到stderr,以便您进行验证。

当团队被跟踪时,服务器会通过以下方式公开他们 get_tracked_teams 和 resolve_team 用于快速查找。没有团队参数,LLM仍然可以通过以下方式发现任何团队 get_all_mlb_teams.

你得到了什么

工具(22)

类别 工具
团队 get_tracked_teams, resolve_team, get_team_roster, get_all_mlb_teams, get_team_affiliates
玩家 find_player, get_player, search_player_on_team
游戏和时间表 get_games_today, get_games_by_date, get_team_schedule
实时游戏数据 get_game_feed, get_box_score, get_line_score, get_play_by_play
排名 get_standings
统计数据与领导者 get_player_stats, get_team_stats, get_team_leaders, get_league_leaders
交易 get_transactions
场馆 get_venues
季节和参考 get_current_season, get_sport_ids

资源(3)

资源 URI 描述
跟踪团队 mlb://tracked-teams 团队ID、缩写、别名、联赛和运动ID
团队缩写 mlb://team-abbreviations 快速参考跟踪的团队缩写和ID
运动ID mlb://sport-ids 联赛级别参考:1=MLB,11=AAA,12=AA,13=High-A等。

提示(3)

提示 参数 描述
团队概述 team (必填) 球队的名单、排名、最近的成绩和即将到来的赛程
游戏回顾 date, team (两个选项都是可选的) 详细的游戏回顾,包括分数、关键玩法和方框分数亮点
玩家报告 player (必填) 个人简介、本赛季统计数据、最近的表现和交易

先决条件

  • Node.js 18+ --检查一下 node --version

就是这样,不需要API密钥。

连接到克劳德代码

添加 ~/.claude.json 或一个项目 .mcp.json:

{
  "mcpServers": {
    "mlb": {
      "command": "npx",
      "args": [
        "@jerrysv/mlb-mcp-server",
        "mariners",
        "diamondbacks",
        "hillsboro hops"
      ]
    }
  }
}

或者没有跟踪的团队:

{
  "mcpServers": {
    "mlb": {
      "command": "npx",
      "args": ["@jerrysv/mlb-mcp-server"]
    }
  }
}

连接到其他MCP客户端

任何兼容MCP的客户端(Ollama+Open WebUI、LM Studio等)都可以使用此服务器。它通过以下方式进行通信 标准:

npx @jerrysv/mlb-mcp-server mariners

将客户端的MCP配置指向该命令。

通用团队ID

团队 ID 运动ID
西雅图水手队 136 1(美国职业棒球大联盟)
亚利桑那响尾蛇队 109 1(美国职业棒球大联盟)
纽约洋基队 147 1(美国职业棒球大联盟)
洛杉矶道奇队 119 1(美国职业棒球大联盟)
希尔斯伯勒啤酒花 419 13(高A)

使用 get_all_mlb_teams 或 get_sport_ids 发现任何团队。

工具参考

团队

  • get_tracked_teams --列出此服务器正在跟踪的球队,包括ID、缩写、别名和联赛信息。
  • resolve_team (team) --将模糊的团队名称或缩写解析为其规范信息。仅适用于被跟踪的团队。
  • get_team_roster (team_id, roster_type?) --为一支球队准备一份有效的名单。名册类型: active (默认), fullSeason, fullRoster, depthChart, coach.
  • get_all_mlb_teams (sport_id?) --列出一个联赛级别的所有球队。运动ID:1=MLB,11=AAA,12=AA,13=高A,14=单A。
  • get_team_affiliates (team_id) --为美国职业棒球大联盟球队获得小联盟附属机构。显示整个农场系统。

玩家

  • find_player (name, team?) --按名字搜索任何MLB/MiLB球员。返回个人ID、位置、团队和基本简介。这是查找玩家的最佳起点。
  • get_player (person_id, season?) --按个人ID获取球员的完整详细信息和赛季统计数据。
  • search_player_on_team (team_id, name) --在特定球队的名单中按名字搜索球员。

游戏和时间表

  • get_games_today (sport_id?) --获取今天安排的所有比赛,包括比分和状态。
  • get_games_by_date (date, sport_id?) --获取特定日期的所有游戏(YYYY-MM-DD格式)。
  • get_team_schedule (team_id, start_date?, end_date?, sport_id?) --获取球队即将到来或过去的比赛。默认为从开始日期算起14天。

实时游戏数据

  • get_game_feed (game_pk) --完整的比赛直播:得分、比赛、决定、比分、天气、可能的投手。
  • get_box_score (game_pk) --两支球队的击球、投球和防守统计数据。
  • get_line_score (game_pk) --一局接一局的跑动、击球和失误。
  • get_play_by_play (game_pk) --每场比赛都有完整的比赛,得分比赛突出显示,最后一场比赛总结。

排名

  • get_standings (season?) --目前美国职业棒球大联盟按赛区排名:胜、负、PCT、回赛、连胜。

统计数据与领导者

  • get_player_stats (person_id, season?) --球员的赛季统计数据(击球、投球、防守)。
  • get_team_stats (team_id, season?, group?) --汇总团队统计数据。组: hitting (默认)或 pitching.
  • get_team_leaders (team_id, season?, category?) --统计团队中的领导者。类别: homeRuns, battingAverage, earnedRunAverage, strikeouts等等。
  • get_league_leaders (category?, season?, stat_group?, limit?) --MLB范围内的统计领导者。类别: homeRuns, battingAverage, earnedRunAverage, strikeouts, wins, saves.

交易

  • get_transactions (team_id?, start_date?, end_date?) --最近的交易:交易、签约、征召、DFA、IL移动。默认为持续7天。

场馆

  • get_venues --关于美国职业棒球大联盟体育场和棒球场的信息。

季节和参考

  • get_current_season (season?) --赛季元数据:开始/结束日期、全明星赛、季后赛日期。
  • get_sport_ids --列出所有带有运动ID的联赛级别(MLB=1,AAA=11,AA=12,High-A=13等)。

示例对话

“今天有水手队的比赛吗?” --电话 get_games_today,然后过滤SEA

“跟我说说胡里奥·罗德里格斯” --电话 find_player("Julio Rodriguez") → 那么,人ID 677594 get_player(677594)

“给我看看水手名册” --电话 resolve_team("Mariners") → 那么,teamId为136 get_team_roster(136)

“D后卫本赛季表现如何?” --电话 get_standings,在NL West找到ARI

“希尔斯伯勒啤酒花队即将举行的比赛是什么?” --电话 get_team_schedule(419) 带有sportId 13

“给我看看亚利桑那州的农场系统” --电话 get_team_affiliates(109)

“给我777245游戏的得分” --电话 get_box_score(777245)

“谁在全垒打中领先美国职业棒球大联盟?” --电话 get_league_leaders(category: "homeRuns")

“最近水手队有什么交易吗?” --电话 get_transactions(team_id: 136)

安装程序(来源)

git clone <repo-url>
cd mlb
npm install
npm test
node src/index.js mariners diamondbacks

项目结构

mlb/
  src/
    index.js        — MCP server (tools, resources, prompts)
    api-client.js   — HTTP client for statsapi.mlb.com
    teams.js        — Dynamic tracked team registry and fuzzy resolver
    helpers.js      — Date formatting, text helpers
  test/
    api-client.test.js
    helpers.test.js
    teams.test.js
  package.json
  README.md

运行测试

npm test

87个测试,零外部依赖 @modelcontextprotocol/sdk.所有API客户端测试模拟 fetch --没有真正的网络呼叫。

许可证

麻省理工学院