A Model Context Protocol (MCP) server that provides access to Fantasy Premier League (FPL) data and tools. This server allows you to interact with FPL data in Claude for Desktop and other MCP-compatible clients.
Demo of the Fantasy Premier League MCP Server in action
- Claude Desktop
- Cursor
- Windsurf
- Other MCP Compatible Desktop LLMs
Mobile is currently not supported.
- Rich Player Data: Access comprehensive player statistics from the FPL API
- Team Information: Get details about Premier League teams
- Gameweek Data: View current and past gameweek information
- Player Search: Find players by name or team
- Player Comparison: Compare detailed statistics between any two players
- Python 3.10 or higher
- Claude Desktop (for AI integration)
pip install fpl-mcp
pip install "fpl-mcp[dev]"
pip install git+https://github.com/rishijatia/fantasy-pl-mcp.git
git clone https://github.com/rishijatia/fantasy-pl-mcp.git
cd fantasy-pl-mcp
pip install -e .
After installation, you have several options to run the server:
fpl-mcp
python -m fpl_mcp
Configure Claude Desktop to use the installed package by editing your claude_desktop_config.json
file:
Method 1: Using the Python module directly (most reliable)
{
"mcpServers": {
"fantasy-pl": {
"command": "python",
"args": ["-m", "fpl_mcp"]
}
}
}
Method 2: Using the installed command with full path (if installed with pip)
{
"mcpServers": {
"fantasy-pl": {
"command": "/full/path/to/your/venv/bin/fpl-mcp"
}
}
}
Replace /full/path/to/your/venv/bin/fpl-mcp
with the actual path to the executable. You can find this by running which fpl-mcp
in your terminal after activating your virtual environment.
Note: Using just
"command": "fpl-mcp"
may result in aspawn fpl-mcp ENOENT
error since Claude Desktop might not have access to your virtual environment's PATH. Using the full path or the Python module approach helps avoid this issue.
- Start Claude for Desktop
- You should see FPL tools available via the hammer icon
- Example queries:
- "Compare Mohamed Salah and Erling Haaland over the last 5 gameweeks"
- "Find all Arsenal midfielders"
- "What's the current gameweek status?"
- "Show me the top 5 forwards by points"
- Compare players: "Compare [Player1] and [Player2]"
- Find players: "Find players from [Team]" or "Search for [Player Name]"
- Fixture difficulty: "Show upcoming fixtures for [Team]"
- Captain advice: "Who should I captain between [Player1] and [Player2]?"
- Statistical analysis: "Compare underlying stats for [Player1] and [Player2]"
- Form check: "Show me players in form right now"
- Differential picks: "Suggest differentials under 10% ownership"
- Team optimization: "Rate my team and suggest transfers"
- Be specific with player names for accurate results
- Include positions when searching (FWD, MID, DEF, GK)
- For best captain advice, ask about form, fixtures, and underlying stats
- Request comparison of specific metrics (xG, shots in box, etc.
For development and testing:
# If you have mcp[cli] installed
mcp dev -m fpl_mcp
# Or use npx
npx @modelcontextprotocol/inspector python -m fpl_mcp
-
fpl://static/players
- All player data with comprehensive statistics -
fpl://static/players/{name}
- Player data by name search -
fpl://static/teams
- All Premier League teams -
fpl://static/teams/{name}
- Team data by name search -
fpl://gameweeks/current
- Current gameweek data -
fpl://gameweeks/all
- All gameweeks data -
fpl://fixtures
- All fixtures for the current season -
fpl://fixtures/gameweek/{gameweek_id}
- Fixtures for a specific gameweek -
fpl://fixtures/team/{team_name}
- Fixtures for a specific team -
fpl://players/{player_name}/fixtures
- Upcoming fixtures for a specific player -
fpl://gameweeks/blank
- Information about upcoming blank gameweeks -
fpl://gameweeks/double
- Information about upcoming double gameweeks
-
get_gameweek_status
- Get precise information about current, previous, and next gameweeks -
analyze_player_fixtures
- Analyze upcoming fixtures for a player with difficulty ratings -
get_blank_gameweeks
- Get information about upcoming blank gameweeks -
get_double_gameweeks
- Get information about upcoming double gameweeks -
analyze_players
- Filter and analyze FPL players based on multiple criteria -
analyze_fixtures
- Analyze upcoming fixtures for players, teams, or positions -
compare_players
- Compare multiple players across various metrics -
check_fpl_authentication
- Check if FPL authentication is working correctly -
get_my_team
- View your authenticated team (requires authentication) -
get_team
- View any team with a specific ID (requires authentication) -
get_manager_info
- Get manager details (requires authentication)
-
player_analysis_prompt
- Create a prompt for analyzing an FPL player in depth -
transfer_advice_prompt
- Get advice on player transfers based on budget and position -
team_rating_prompt
- Create a prompt for rating and analyzing an FPL team -
differential_players_prompt
- Create a prompt for finding differential players with low ownership -
chip_strategy_prompt
- Create a prompt for chip strategy advice
To add new features:
- Add resource handlers in the appropriate file within
fpl_mcp/fpl/resources/
- Add tool handlers in the appropriate file within
fpl_mcp/fpl/tools/
- Update the
__main__.py
file to register new resources and tools - Test using the MCP Inspector before deploying to Claude for Desktop
To use features requiring authentication (like accessing your team or private leagues), you need to set up your FPL credentials:
# Run the credential setup tool
fpl-mcp-config setup
This interactive tool will:
- Prompt for your FPL email, password, and team ID
- Let you choose between storing in config.json or .env file
- Save credentials securely to ~/.fpl-mcp/
You can test your authentication with:
fpl-mcp-config test
Alternatively, you can manually configure authentication:
-
Create
~/.fpl-mcp/.env
file with:FPL_EMAIL=your_email@example.com FPL_PASSWORD=your_password FPL_TEAM_ID=your_team_id
-
Or create
~/.fpl-mcp/config.json
:{ "email": "your_email@example.com", "password": "your_password", "team_id": "your_team_id" }
-
Or set environment variables:
export FPL_EMAIL=your_email@example.com export FPL_PASSWORD=your_password export FPL_TEAM_ID=your_team_id
- The FPL API is not officially documented and may change without notice
- Only read operations are currently supported
This occurs because Claude Desktop cannot find the fpl-mcp
executable in its PATH.
Solution: Use one of these approaches:
-
Use the full path to the executable in your config file
{ "mcpServers": { "fantasy-pl": { "command": "/full/path/to/your/venv/bin/fpl-mcp" } } }
-
Use Python to run the module directly (preferred method)
{ "mcpServers": { "fantasy-pl": { "command": "python", "args": ["-m", "fpl_mcp"] } } }
If the server starts but immediately disconnects:
- Check logs at
~/Library/Logs/Claude/mcp*.log
(macOS) or%APPDATA%\Claude\logs\mcp*.log
(Windows) - Ensure all dependencies are installed
- Try running the server manually with
python -m fpl_mcp
to see any errors
If the hammer icon doesn't appear:
- Restart Claude Desktop completely
- Verify your
claude_desktop_config.json
has correct JSON syntax - Ensure the path to Python or the executable is absolute, not relative
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
For more details, please refer to the CONTRIBUTING.md file.
- Fantasy Premier League API for providing the data
- Model Context Protocol for the connectivity standard
- Claude for the AI assistant capabilities
If you use this package in your research or project, please consider citing it:
@software{fpl_mcp,
author = {Jatia, Rishi and Fantasy PL MCP Contributors},
title = {Fantasy Premier League MCP Server},
url = {https://github.com/rishijatia/fantasy-pl-mcp},
version = {0.1.0},
year = {2025},
}