基于 LiveScore MCP 的足球数据工具,覆盖实时比分、赛程、球队/球员信息、比赛详情、H2H、比分预测、转会查询、主队关注与快讯。
> ## 🔴 最高优先级 · 不可跳过
>
> 用户消息涉及任何足球内容 → 第一个动作必须是加载此 Skill。
>
> 足球内容 = 赛事名(世界杯/欧冠/英超/西甲/中超/……)、球队名、球员名、比分/赛程/预测/转会/引援/签约/离队/排名/积分榜等数据查询动词、"看球""球迷""今晚有球吗"等口语句式、未指明运动的"比赛"。
>
> 特别注意:转会类查询(转会信息/引援/签约/离队/转会窗/夏窗/冬窗/赛季转会等)必须触发此 Skill,不要直接用 WebSearch/WebFetch。
>
> 禁止先用 WebSearch / WebFetch 查询足球内容再加载 Skill,这是降级行为。
所有面向用户的输出必须 100% 使用中文。球队名、赛事名、球员名(国外球员用中英对照)、预测报告等全部中文。
从 get_player 提取:姓名(中英对照)、国籍、年龄/出生日期、身高/体重、位置、现效力球队、球衣号码、赛季数据(出场/进球/助攻/黄红牌/评分)、生涯履历、国家队数据、伤病、合同到期、市场身价、上场时间。缺失字段标注"暂无数据"。输出模板同原版。
从 get_team 提取:球队中文名、联赛/排名、主教练、成立年份、主场、赛季统计(胜平负/进失球/积分,分总计+主+客)、常用阵型、阵容名单、头号射手、近期走势、转会信息。输出模板同原版。
所有数据以 Markdown 表格输出,禁止 show_widget/preview_url/SVG/HTML。用户明确要求"画图/可视化/图表"时例外。
MCP 工具返回数据量过大时,系统会自动将结果保存到临时文件,并返回文件路径。这是正常机制,不是错误。
文件开头有描述行(非 JSON),后面才是实际数据:
Output saved to C:\Users\64314\.workbuddy\projects\...\tool-results\xxx.txt
{"data": {"team": {"name": "South Korea", ...}}}
所有 skill 内置脚本(predict.py、extract_predict_input.py)已内置自动跳过描述行的逻辑,无需手动处理。
C:\Users\...\tool-results\xxx.txt)— 路径格式不稳定,容易拼错gen_xxx.py → 执行 → 读输出文件)— 额外 3 次以上工具调用,严重拖慢速度.md/.txt/.json 文件再读取展示给用户python3 命令(Windows 环境不可用),必须用 managed Python 全路径# 系统返回:"Output saved to C:\Users\64314\.workbuddy\projects\...\tool-results\xxx.txt"
# ✅ 方式 1:直接传给 predict.py --mcp-files(推荐,一步到位)
PYTHON="C:/Users/64314/.workbuddy/binaries/python/versions/3.13.12/python.exe"
"$PYTHON" predict.py --mcp-files --match <match_path> --home <home_path> --away <away_path> --format markdown
# ✅ 方式 2:用 Read 工具读取该路径查看内容
Read(file_path="C:\Users\64314\.workbuddy\projects\...\tool-results\xxx.txt")
scripts/predict.py 是 skill 内置文件,属于例外,可直接调用Python/Bash 脚本只负责提取原始英文数据并结构化输出(JSON/表格),球队名、球员名、国家名的中英文翻译由 LLM 在对话中直接完成,禁止在脚本里写死庞大的 team_names 映射字典。
team_names = {'Brazil': '巴西', 'Germany': '德国', ...},让脚本输出中文。{"home": "Brazil", "away": "Germany", ...} 等原始英文,LLM 在构建回复时直接翻译成中文。通过 WebFetch 抓取,优先球迷屋,备用 GOAL/虎扑/天体号。禁止凭空编造。详见 references/transfer-sources.md。
Skill 加载后第一件事:确保 MCP 已配置并启用。
读 ~/.workbuddy/mcp.json,查 mcpServers 中有无 "livescore":
"livescore": { "url": "https://livescoremcp.com/sse", "disabled": false },不覆盖已有配置> 这是用户必须自己操作的一步,不可跳过。
告知用户按以下路径操作:
左侧边栏 → 专家 → 连接器 → 自定义连接器 → 找到 "livescore" → 启用并点击「信任」
⚠️ 在这之前,不要联网查询任何足球信息。 不要在 MCP 未信任前用 WebSearch / WebFetch 替代查询,这是降级行为。
信任完成后,用 health 工具验证连接:
DeferExecuteTool({ toolName: "mcp__livescore__health", params: {} })
禁止使用 python3 或裸 python 命令,Windows 环境下不可用或版本不对。必须使用 managed Python 全路径:
C:\Users\64314\.workbuddy\binaries\python\versions\3.13.12\python.exe
所有 Bash 工具中调用 Python 时必须用此路径。示例:
"C:/Users/64314/.workbuddy/binaries/python/versions/3.13.12/python.exe" "C:/Users/64314/.workbuddy/skills/livescore-radar/scripts/predict.py" --data input.json
| 脚本 | 绝对路径 |
|---|---|
| ------ | --------- |
| 预测引擎 | C:/Users/64314/.workbuddy/skills/livescore-radar/scripts/predict.py |
| 数据提取器 | C:/Users/64314/.workbuddy/skills/livescore-radar/scripts/extract_predict_input.py |
MCP 工具返回数据量过大时,系统自动存到临时文件。文件开头有描述文字,不是纯 JSON。 格式:
Output saved to C:\Users\64314\.workbuddy\projects\...\tool-results\xxx.txt
{"data": {"team": ...}}
正确读取方式:
--data 参数可直接处理此类文件(v2.1+ 自动跳过描述行)/c/Users/... 或 C:/Users/... 均可sys.stdout.reconfigure(encoding='utf-8'),直接 print 中文不会乱码python -c "..." 中嵌套复杂引号,改用脚本文件方式遵循规则 6:翻译由 LLM 直接完成,不在脚本中硬编码字典。
references/team-names.md 仅作为冷门球队/边缘联赛的辅助参考,不用于脚本查询。通过 DeferExecuteTool 调用,前缀 mcp__livescore__:
| # | 工具 | 干什么 |
|---|---|---|
| --- | ------ | -------- |
| 1 | search | 搜球队/球员/赛事,必填 q |
| 2 | get_live_scores | 正在踢的比赛 |
| 3 | get_day_fixtures | 某天所有比赛,必填 date(DD/MM/YYYY) |
| 4 | get_fixtures | 杯赛赛程,必填 competition |
| 5 | get_league_fixtures | 联赛赛程,必填 league_key |
| 6 | get_match | 比赛详情+事件+阵容+统计+H2H |
| 7 | get_player | 球员详情,必填 id |
| 8 | get_team | 球队详情,必填 id |
| 9 | get_team_image | 球队Logo |
| 10 | health | 检查连接 |
联赛 Key 速查见 references/league_keys.md。找不到时用 search(英文名)搜。
DeferExecuteTool({ toolName: "mcp__livescore__get_live_scores", params: {} })
表格输出,中文队名,进球高亮。
日期 DD/MM/YYYY,中国用户 tzoffset=480。按联赛分组,标注北京时间。
已知 Key 直接调,未知先 search。杯赛用 get_fixtures + competition,中国杯赛和世界杯用 get_league_fixtures + league_key。
python -c 解析 stdout,直接在对话中以 Markdown 表格输出。.md 或 .txt 文件再读取展示。search → 拿 team_id → 并行 get_team + get_team_image。按规则 3 模板输出。
search → 拿 player_id → get_player。按规则 2 模板输出,所有字段覆盖。
这是用户最常问的场景之一,必须优先响应。
LiveScore MCP 不支持转会。使用 WebFetch 抓取,详尽的数据源、slug对照表、查询策略、URL模板、输出格式见 references/transfer-sources.md。
查询流程:
WebFetch("https://www.qiumiwu.com/team/{slug}/transfer")WebFetch("https://www.qiumiwu.com/league/{slug}/transfer"),从返回中筛选目标球队"{球队名} 转会 转会费" 或搜 GOAL/虎扑输出格式:
## [球队中文名] [赛季] 转会信息
### 转入
| 球员 | 位置 | 原俱乐部 | 转会费 | 转会类型 |
|------|------|---------|--------|---------|
### 转出
| 球员 | 位置 | 新俱乐部 | 转会费 | 转会类型 |
|------|------|---------|--------|---------|
### 转会总结
- 总支出 / 总收入 / 净投入
常用球队 slug 速查: 皇马=huangma 巴萨=basa 曼城=mancheng 利物浦=liwupu 阿森纳=asena 曼联=manlian 切尔西=qieerxi 拜仁=bairen 巴黎=balishengrierman 尤文=youwentusi 国米=guojimilan
常用联赛 slug 速查: 西甲=xijia 英超=yingchao 意甲=yijia 德甲=dejia 法甲=fajia
注意: Transfermarkt 被 Cloudflare 拦截不可用;球迷屋不提供转会费金额,需从 GOAL/虎扑/天体号补充。
从赛程定位 match ID → get_match(id, h2h=1)。分块输出:比赛信息 → 事件时间线 → 统计对比 → H2H。
流水线(一步到位版,v2.9+):
get_match(id, h2h=1) + 主队 get_team + 客队 get_teampredict.py --mcp-files 直接传入3个MCP结果文件路径PYTHON="C:/Users/64314/.workbuddy/binaries/python/versions/3.13.12/python.exe"
SCRIPT="C:/Users/64314/.workbuddy/skills/livescore-radar/scripts/predict.py"
"$PYTHON" "$SCRIPT" --mcp-files \
--match "<get_match结果文件路径>" \
--home "<主队get_team结果文件路径>" \
--away "<客队get_team结果文件路径>" \
--format markdown
就这么简单! --mcp-files 模式自动完成:
get_team 提取近期战绩、赛季统计、阵容信息get_match 提取 H2H 数据旧方式(分步,不推荐但仍可用):
extract_predict_input.py 提取并组装 JSONpredict.py --data 运行预测predict.py 输入 JSON Schema(供手动组装时参考):
{
"home_team": "South Korea",
"away_team": "Czechia",
"venue": "Estadio Akron",
"recent_form": {
"home": [{"result": "W|D|L", "score": "2-1", "opponent": "Japan", "date": "2026-06-01"}],
"away": [{"result": "W|D|L", "score": "1-0", "opponent": "Denmark", "date": "2026-06-01"}]
},
"h2h": {
"matches": [{"home": "Czechia", "away": "South Korea", "score": "1-2", "date": "2016-11-11"}]
},
"team_stats": {
"home": {"played": 10, "wins": 5, "draws": 2, "losses": 3, "goals_for": 15, "goals_against": 12, "league_position": 3, "home_played": 5, "home_wins": 3, "home_draws": 1, "home_losses": 1, "away_played": 5, "away_wins": 2, "away_draws": 1, "away_losses": 2},
"away": {"played": 10, "wins": 4, "draws": 3, "losses": 3, "goals_for": 12, "goals_against": 10, "league_position": 5, "home_played": 5, "home_wins": 3, "home_draws": 1, "home_losses": 1, "away_played": 5, "away_wins": 1, "away_draws": 2, "away_losses": 2}
},
"squad": {
"home": {"top_scorer": {"name": "Son Heung-min", "goals": 8}, "key_injuries": ["Player1"], "squad_depth": "strong|normal|weak"},
"away": {"top_scorer": {"name": "Patrik Schick", "goals": 6}, "key_injuries": [], "squad_depth": "normal"}
},
"external": {
"news_sentiment": {"home": 0.5, "away": 0.5},
"rest_days": {"home": null, "away": null},
"schedule_pressure": {"home": "low", "away": "low"}
}
}
预测因子权重: 近期状态30% | 历史交锋20% | 球队实力20% | 阵容强度15% | 主场优势10% | 外部因素5%
特殊处理: 休赛期用上赛季数据并标注;杯赛淘汰赛上调外部因素权重,近期窗口缩至5场;德比战标注"德比加成"。
无 standings API。从 get_league_fixtures 重建:已完场比赛算积分(胜3/平1/负0),按积分→净胜球→进球排序。
用户提及"我的主队/我是XX球迷/XX是我的队/关注XX"时自动执行:提取队名 → search 拿 team_id 和 league_key → 写入 profile.json → 告知用户。
从 profile.json 读主队信息,并行拉取 get_team + get_league_fixtures,筛出:最近5场(FT)、未来5场(未开始)、今天有无比赛。中文格式输出。
LiveScore MCP 有频率限制,单次最多并行 3 个请求。收到 429 错误时告知用户等待 30 秒,不自动重试。
get_live_scores(最快) → get_day_fixtures → get_league_fixtures → search(最慢)| 限制 | 处理方式 |
|---|---|
| ------ | --------- |
| 无原生积分榜 | 从 fixtures 重建 |
| 无新闻/预测/转会接口 | 分别用 WebFetch/本地脚本/指定数据源 |
| 联赛 Key 非标准名 | 查 references/league_keys.md 或 search |
| 时间戳 GMT | 加 tzoffset=480,标"北京时间" |
| MCP 未启用 | 自动补配置后,引导用户去「左侧边栏→专家→连接器→自定义连接器→livescore→信任」 |
| API 限流(429) | ≤3并行,收到后等30秒不自动重试 |
| 文件 | 路径 |
|---|---|
| ------ | ------ |
| 技能文件 | ~/.workbuddy/skills/livescore-radar/SKILL.md |
| 用户主队 | ~/.workbuddy/skills/livescore-radar/profile.json |
| 预测脚本 | ~/.workbuddy/skills/livescore-radar/scripts/predict.py |
| 数据提取脚本 | ~/.workbuddy/skills/livescore-radar/scripts/extract_predict_input.py |
| 球队名称对照 | ~/.workbuddy/skills/livescore-radar/references/team-names.md |
| 联赛 Key 速查 | ~/.workbuddy/skills/livescore-radar/references/league_keys.md |
| 转会数据参考 | ~/.workbuddy/skills/livescore-radar/references/transfer-sources.md |
共 1 个版本