To give ChatGPT or Claude real football data, connect the Soccer Data MCP server: add the URL https://soccer-data.co/mcp as a custom connector in Claude or a custom MCP server in ChatGPT, then sign in to your Soccer Data account and approve it. The assistant can then look up fixtures, live scores, lineups, stats, xG, standings, injuries and odds while you chat, and answer from real data instead of memory.
What the Soccer Data MCP server is
MCP (Model Context Protocol) is the standard way for AI apps to use outside tools. The Soccer Data MCP server makes every endpoint of the Soccer Data football API a tool, with the same parameters as the API reference, plus two helpers, find_ids and get_usage. All tools only read data.
| Server URL | https://soccer-data.co/mcp, with no slash at the end |
| Transport | Streamable HTTP |
| Sign-in | Your Soccer Data account (OAuth), or an API key in a header |
| Plans | Included in Pro and Business |
Connect it to Claude
This works on claude.ai, the Claude desktop apps and mobile. Once the connector is added on one of them, it's there on all of them.
- Open Customize → Connectors, click + and choose Add custom connector.
- Name it
Soccer Dataand pastehttps://soccer-data.co/mcp. - If Claude asks how to register the OAuth client, choose Register automatically. Leave the client ID and secret empty.
- Click Add, then Connect. Sign in to Soccer Data if asked, and click Approve.
In a chat, open the tools menu to check that Soccer Data is on. On Team and Enterprise plans, an owner adds the connector under Organization settings → Connectors first; each member then clicks Connect under Customize → Connectors.
Connect it to ChatGPT
- Go to Plugins, click + and choose Add custom MCP server.
- Name it
Soccer Data, add a short description, pastehttps://soccer-data.co/mcpand choose OAuth for authentication. - Accept the warning about custom servers, and create it. Approve Soccer Data when you're asked to sign in.
- In a new chat, type
@and pick Soccer Data.
Custom MCP servers depend on your ChatGPT plan and, in a workspace, on your admin; in a Business workspace, an admin or owner adds the server. ChatGPT can't send API keys, so it always uses sign-in.
Connect it to Claude Code, Cursor and other apps
Claude Code. Add the server, then run /mcp, pick soccer-data and choose to authenticate. Your browser opens so you can approve it. Add --scope user to use it in every project.
claude mcp add --transport http soccer-data https://soccer-data.co/mcp
Cursor. Add this to ~/.cursor/mcp.json, or to .cursor/mcp.json for one project only. Then click Connect next to soccer-data in Cursor's MCP settings and approve it.
{
"mcpServers": {
"soccer-data": {
"url": "https://soccer-data.co/mcp"
}
}
}
VS Code. Save the server in .vscode/mcp.json, or run MCP: Add Server, choose HTTP and paste the URL. VS Code asks you to sign in the first time it starts the server.
Other apps. Any app that supports remote MCP servers over Streamable HTTP can connect. Apps with OAuth find the sign-in from /.well-known/oauth-protected-resource/mcp and register themselves; others send X-Api-Key: YOUR_API_KEY. Local-only (stdio) apps need a bridge such as mcp-remote that passes the header through.
The MCP server page in your dashboard has the URL and ready-to-copy setup for each app.
Sign-in or API key header?
| Sign in with your account (OAuth) | API key in a header | |
|---|---|---|
| Works in | Claude, ChatGPT, Claude Code, Cursor, VS Code, other apps with OAuth | Claude Code, Cursor, VS Code, other apps that send headers |
| What you do | Approve the app on Soccer Data. No key to copy. | Send X-Api-Key: YOUR_API_KEY or Authorization: Bearer YOUR_API_KEY |
| To stop it | Disconnect on the MCP server page | Revoke the key on the API keys page |
Give each tool its own key, so you can revoke one without affecting the others. The MCP docs show the header setup for Claude Code, Cursor and VS Code.
Either way, a connected app can read football data and see your plan and today's usage. It can't see your API keys, billing details or password, and it can't change anything in your account.
The tools and prompts it offers
find_ids and get_usage
find_idsturns a competition, team or player name into an id. It takestype(competition,teamorplayer) andname. Assistants call it before any tool that needs an id, so they never guess one: Arsenal isteam_f0ibhxdw7hs5, the Premier Leaguecompetition_705uv6jm8myn.get_usageshows your plan, the requests used and left today, when they reset and whether odds are included. It doesn't count as a request.
Data tools
Each tool's description names the API path it calls.
| Area | Tools |
|---|---|
| Competitions | competitions_list, competitions_show, competitions_seasons, competitions_groups, competitions_standings |
| Teams | teams_list, teams_show, teams_players, teams_injuries, teams_stats, teams_standings |
| Matches | matches_list, matches_show, matches_lineups, matches_stats, matches_player_stats, matches_timeline, matches_shotmap, matches_referee, matches_player_heatmap |
| Live matches | matches_live_stats, matches_live_timeline, matches_live_player_stats |
| Players | players_list, players_show, players_stats, players_injuries, players_season_heatmap |
| Odds | odds_prematch, odds_live |
| Coverage | coverage_leagues, coverage_league, coverage_summary |
Prompts
Apps that support MCP prompts, such as Claude's + menu or / commands in Claude Code, also get four ready-made prompts:
| Prompt | What it does |
|---|---|
match_preview |
Previews the next match between two teams: form, table, absences and odds. |
compare_players |
Compares two players' season stats side by side, per 90 minutes. |
league_table |
Shows a competition's table for any season, with each team's form. |
live_now |
Lists every match in play, optionally for one competition. |
Example questions to ask
| Ask | What the assistant calls |
|---|---|
| "Who's top of the Premier League?" | find_ids, competitions_show for the current season, then competitions_standings |
| "Which matches are live right now, and what are the scores?" | matches_list with status=live |
| "When is Arsenal's next match?" | find_ids, then matches_list with team_id, status=scheduled and sort=utc_date |
| "Compare Saka and Salah this season, per 90 minutes." | find_ids, players_show, competitions_show, then players_stats |
| "Preview Arsenal's next match: form, injuries and the odds." | find_ids, matches_list, teams_stats, competitions_standings, teams_injuries and odds_prematch |
How calls count against your daily limit
- The MCP server is included in the Pro and Business plans.
- Each data tool call,
find_idsincluded, counts as one request against your account's daily limit, the same as an API call.get_usagedoesn't count. - MCP calls share your plan's per-minute and daily limits with your API keys. The daily count resets at midnight UTC.
- A question that takes several steps uses several requests: a league table is usually
find_ids,competitions_showandcompetitions_standings. Ids from earlier in the chat can be reused. - Your usage page lists MCP calls with the source
MCP.
To spend fewer, name the competition and season, and ask for what you need rather than "every match this season".
Troubleshooting
| Problem | What to do |
|---|---|
| The URL is rejected, or sign-in fails straight away | Use exactly https://soccer-data.co/mcp, with no slash at the end. In Claude, choose Register automatically. |
invalid_token or "API key is not valid" |
The key was revoked or mistyped, or the app was disconnected. Create a new key, or connect the app again. |
| The account has no active subscription | MCP is included in Pro and Business. See plans. |
USAGE_LIMIT_EXCEEDED or RATE_LIMITED |
The daily or per-minute limit is reached, shared with your API keys. The assistant is told to stop and tell you rather than retry. |
| The assistant answers without Soccer Data | Switch the connector on for the chat, or start with "Using Soccer Data, …". |
Next steps
- MCP server docs: setup for every app.
- MCP server page: your URL and connected apps.
- Find any ID: how ids work.
- Plans: Pro and Business.
Frequently asked questions
Is there an MCP server for football data?
Yes. Soccer Data has an MCP server at https://soccer-data.co/mcp that lets Claude, ChatGPT, Cursor and other MCP apps look up fixtures, live scores, lineups, stats, xG, standings, injuries and odds. It's included in the Soccer Data Pro and Business plans.
Can ChatGPT get live football scores?
Yes, once you add the Soccer Data MCP server to ChatGPT as a custom MCP server and sign in. Ask "Which matches are live right now?" and ChatGPT calls matches_list with status=live and answers with the scores.
How do I connect Claude to real football data?
In Claude, open Customize → Connectors, add a custom connector named Soccer Data with the URL https://soccer-data.co/mcp, choose Register automatically if asked, then click Connect and approve. It then works on claude.ai, the desktop apps and mobile.
Do I need an API key to use the Soccer Data MCP server?
No. Claude, ChatGPT, Claude Code, Cursor and VS Code can sign in with your Soccer Data account. Tools that take headers can send an API key in X-Api-Key instead; ChatGPT always uses sign-in.
How many requests does an MCP tool call use?
Each Soccer Data data tool call, find_ids included, counts as one request against your daily limit, shared with your API keys. get_usage doesn't count, and shows what's left today.