使用说明
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 677594get_player(677594)
“给我看看水手名册” --电话
resolve_team("Mariners")→ 那么,teamId为136get_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 --没有真正的网络呼叫。
许可证
麻省理工学院