@claudinho/mcp ⚽
An MCP server for the 2026 men's football tournament. Ask your agent about live
scores, fixtures, group standings, and the prediction-market read — in Claude Code,
Cursor, Codex, Claude Desktop, Windsurf, Zed, VS Code, or any MCP client (stdio).
No API key, no signup — all 104 fixtures ship bundled; only live scores (and optional, read-only Polymarket signals) hit the network.
⭐ Added via npx or your MCP config? Star the repo — a fan project runs on stars.
Install
Claude Code
claude mcp add claudinho -- npx -y @claudinho/mcp
Cursor — add to ~/.cursor/mcp.json (global) or a project .cursor/mcp.json:
{ "mcpServers": { "claudinho": { "command": "npx", "args": ["-y", "@claudinho/mcp"] } } }
Bonus: claudinho init-cursor-statusline (from @claudinho/cli) also puts the live score
in your Cursor CLI statusline — or run claudinho init cursor to do both at once.
Codex CLI
codex mcp add claudinho -- npx -y @claudinho/mcp
Claude Desktop / Windsurf / Zed / VS Code — standard stdio config (same JSON as Cursor):
Claude Desktop: Settings → Developer → Edit Config, then restart. Codex config file:
~/.codex/config.toml ([mcp_servers.claudinho], command = "npx", args = ["-y", "@claudinho/mcp"]).
Then just ask your agent naturally — it picks the right tool and answers with live data:
"What matches are on today?" · "Show me the live scores" · "What's Mexico's next game?"
"Group A standings" · "Show the knockout bracket" · "Make me a shareable card for today"
Tools
get_today | fixtures for a date (default: today), grouped in the caller's tz, live scores overlaid |
get_live | matches in play right now |
get_match | a single match by id |
get_standings | live cumulative group table(s) — one group A–L, or all |
get_bracket | knockout bracket from the Round of 32 through the final — optional stage filter (R32, R16, QF, SF, 3P, F) |
get_next_fixture | a team's next match (3-letter code, e.g. MEX) — live-resolves a confirmed knockout tie from the feed; group fixtures offline, fails back to the bundled schedule if the feed is down |
get_market_signal | read-only prediction-market signal for a match, a team's current-or-next fixture (in-play preferred while live), or a date — informational only |
get_share_snippet | a copy-pasteable plain-text card — for a match, a team's next fixture, a group's standings table (group), the knockout bracket (bracket: true, optional knockoutStage), a date, or live — hand the returned snippet to the user as-is |
get_team | resolve a nation name or code to its FIFA 3-letter code, flag, and group — fuzzy (Mexico, mex, DR Congo, Türkiye); call it first to turn a user's team name into the code the other tools need. Offline (no network) |
Most tools are read-only (readOnlyHint) and accept optional tz, lang
(en/es/pt/fr), and flavor (off/subtle/full); get_team is read-only
and offline. Every response carries
human-readable text and structured content, validated against each tool's
declared outputSchema.
Resources: standings://{group}, fixtures://{date}. Prompts: tournament_today,
and my_team (give it a 3-letter team code; combines next fixture, standings, and
the prediction-market read).
Market signals
Market signals are pre-match and in-play reads — finished matches never show one.
get_today / get_match include a short market line when a reliable market exists
(slugs are auto-derived per fixture; matching fails closed). Read-only and
informational only — not betting advice: market-implied percentages with Polymarket
attribution, never links or trade calls. Disable with CLAUDINHO_MARKETS=off; set
CLAUDINHO_MARKETS_SOURCE=fake in the server env for a network-free, clearly
labeled synthetic preview.
Match lines in the text end with a short, localized, genre-style exclamation
(— ¡GOOOOL!) — generic energy, no real commentator quoted or impersonated, never
in the structured JSON. Control with CLAUDINHO_FLAVOR (off|subtle|full,
default full) in the server env, or per call via the flavor argument.
How it works
All 104 fixtures ship bundled in the package; only live state hits the network —
live scores from ESPN's public scoreboard (swappable provider, attributed in
output), market signals from Polymarket. Stdout carries only the MCP protocol;
diagnostics go to stderr.
License
MIT © 2026 Arturo Garrido · source & issues
Not affiliated with, endorsed by, or connected to FIFA or Anthropic. An independent,
open-source fan project showing factual match data with emoji flags only — no logos, crests,
kits, broadcast footage, or player likenesses.
Built while watching the games. #VibingLaVidaLoca ⚽