Skip to main content
Glama
reiorozco

matchday-mcp

by reiorozco

⚽ matchday-mcp

npm version CI License: MIT MCP

A Model Context Protocol server that gives any MCP client (Claude Desktop, Claude Code, …) live football/soccer data — standings, fixtures, results, top scorers and team comparisons across Europe's top leagues.

Built with TypeScript + Zod, backed by the free football-data.org API.

Ask Claude "How is Real Madrid doing this season?" or "Compare Arsenal and Liverpool's recent form" and it answers with real data through these tools.

🔗 Live playground: matchday-mcp-web.vercel.app — an interactive dashboard built with SvelteKit + Svelte 5 that runs on this server's data layer.

Demo

> get_standings  { "competition": "La Liga" }

**La Liga standings — 2025**
 #  Team                         P   W  D  L   GD  Pts
 1  FC Barcelona               38  31  1  6   59   94
 2  Real Madrid CF             38  27  5  6   42   86
 3  Villarreal CF              38  22  6 10   26   72
 4  Club Atlético de Madrid    38  21  6 11   18   69
 ...

Related MCP server: football-scraper-mcp

Tools

Tool

What it does

get_standings

League table for a competition (position, W/D/L, GD, points).

get_matches

Matches for a competition, filterable by status and matchday.

get_top_scorers

Top scorers for a competition.

find_team

Look up a club by name (country, stadium, founded year, competitions).

get_team_matches

A club's recent results or upcoming fixtures, with a W/D/L form string.

compare_teams

Compare two clubs by recent form (last 5) and W/D/L tally.

Competitions (free tier): Premier League (PL), La Liga (PD), Bundesliga (BL1), Serie A (SA), Ligue 1 (FL1), Eredivisie (DED), Primeira Liga (PPL), Championship (ELC), Brazil Série A (BSA), Champions League (CL), World Cup (WC), European Championship (EC). You can pass a competition by name ("Premier League") or code ("PL").

Quick start (Claude Desktop)

  1. Get a free API token at football-data.org/client/register (takes ~1 minute).

  2. Add the server to your claude_desktop_config.json:

    {
      "mcpServers": {
        "matchday": {
          "command": "npx",
          "args": ["-y", "matchday-mcp"],
          "env": { "FOOTBALL_DATA_TOKEN": "your_free_token_here" }
        }
      }
    }
  3. Restart Claude Desktop. Ask it about standings, fixtures, scorers or team form.

Works the same in any MCP client. In Claude Code: claude mcp add matchday -e FOOTBALL_DATA_TOKEN=your_token -- npx -y matchday-mcp.

Development

git clone https://github.com/reiorozco/matchday-mcp.git
cd matchday-mcp
npm install

export FOOTBALL_DATA_TOKEN=your_free_token   # required to hit the live API

npm run dev        # run the server over stdio (tsx)
npm test           # run the unit tests (no token needed — fetch is mocked)
npm run typecheck  # tsc --noEmit
npm run build      # bundle to dist/ with tsup

Variable

Required

Description

FOOTBALL_DATA_TOKEN

yes

Free token from football-data.org.

Design notes

  • Zod-validated tools. Every tool input is described and validated with Zod, so the model gets clear schemas and bad arguments fail fast with readable errors.

  • Caching + rate-limit resilience. The free tier allows 10 req/min and returns HTTP 429 when exceeded, so the client adds an in-memory TTL cache plus bounded retry/backoff.

  • Lazy team index. football-data.org has no team-name search, so the client builds a name → id index across the domestic leagues one league at a time with early exit — a well-known club costs 1–2 requests, not a full sweep. Name resolution is ranked (exact → starts-with → shortest name), so "Barcelona"FC Barcelona, not RCD Espanyol.

  • Off-season aware. In the off-season the API's "current season" already points at the next, not-yet-started season (empty tables), so the default season rolls over in August.

  • Pure, testable handlers. Tool logic lives in plain functions returning strings; the MCP wiring is a thin layer on top. The same data layer powers the web playground (source).

Data

Data from football-data.org. This project is not affiliated with football-data.org or any league.

License

MIT © Reinaldo Orozco

Install Server
A
license - permissive license
A
quality
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    -
    quality
    C
    maintenance
    Enables querying community-run, keyless football/soccer match data from OpenLigaDB through natural language or direct tool calls.
    Last updated
    13
    MIT
  • F
    license
    -
    quality
    D
    maintenance
    Provides tools to query football match data, odds, standings, and team statistics via natural language, integrating with the football-scraper-api.
    Last updated
  • F
    license
    -
    quality
    D
    maintenance
    Provides live football match data from Sofascore, including formations, injuries, betting odds, and league positions, enabling natural language queries about matches.
    Last updated
  • F
    license
    B
    quality
    B
    maintenance
    Enables access to live FotMob football data for fixture lookup, team and player research, match details, lineups, league discovery, and search-based entity lookup.
    Last updated
    7
    5

View all related MCP servers

Related MCP Connectors

  • API-Football MCP — comprehensive soccer/football data

  • Football-Data.org MCP — soccer competitions, matches, standings

  • TheSportsDB MCP — sports catalog (teams, players, events)

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/reiorozco/matchday-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server