运动建议MCP
你的对话式人工智能运动伙伴,告诉你现在要看什么。
🎯 问题: 你想看体育比赛,但你不知道有什么节目或什么值得看。现有的应用程序只显示时间表和分数,它们不了解你现在想看什么。 💡 解决方案: 体育建议MCP将克劳德变成你的个人体育顾问。讨论一下你的心情,并立即获得最佳游戏的推荐——现在直播或即将播出。
🔥 是什么让这与众不同
传统体育应用程序:
- 向您展示所有正在播放的内容
- 您必须手动浏览分数
- 不了解是什么让游戏令人兴奋
- 无法根据您的心情或喜好进行个性化设置
运动建议MCP+Claude:
- “现在给我看一些令人兴奋的东西”→ 克劳德分析分数差异和找到咬指甲者的剩余时间
- “我想要一场得分很高的比赛”→ 克劳德根据速度和总得分来建议进攻点球大战
- “给我找个有竞争力的游戏”→ 克劳德结合得分、剩余时间和团队质量进行推荐
- “今晚我该看什么?”→ 克劳德评论即将到来的比赛,并建议最好的比赛
- “哪个游戏有最好的玩家?”→ 克劳德检查 当前名册 寻找明星云集的比赛
真实对话示例
当前建议:
You: "What's the most exciting NFL game on right now?"
Claude: The Bengals-Jets game is your best bet - it's 38-32 with
4:36 left in the 4th quarter. That's a 6-point game with enough
time for a comeback, and the pace is insane at 17.5 points per
quarter. Plus it's on CBS.明星球员发现:
You: "Which NBA game should I watch if I want to see some star players?"
Claude: [Checks current rosters] The Bucks @ Cavaliers game has the
most star power right now. Giannis Antetokounmpo (2x MVP) is going
up against Donovan Mitchell and the Cavaliers. Both teams are
playing well and it's a close game at halftime (65-56).基于风格的发现:
You: "I want a defensive battle"
Claude: The Bucs-Saints game is perfect for you. It's 7-3 in the
3rd quarter with a pace of only 3.3 points per period. Both teams
are struggling to move the ball, and the Superdome crowd is into it.球员表现焦点:
You: "Any star performances happening right now?"
Claude: Yes! LaMelo Ball is putting on a show with 23 points already
and it's only the 2nd quarter. The Hornets are down 60-51 to the
Wizards but Ball is keeping them in it with his scoring and playmaking.🚀 为什么这还不存在
AI聊天机器人(ChatGPT、Claude、Gemini)无法访问实时体育数据。 他们完全无视:
- 现在有什么游戏
- 当前比分和比赛情况
- 实时玩家表演
- 游戏节奏和势头
- 哪些球员在哪支球队(由于交易和阵容变动)
ESPN、Roku和三星电视等应用程序会向您显示数据,但它们目前无法与您对话或了解您的偏好。
运动建议MCP弥合这一差距 -将克劳德的对话智能与ESPN的实时数据相结合,创造个性化的体育发现体验。
🛠️ 运作原理
Sport Suggest MCP为Claude提供了三个强大的工具,可以返回丰富的结构化数据。然后,克劳德通过对话分析这些数据,以了解你想看什么。
1. get_nfl_scores -直播和即将到来的NFL比赛
返回所有直播和即将到来的NFL比赛,并提供全面的背景。
丰富的数据包括:
- 分数和动量: 当前得分、得分差距、哪支球队领先
- 游戏状态: 季度,剩余时间,无论是直播还是即将播出
- 球员表现: 顶级QB(传球码,TD),顶级RB(冲球码,TDs),顶级WR(接球码,TDs)
- 背景: 团队记录、场地、出席情况、会议比赛旗帜
- 速度指标: 每个时期的得分,用于识别进攻性枪战与防守性战斗
- 逐季度评分: 查看每支球队在各个方面的得分情况
- 广播信息: 看哪个频道
克劳德可以这样回答:
- “最接近的游戏是什么?”→ 分析分数差异+剩余时间
- “给我看一场枪战”→ 查看速度(每个周期的分数)和总分数
- “有明星表演吗?”→ 评论QB/RB/WR的顶级统计数据
- “给我找一个好的团队配对”→ 比较团队记录
- “我在哪里可以看?”→ 返回广播频道
______________________________________________________________________
2. get_nba_scores -直播和即将到来的NBA比赛
返回所有直播和即将到来的NBA比赛,并提供全面的背景。
丰富的数据包括:
- 分数和动量: 当前得分、得分差距、哪支球队领先
- 游戏状态: 季度,剩余时间,无论是直播还是即将播出
- 球员表现: 得分最高的球员,得分/篮板/助攻数据线
- 背景: 团队记录、场地、出席情况、会议比赛旗帜
- 速度指标: 每季度点数,用于识别快节奏游戏与慢节奏游戏
- 逐季度评分: 跟踪所有季度的评分趋势
- 广播信息: 看哪个频道
克劳德可以这样回答:
- “给我找一场势均力敌的比赛”→ 按季度末的分数差进行筛选
- “有三双吗?”→ 查看统计线
- “给我看一场高分比赛”→ 分析速度和总分
- “最好的对抗游戏是什么?”→ 将团队素质与竞争力相结合
- “我在哪里可以看湖人队的比赛?”→ 返回广播信息
______________________________________________________________________
3. get_nba_rosters -当前NBA球队名单
返回所有NBA球队的最新名单,其中包含完整的球员信息。
丰富的数据包括:
- 完整名册: 每支NBA球队的所有球员
- 玩家详细信息: 球衣号码和位置
- 始终为最新: 反映最新的交易、签约和阵容变动
为什么这很重要:
NBA的球员名单会随着交易、自由球员和签约而不断变化。克劳德的训练数据很快就会过时。该工具确保克劳德始终掌握有关哪些球员在哪些球队的最新信息。
克劳德可以这样回答:
- “哪个游戏有最好的玩家?”→ 检查当前名册以查找明星匹配
- “勒布朗今晚会上场吗?”→ 核实当前团队名单
- “给我看一场年轻天才的比赛”→ 识别当前名册上的新星
- “哪支球队拥有最多的全明星球员?”→ 分析排班质量
它是如何工作的:
当你询问球员或明星实力时,克劳德会在提出建议之前自动检查当前的名单。这确保了准确性,即使在克劳德的训练数据中断后发生了重大的阵容变动。
🎯 个性化魔法
关键见解: 我们不会硬编码推荐。 相反,我们给克劳德提供了丰富的数据,让它通过对话来推理你想要什么。
个性化是如何自然产生的:
用户说: “我想要一些令人兴奋的东西”\ 克劳德的理由: _得分差距\20,早期游戏=背景观看_
用户说: “给我看一场明星球员下场的比赛”\ 克劳德的理由: _最佳得分手有40+分,或者QB有300+码和3次TD=明星表现_
用户说: “我想看好球队”\ 克劳德的理由: _两队都有获胜记录(>0.500)=高质量的对决_
用户说: “哪款游戏最有明星魅力?”\ 克劳德的理由: _\[检查名册\]→ 识别拥有多名全明星和MVP级别球员的游戏_
这种方法非常灵活——随着你的偏好在对话中的演变,Claude会在不更改任何代码的情况下进行调整。
🏗️ 项目结构
sport-suggest-mcp/
├── src/
│ └── sport_suggest_mcp/
│ ├── __init__.py
│ ├── server.py # MCP server setup & tool registration
│ └── tools.py # get_nfl_scores, get_nba_scores, get_nba_rosters
├── pyproject.toml # Python project configuration
└── README.md📡 ESPN API终点
本项目使用ESPN的非官方公开API(无需API密钥):
NFL记分牌:
https://site.api.espn.com/apis/site/v2/sports/football/nfl/scoreboardNBA记分牌:
https://site.api.espn.com/apis/site/v2/sports/basketball/nba/scoreboardNBA球队名单:
https://site.api.espn.com/apis/site/v2/sports/basketball/nba/teams
https://site.api.espn.com/apis/site/v2/sports/basketball/nba/teams/{team_id}/roster返回的数据包括:
- 实时比分和比赛状态(季度、剩余时间)
- 团队信息(姓名、记录、缩写)
- 统计负责人(每个团队的最佳表现者)
- 场地和广播细节
- 逐季度评分细分
- 完整的球队名单,包括球员位置和球衣号码
🚀 入门指南
先决条件
- Python 3.10+
- Claude桌面版
- uv(Python包安装程序)
安装
# Clone the repository
git clone https://github.com/yourusername/sport-suggest-mcp.git
cd sport-suggest-mcp
# Install with uv
uv pip install -e .配置
添加到您的Claude Desktop配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json\ 窗户: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"sport-suggest": {
"command": "uv",
"args": [
"--directory",
"/ABSOLUTE/PATH/TO/sport-suggest-mcp",
"run",
"sport-suggest-mcp"
]
}
}
}重要提示: 替换 /ABSOLUTE/PATH/TO/sport-suggest-mcp 使用项目目录的实际绝对路径。
重新启动Claude Desktop,您就可以开始发现游戏了!
💬 要尝试的示例查询
立即查找游戏
- “现在有哪些NFL比赛?”
- “给我看最激动人心的NBA比赛”
- “给我找一场势均力敌的足球赛”
- “得分最高的比赛是哪场?”
- “有人咬指甲吗?”
样式首选项
- “我想要一场防守战”
- “给我看一场进攻枪战”
- “给我找个快节奏的游戏”
- “我想看一场竞技比赛”
以玩家为中心✨ 通过名册数据增强
- “有明星表演吗?”
- “哪个游戏有最好的玩家?”← 使用当前名册
- “向我展示具有出色四分卫表现的游戏”
- “为了明星实力,我应该看哪场NBA比赛?”← 使用当前名册
- “现在有球员离开吗?”
- “吉安尼斯今晚有比赛吗?”← 检查当前名册
以团队为基础的
- “我应该看牛仔队的比赛吗?”
- “向我展示获胜球队的比赛”
- “给我找个好搭档”
- “有什么对抗赛吗?”
即将到来的游戏
- “今晚有什么NFL比赛?”
- “这个周末我应该看什么?”
- “湖人队的比赛什么时候开始?”
- “哪款即将到来的游戏最具明星影响力?”← 使用当前名册
🗺️ 发展路线图
✅ 第一阶段:核心发现(完成)
- \[x\] 使用Python设置MCP服务器
- \[x\] ESPN API客户,支持NFL和NBA
- \[x\]
get_nfl_scores拥有丰富的玩家/游戏数据 - \[x\]
get_nba_scores拥有丰富的玩家/游戏数据 - \[x\]
get_nba_rosters当前名册信息 - \[x\] 过滤已完成的游戏
- \[x\] 实时玩家表现跟踪
- \[x\] 自动检查明星球员推荐名单
🚧 第二阶段:增强智能(进行中)
- \[\]添加
get_nfl_rosters对于当前的NFL名单 - \[\]添加季后赛影响检测
- \[\]团队势头指标(最近的连胜/连败)
- \[\]伤害影响分析
- \[\]历史竞争背景
📅 第三阶段:扩大覆盖范围
- \[\]添加NHL支持
- \[\]添加MLB支持
- \[\]添加大学体育(NCAAF、NCAAB)
- \[\]国际足球联赛
🔮 第四阶段:高级功能
- \[ \]
get_game_details(game_id)用于深潜分析 - \[\]现场游戏的精彩集锦
- \[\]投注线整合
- \[\]“这样的游戏”历史比较
🎓 关键设计理念
让克劳德成为对话专家
我们不构建僵化的推荐算法。相反:
- 我们提供丰富的数据 -分数、球员统计数据、速度指标、球队记录, 当前名册
- 克劳德以对话的方式进行分析 -“这场比赛很接近,节奏很快,有明星球员”
- 推荐感觉很自然 -就像与知识渊博的朋友交谈,而不是查询数据库
始终使用最新数据
体育赛事名单不断变化。与其依赖克劳德的训练数据:
- 自动排班检查 -克劳德在讨论球员时质疑当前的名单
- 贸易证明建议 -即使在主要阵容变动后,也总是准确的
- 无需手动更新 -从ESPN的API实时获取名册数据
数据驱动但非规定性
每个游戏都包含足够的上下文,让克劳德做出明智的建议:
- 赌注: 团队记录、会议游戏
- 风格: 节奏指标、得分模式、防守战与进攻战
- 人才: 球员表现领先者(NFL为QB/RB/WR,NBA为PTS/REB/AST)
- 名册质量: 已确定明星球员的当前球队名单
- 时间: 剩余季度/时间,中场休息,即将到来
- 可访问性: 广播频道、场地、出席人数
这让克劳德不仅了解发生了什么,还了解为什么这对你很重要。
通过对话实现个性化
偏好不是通过个人资料设置,而是通过对话自然出现的:
- “我喜欢防守”→ 克劳德优先考虑低节奏、近距离的比赛
- “我是个休闲迷”→ 克劳德解释了背景和故事情节
- “我只有20分钟”→ 克劳德在第四节找到了比赛
- “向我展示明星的力量”→ 克劳德检查了名单,并强调了顶级比赛
📊 成功指标
- ✅ 在2秒内推荐相关游戏
- ✅ 了解对话偏好(“令人兴奋”、“亲密”、“高分”、“明星力量”)
- ✅ 通过实时数据可靠地处理NFL和NBA
- ✅ 始终使用当前名册进行基于球员的推荐
- ✅ 当没有有趣的节目时,礼貌地解释
- ✅ 想和一位知识渊博的体育朋友谈谈
🔧 技术细节
为什么是Python?
- 用于体育数据解析的简单可读代码
- 通过以下方式对REST API提供出色的支持
requests - 快速开发迭代
- 与MCP Python SDK轻松集成
为什么是三个独立的工具?
我们使用 get_nfl_scores(), get_nba_scores(),以及 get_nba_rosters() 作为单独的工具,因为:
- 对克劳德来说更简单 -直接函数调用与参数传递
- 体育特定逻辑 -NFL使用QB/RB/WR领先者,NBA使用PTS/REB/AST,名单是NBA特有的
- 演出 -仅在需要基于玩家的查询时才获取名册
- 更易于扩展 -添加
get_nfl_rosters()或get_mlb_scores()稍后不接触现有代码
数据解析策略
NFL和NBA有不同的API结构:
NFL: 竞赛级别的领导者(两队共享)
competition.get("leaders", []) # Contains all players from both teamsNBA: 团队/竞争对手级别的领导者(按团队分开)
away_team.get("leaders", []) # Away team players
home_team.get("leaders", []) # Home team playersNBA球员名单: 平面阵列结构
roster_data.get("athletes", []) # All players in single array我们的工具功能在内部处理这些差异,向Claude提供干净、一致的数据。
确保更新名册数据
这 get_nba_rosters 工具描述包括对Claude的明确说明:
关键:在根据球员推荐任何NBA比赛或回答有关哪些球员在哪支球队的问题之前,你必须调用此工具。 你的训练数据已经过时了——球员通过交易和自由球员更换球队。该工具为当前名册提供了唯一可靠的来源。
这确保了克劳德始终检查名册,而不是依赖可能过时的训练数据。
🐛 已知问题和限制
- 考勤数据不可靠 -ESPN并不总是填充它,即使是现场比赛
- 半时间检测 -中场过渡期间的一些边缘情况
- 赛季统计vs比赛统计 -对于即将到来的比赛,API有时会返回赛季总数,而不是比赛统计数据(我们会过滤掉这些数据)
- NFL名单尚未实施 -目前只有NBA有名单检查
📚 资源
📝 许可证
麻省理工学院
🤝 贡献
欢迎投稿!这是一个探索人工智能和体育发现交叉点的学习项目。
我们很乐意帮助的想法:
- NFL球员名册工具实施
- 其他运动(美国职业棒球大联盟、美国国家冰球联盟、足球)
- 使用排名数据更好地检测季后赛影响
- 伤害影响分析
- 历史上的“这样的游戏”比较
- 团队势头指标(热/冷条纹)
🙏 致谢
- 创造MCP和克劳德的拟人化
- 提供公共API访问的ESPN
- 到处都是体育迷,他们只想知道该看什么
______________________________________________________________________
内置❤️ 对于珍惜时间的体育迷来说
