Skip to main content
Glama
zafronix

World Cup History MCP

by zafronix
README.md
# World Cup History MCP

> **by Zafronix** · npm: `@zafronix/wc-mcp` · MIT-licensed

[![wc-mcp MCP server](https://glama.ai/mcp/servers/zafronix/wc-mcp/badges/card.svg)](https://glama.ai/mcp/servers/zafronix/wc-mcp)

Model Context Protocol server giving Claude / Cursor / any MCP-aware agent grounded access to every FIFA World Cup since 1930. **23 tournaments. 1,168+ matches. 2,500+ players. 206 stadiums.** All exposed as 15 typed tools so the model stops hallucinating squads, scores, brackets, and stadium altitudes.

Powered by the public [Zafronix World Cup API](https://api.zafronix.com/) — free tier with key, 1,000 req/day, no card.

## Why

LLMs are unreliable on:
- Exact tournament results from before the trained-data window.
- Roster details (jersey numbers, DOBs, captains).
- Knockout-round paths and exact scores.
- Stadium facts (capacity, altitude, year opened).

This MCP wraps the Zafronix WC API so the model can call a tool and get the canonical answer instead of guessing.

## Install

```bash
npm install -g @zafronix/wc-mcp
```

Or run from source:

```bash
git clone https://github.com/zafronix/wc-mcp
cd wc-mcp
npm install
npm run build
```

## Get a free API key

```
https://api.zafronix.com/signup
```

1,000 requests/day on the free tier, no card.

## Configure (Claude Desktop)

Edit `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) / `%APPDATA%\Claude\claude_desktop_config.json` (Windows):

```json
{
  "mcpServers": {
    "wc": {
      "command": "npx",
      "args": ["-y", "@zafronix/wc-mcp"],
      "env": {
        "WC_API_KEY": "zwc_pk_your_key_here"
      }
    }
  }
}
```

Restart Claude Desktop. You'll see a 🔌 icon in the input bar — click it to confirm `wc` is connected.

## Configure (Cursor)

Settings → MCP → Add new server:

```json
{
  "mcpServers": {
    "wc": {
      "command": "npx",
      "args": ["-y", "@zafronix/wc-mcp"],
      "env": { "WC_API_KEY": "zwc_pk_..." }
    }
  }
}
```

## Tools

| Tool | What it does |
|---|---|
| `list_tournaments` | Every WC 1930→2026 (year, host, champion). |
| `get_tournament` | Full tournament: teams, brackets, awards, squads. |
| `compare_tournaments` | Side-by-side stats for 2-6 years. |
| `search_players` | Player name search across history. |
| `get_player_career` | Every WC a player appeared in. |
| `list_teams` | Every nation that ever played, optional confederation filter. |
| `get_team` | Cross-tournament summary for a country. |
| `get_team_roster` | Full squad for one team in one year. |
| `list_stadiums` | Every WC venue with elevation + coords. |
| `get_stadium` | Single venue by slug. |
| `list_matches` | Filter by year / stage / date. |
| `get_match` | Single match with score + attendance + referee. |
| `get_trivia` | Curated factual nuggets per year. |
| `get_standings` | Computed group tables with FIFA tiebreakers. |
| `get_bracket` | Full knockout bracket. |

## Example prompts (in Claude Desktop, with this MCP enabled)

- *"Compare Pelé and Messi at the World Cup."*
- *"What was the highest-altitude World Cup stadium ever, and how did goal totals there compare to sea-level venues?"*
- *"Show me Italy's 2006 squad with positions and clubs."*
- *"Trace Argentina's 2022 path to the title — every match, every score."*
- *"List every African nation that has reached the World Cup quarter-finals."*

## Development

```bash
npm run dev          # tsx watch mode
WC_API_KEY=... npm start
```

The server speaks stdio. You can test it with the MCP CLI:

```bash
npx @modelcontextprotocol/inspector npx tsx src/index.ts
```

## License

MIT.

TDQS

A4.4/5.0

Scored across 15 tools

Disambiguation5/5

Each tool has a clear, non-overlapping purpose. For example, compare_tournaments is for multi-year comparisons while get_tournament handles single years; get_team vs get_team_roster separate summary from roster; search_players vs get_player_career distinguish lookup from career view.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern (e.g., list_tournaments, get_match, compare_tournaments) using snake_case. There are no mixed conventions or ambiguous names.

Tool Count5/5

With 15 tools, the server is well-scoped for its domain—covering tournaments, teams, players, matches, stadiums, standings, brackets, and trivia without being bloated. The number feels natural for a comprehensive World Cup history API.

Completeness5/5

The tool set covers the major CRUD-like operations for the domain: listing and getting tournaments, teams, players, matches, stadiums, comparisons, trivia, brackets, and standings. There are no obvious gaps for typical World Cup queries.

Maintenance

ActivityInactive
ResponsivenessUnresponsive