Soccer MCP Server
by obinopaul
Verified
# Soccer MCP Server
A Python server implementing Model Context Protocol (MCP) for football (soccer) statistics and live match data using the API-Football service.
## Overview
This server provides a comprehensive set of tools for accessing football data through the API-Football API. It serves as a bridge between applications and football data services, offering both live match information and historical statistics for leagues, teams, and players worldwide.
## Features
- League data (standings, fixtures, schedules)
- Team information and fixtures
- Player statistics and profiles
- Live match data (events, statistics, timelines)
- Match analysis (statistics, events)
## Configuration
This server requires an API key from RapidAPI for the API-Football service:
1. Create an account on [RapidAPI](https://rapidapi.com/)
2. Subscribe to the [API-Football API](https://rapidapi.com/api-sports/api/api-football/)
3. Set the environment variable:
```
RAPID_API_KEY_FOOTBALL=your_api_key_here
```
## Tools
### League Data
- **get_league_id_by_name**
- Retrieve the league ID for a given league name
- Example: `get_league_id_by_name(league_name="Premier League")`
- **get_all_leagues_id**
- Retrieve a list of all football leagues with IDs
- Can be filtered by country
- Example: `get_all_leagues_id(country=["England", "Spain"])`
- **get_standings**
- Retrieve league standings for multiple leagues and seasons
- Can be filtered by team
- Example: `get_standings(league_id=[39, 140], season=[2022, 2023])`
- **get_league_info**
- Retrieve information about a specific football league
- Example: `get_league_info(league_name="Champions League")`
- **get_league_fixtures**
- Retrieves all fixtures for a given league and season
- Example: `get_league_fixtures(league_id=39, season=2023)`
- **get_league_schedule_by_date**
- Retrieves the schedule for a league on specified dates
- Example: `get_league_schedule_by_date(league_name="Premier League", date=["2024-03-08", "2024-03-09"], season="2023")`
### Player Data
- **get_player_id**
- Retrieve player IDs and information for players matching a name
- Example: `get_player_id(player_name="Messi")`
- **get_player_profile**
- Retrieve a player's profile by their last name
- Example: `get_player_profile(player_name="Messi")`
- **get_player_statistics**
- Retrieve detailed player statistics by seasons and league name
- Example: `get_player_statistics(player_id=154, seasons=[2022, 2023], league_name="La Liga")`
- **get_player_statistics_2**
- Retrieve detailed player statistics by seasons and league ID
- Example: `get_player_statistics_2(player_id=154, seasons=[2022, 2023], league_id=140)`
### Team Data
- **get_team_fixtures**
- Returns past or upcoming fixtures for a team
- Example: `get_team_fixtures(team_name="Manchester United", type="past", limit=3)`
- **get_team_fixtures_by_date_range**
- Retrieve fixtures for a team within a date range
- Example: `get_team_fixtures_by_date_range(team_name="Liverpool", from_date="2023-09-01", to_date="2023-09-30", season="2023")`
- **get_team_info**
- Retrieve basic information about a specific team
- Example: `get_team_info(team_name="Real Madrid")`
### Match/Fixture Data
- **get_fixture_statistics**
- Retrieves detailed statistics for a specific fixture
- Example: `get_fixture_statistics(fixture_id=867946)`
- **get_fixture_events**
- Retrieves all in-game events for a fixture (goals, cards, subs)
- Example: `get_fixture_events(fixture_id=867946)`
- **get_multiple_fixtures_stats**
- Retrieves statistics for multiple fixtures at once
- Example: `get_multiple_fixtures_stats(fixture_ids=[867946, 867947, 867948])`
### Live Match Data
- **get_live_match_for_team**
- Checks if a team is currently playing live
- Example: `get_live_match_for_team(team_name="Chelsea")`
- **get_live_stats_for_team**
- Retrieves live in-game stats for a team in a match
- Example: `get_live_stats_for_team(team_name="Liverpool")`
- **get_live_match_timeline**
- Retrieves real-time timeline of events for a team's live match
- Example: `get_live_match_timeline(team_name="Manchester City")`
## Usage
The server is implemented using the Fast MCP framework and can be run as a standalone service.
```python
# Start the server
python soccer_server.py
# or
mcp run soccer-server.py
```
### Configuration
- The server runs with a 30-second timeout for more reliable operation
- Signal handlers are implemented for graceful shutdown (Ctrl+C)
### Usage with Claude Desktop
#### Option 1: Using Docker (Recommended)
1. Clone this repository
```
git clone https://github.com/obinopaul/soccer-mcp-server.git
cd soccer-mcp-server
```
2. Install dependencies
```
pip install -r requirements.txt
```
3. Build the Docker image
```
docker build -t soccer_server .
```
4. Run the Docker container (ensure your API key is passed as an environment variable)
```
docker run -d -p 5000:5000 -e RAPID_API_KEY_FOOTBALL=your_api_key_here --name soccer_server soccer_server
```
5. Add this to your `claude_desktop_config.json`:
```json
{
"mcpServers": {
"soccer_server": {
"command": "docker",
"args": [
"exec",
"-i",
"soccer_server",
"python",
"soccer_server.py"
],
"env": {
"RAPID_API_KEY_FOOTBALL": "your_api_key_here"
}
}
}
}
```
#### Option 2: Direct Python Execution
1. Clone this repository
```
git clone https://github.com/obinopaul/soccer-mcp-server.git
cd soccer-mcp-server
```
2. Install dependencies
```
pip install -r requirements.txt
```
3. Set the API key environment variable
```
export RAPID_API_KEY_FOOTBALL=your_api_key_here
```
4. Add this to your `claude_desktop_config.json`, adjusting the Python path as needed:
```json
{
"mcpServers": {
"soccer_server": {
"command": "/path/to/your/python",
"args": [
"/path/to/soccer_server.py"
],
"env": {
"RAPID_API_KEY_FOOTBALL": "your_api_key_here"
}
}
}
}
```
After adding your chosen configuration, restart Claude Desktop to load the soccer server. You'll then be able to use all the football data tools in your conversations with Claude.
## Technical Details
The server is built on:
- API-Football via RapidAPI
- MCP for API interface
- Pydantic for input validation
- Requests for API communication
## License
This MCP server is available under the MIT License.