{
  "markdown": "# Claudinho ⚽\n\n[![CI](https://github.com/arturogarrido/claudinho/actions/workflows/ci.yml/badge.svg)](https://github.com/arturogarrido/claudinho/actions/workflows/ci.yml)\n[![npm: @claudinho/cli](https://img.shields.io/npm/v/@claudinho/cli?label=%40claudinho%2Fcli&color=cb3837)](https://www.npmjs.com/package/@claudinho/cli)\n[![npm: @claudinho/mcp](https://img.shields.io/npm/v/@claudinho/mcp?label=%40claudinho%2Fmcp&color=cb3837)](https://www.npmjs.com/package/@claudinho/mcp)\n[![npm downloads](https://img.shields.io/npm/dm/@claudinho/cli?label=downloads&color=cb3837)](https://www.npmjs.com/package/@claudinho/cli)\n[![cursor.directory](https://img.shields.io/badge/cursor.directory-claudinho-0b0b0b)](https://cursor.directory/plugins/claudinho)\n[![smithery badge](https://smithery.ai/badge/arturogarrido/claudinho)](https://smithery.ai/servers/arturogarrido/claudinho)\n[![Glama: A](https://img.shields.io/badge/Glama-A-2ea043)](https://glama.ai/mcp/servers/arturogarrido/claudinho)\n[![node](https://img.shields.io/node/v/@claudinho/cli?color=5fa04e)](https://nodejs.org)\n[![license: MIT](https://img.shields.io/badge/license-MIT-blue)](LICENSE)\n[![#VibingLaVidaLoca](https://img.shields.io/badge/%23VibingLaVidaLoca-⚽-ff5a5f)](https://github.com/arturogarrido/claudinho)\n[![GitHub stars](https://img.shields.io/github/stars/arturogarrido/claudinho?style=flat&logo=github&label=stars&color=f5c518)](https://github.com/arturogarrido/claudinho)\n\n**Live scores for the 2026 men's football tournament — in your terminal, your Claude Code / Cursor CLI statusline, and any MCP client.** No API key, no signup; all 104 fixtures ship bundled, so the schedule works offline.\n\n<p align=\"center\">\n  <img src=\".github/assets/hero.gif\" alt=\"A Claude Code statusline flipping to a live World Cup score — South Korea 2–1 Czechia — while tests run in the terminal\" width=\"800\">\n</p>\n<!-- HERO: real live-match capture from the Jun 11 opener — the statusline flips to\n     South Korea's 81st-minute winner (1–1 → 2–1) while pytest runs. -->\n\n```bash\nnpx @claudinho/cli today      # try it in 10 seconds — no install, no key\nnpx @claudinho/cli live       # what's on right now (during match windows)\n```\n\n> ⭐ **Like it?** [Star the repo](https://github.com/arturogarrido/claudinho) — a fan project's only scoreboard is its stars. (`claudinho star` shows you how anytime.)\n\nWhile matches are live, your Claude Code or Cursor CLI statusline reads:\n\n```text\n⚽ 🇳🇴 1–1 🇫🇷 87' · 🇸🇳 1–2 🇮🇶 86'\n```\n\nAnd `claudinho share` prints a card made for the group chat:\n\n<!-- DEMO CARD: verbatim output of `claudinho share table A`. Chosen over a single\n     match card because it has no fixed date to go stale (a played-and-passed fixture\n     reads as abandoned). Standings still drift across matchdays — REGENERATE\n     periodically, especially before any conversion-sensitive moment. Never hand-edit. -->\n```text\nGroup A · standings\n\n1. 🇲🇽 MEX  9 pts · 3-0-0 · +6\n2. 🇿🇦 RSA  4 pts · 1-1-1 · -1\n3. 🇰🇷 KOR  3 pts · 1-0-2 · -1\n4. 🇨🇿 CZE  1 pts · 0-1-2 · -4\n\nLive data: ESPN\n#VibingLaVidaLoca · Independent fan project · not affiliated with FIFA or Anthropic.\nTry it: npx @claudinho/cli table A\n```\n\n> ⚠️ **Not affiliated with, endorsed by, or connected to FIFA or Anthropic.**\n> Claudinho is an independent, open-source fan project. It displays factual match data\n> (scores, fixtures, standings) and uses emoji flags only — no logos, emblems, kits,\n> broadcast footage, or player likenesses.\n\n## Install\n\n### Just the CLI\n\n```bash\nnpm i -g @claudinho/cli\nclaudinho today\nclaudinho next MEX --tz America/Mexico_City --lang es\n```\n\n### Cursor CLI — statusline + MCP\n\nOne command wires the live-score statusline and prints the MCP config to paste:\n\n```bash\nnpm i -g @claudinho/cli\nclaudinho init cursor          # statusline → ~/.cursor/cli-config.json (+ the MCP paste)\n```\n\n<p align=\"center\">\n  <img src=\".github/assets/cursor-cli-statusline.png\" alt=\"A live World Cup score in a Cursor CLI statusline — Uzbekistan 0–1 Colombia, 42' — with a model and context line below it\" width=\"520\">\n</p>\n\nRestart your agent session to see it. Prefer to paste it yourself? `claudinho init cursor --print`\nemits the snippets, or copy them straight from here:\n\n**Statusline** — `~/.cursor/cli-config.json`:\n```json\n{\n  \"statusLine\": {\n    \"type\": \"command\",\n    \"command\": \"claudinho prompt\",\n    \"padding\": 0,\n    \"updateIntervalMs\": 1000,\n    \"timeoutMs\": 1500\n  }\n}\n```\n\n**MCP tools** — `~/.cursor/mcp.json` (global) or a project `.cursor/mcp.json`:\n```json\n{ \"mcpServers\": { \"claudinho\": { \"command\": \"npx\", \"args\": [\"-y\", \"@claudinho/mcp\"] } } }\n```\n\n**Optional env** — a model + context line below the score, or scope to your team:\n```bash\nexport CLAUDINHO_CURSOR_META=auto   # model + context % line under the score (recommended)\nexport CLAUDINHO_TEAM=MEX           # show only your team's match\nexport CLAUDINHO_FLAGS=off          # 3-letter codes instead of flag emoji (already automatic in Warp)\nexport CLAUDINHO_DEBUG=1            # print data-provider failure diagnostics to stderr\nexport CLAUDINHO_NO_STAR=1          # suppress the occasional \"star the repo\" nudge\n```\n\n> **Note:** Cursor's `beforeSubmitPrompt` hook doesn't yet reliably inject context into the\n> model, so the score-aware *hook* stays Claude Code-only for now — the statusline and MCP\n> server work great in Cursor.\n\n### Claude Code — statusline, score-aware hook, MCP\n\n```bash\nnpm i -g @claudinho/cli\nclaudinho init claude          # statusline + live-score hook, then the MCP one-liner\n```\n\n`init claude` backs up `~/.claude/settings.json` first and is idempotent. Prefer the pieces\nà la carte? Run `init-statusline`, `init-hook`, and:\n\n```bash\nclaude mcp add claudinho -- npx -y @claudinho/mcp\n```\n\nRestart Claude Code to activate.\n\n> **Monorepo / local dev?** The `init cursor` / `init claude` aliases wire the global\n> `claudinho`. To point a statusline or hook at a local build, use the granular commands\n> with `--command`, e.g. `claudinho init-cursor-statusline --command \"node ./packages/cli/dist/index.js prompt\"`\n> (and `init-statusline` / `init-hook` for Claude Code).\n\n### Other MCP clients — Codex, Claude Desktop, Windsurf, Zed, VS Code\n\n```bash\ncodex mcp add claudinho -- npx -y @claudinho/mcp    # Codex CLI\n```\n\nEverything else takes the standard stdio config:\n\n```json\n{ \"mcpServers\": { \"claudinho\": { \"command\": \"npx\", \"args\": [\"-y\", \"@claudinho/mcp\"] } } }\n```\n\nThen just ask, mid-task — the agent calls the MCP server and answers with the score:\n\n<p align=\"center\">\n  <img src=\".github/assets/mcp-aha.gif\" alt=\"An AI coding agent asked 'did Germany get through?' mid-task — it calls the Claudinho MCP server and answers with the result: Germany 1(3)–1(4) Paraguay, FT (Paraguay won on penalties)\" width=\"720\">\n</p>\n\n## Surfaces\n\n- **CLI** — `today`, `live`, `next MEX`, `table`, `match <id>`, `bracket`, `markets`, `share`, `team` (name → code, e.g. `team \"DR Congo\"`) (plus `vibe` 😎 and `star` ⭐). `--json` on everything; TZ-aware via `--tz`.\n- **Live statusline — Claude Code & Cursor CLI** — every live score inline; reads a local micro-cache, never blocks on the network. One command per agent: `claudinho init claude` / `claudinho init cursor` (also tmux & Starship via `claudinho prompt`).\n- **Score-aware hook (Claude Code)** — a `UserPromptSubmit` hook that drops the live score into the model's context during matches; zero tokens off-match. (Cursor parity pending — its hook can't reliably inject context yet.)\n- **MCP server** — 9 read-only tools (`get_today`, `get_live`, `get_match`, `get_next_fixture`, `get_standings`, `get_bracket`, `get_market_signal`, `get_share_snippet`, `get_team`) plus `my_team` / `tournament_today` prompts.\n- **Prediction-market signals** — a read-only \"who's favored\" line (market-implied percentages, Source: Polymarket), shown only when a reliable market exists. **Informational only — not betting advice.** Opt out: `--no-markets` / `CLAUDINHO_MARKETS=off`.\n- **Shareable cards** — `claudinho share next MEX --copy` puts a plain-text match card on your clipboard; `claudinho share table A` does the same for a group's live standings; `claudinho share bracket` for the knockout tree.\n\nSpeaks `en` / `es` / `pt` / `fr`, with optional localized commentary flair (`¡GOOOOL!`) — dial it down with `--flavor subtle|off`.\n\n_Planned (not shipped yet):_ a desktop notifier and an AI pundit with a public accuracy scorecard.\n\n## Around the web\n\nIndependent coverage and organic attribution include\n[LinuxLinks](https://www.linuxlinks.com/claudinho-follow-world-cup-terminal/) and\n[SuperIsland's Live Football extension](https://github.com/shobhit99/SuperIsland/tree/main/Extensions/live-football).\n\nClaudinho is also listed in the\n[Official MCP Registry](https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.arturogarrido/claudinho&version=latest),\n[Smithery](https://smithery.ai/servers/arturogarrido/claudinho),\n[Glama](https://glama.ai/mcp/servers/arturogarrido/claudinho),\n[MCP.so](https://mcp.so/servers/claudinho),\n[cursor.directory](https://cursor.directory/plugins/claudinho),\n[awesome-claude-code](https://github.com/hesreallyhim/awesome-claude-code#status-lines), and\n[awesome-mcp-servers](https://github.com/punkpeye/awesome-mcp-servers#-sports). The Cursor integration\nwas also discussed in the\n[Cursor Community](https://forum.cursor.com/t/claudinho-live-world-cup-scores-in-your-cursor-cli-statusline-a-read-only-mcp-server/163557).\n\nSee **[PUBLIC_FOOTPRINT.md](PUBLIC_FOOTPRINT.md)** for the full dated record, including community\nposts, historical listings, automated mirrors, and events.\n\n## FAQ\n\n**Do I need an API key or account?** No. Nothing to sign up for; `npx` and done.\n\n**Does it work offline?** The bundled data does — the full schedule, group fixtures, and the knockout bracket *structure* (all 104 fixtures ship bundled, no key). Anything *live* hits the network: scores, group standings, and a team's resolved knockout opponent (`next` once the draw fills in).\n\n**Where does the data come from?** Live scores from ESPN's public scoreboard (attributed in output as `Live data: ESPN`); market signals from Polymarket public data. Rate limits respected.\n\n**Is the market line betting advice?** No. It's read-only, informational-only market data with attribution — no trading, no links — and it never appears on the statusline or hook.\n\n**Why no crests, kits, or player photos?** Legal-clean by design: facts and emoji flags only.\n\n**Flags show as boxed letters (`CH`, `BA`)?** Some terminals — notably Warp — don't compose\nthe regional-indicator pairs into flag glyphs, so 🇨🇭 renders as a boxed `CH`. claudinho\nauto-detects Warp and drops the flags: **3-letter codes on the statusline** (`MEX 1–0 RSA 67'`)\nand **plain team names in the hook**, `today` / `live` / `table`, and `next`. Force it anywhere with `CLAUDINHO_FLAGS=off`, or keep flags\nwith `CLAUDINHO_FLAGS=on`.\n\n**Windows?** Works, but flag emoji rendering varies by terminal — best on macOS/Linux. See the\nflags note above; `CLAUDINHO_FLAGS=off` gives clean codes on any terminal that can't render them.\n\n## Why star?\n\nClaudinho is a solo, $0, organic fan project — a GitHub star is the only signal that it's worth maintaining, and the nudge to keep shipping through the final. A star also:\n\n- surfaces it for other devs hunting live scores during the tournament,\n- puts new releases in your feed — a desktop **notifier**, an AI pundit, and **other tournaments** are on the roadmap,\n- takes one click → **[⭐ star Claudinho](https://github.com/arturogarrido/claudinho)**.\n\nNew here? [`CONTRIBUTING.md`](CONTRIBUTING.md) has the layout, the dev loop, and good first issues.\n\n## Privacy Policy\n\nClaudinho collects **no personal data** — no accounts, no telemetry, no analytics, no tracking. There is no Claudinho server. To show live results it makes read-only requests to public sports-data services (ESPN for scores/standings; Polymarket for informational-only market signals) with no account or personal data attached, and keeps a small cache in your local cache directory (`~/.cache/claudinho`). Full details: **[PRIVACY.md](PRIVACY.md)**.\n\n## Security\n\nFound a vulnerability? Please report it **privately** via [GitHub's report form](https://github.com/arturogarrido/claudinho/security/advisories/new) rather than a public issue. **[SECURITY.md](SECURITY.md)** has the disclosure process and the threat model (stdio only, no listener, no credentials, two read-only outbound hosts).\n\n## License\n\nMIT © 2026 Arturo Garrido. All three packages publish with npm provenance via OIDC trusted publishing.\n\n---\n\n_Built while watching the games._ **#VibingLaVidaLoca** ⚽\n",
  "bytes": 12682,
  "sha": "7877b078ef369b23edb9fc1601fc47f2d9cb69cee1eab21aaa6e6f2c9f2da2be",
  "repo_slug": "arturogarrido/claudinho",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_arturogarrido_claudinho_579405f3/readme"
}