Fantasy Premier League MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| fpl_get_fixtures_for_gameweekA | Get all Premier League fixtures for a specific gameweek. Returns complete fixture list with team names, kickoff times, scores (if finished), and difficulty ratings for both teams. Useful for planning transfers based on fixture difficulty and understanding upcoming matches. Args: params (GetFixturesForGameweekInput): Validated input parameters containing: - gameweek (int): Gameweek number between 1-38 - detailed (bool): Include detailed stats (default: False) - response_format (ResponseFormat): 'markdown' or 'json' (default: markdown) Returns: str: Complete fixture list with times and difficulty ratings Examples: - View GW10 fixtures: gameweek=10 - Check upcoming matches: gameweek=15 - Get as JSON: gameweek=20, response_format="json" Error Handling: - Returns error if gameweek number invalid (must be 1-38) - Returns error if no fixtures found for gameweek - Returns formatted error message if data unavailable |
| fpl_find_fixture_opportunitiesA | Find teams with the easiest upcoming fixtures and their best assets. Analyzes fixture difficulty for all 20 teams over the next N gameweeks. Identifies teams with the most favorable schedule and recommends their top-performing players (filtered by position if requested). Args: params (FindFixtureOpportunitiesInput): Validated input parameters containing: - num_gameweeks (int): Number of gameweeks to analyze (3-10) - max_teams (int): Number of teams to recommend (1-5) - positions (list[str] | None): Optional position filter Returns: str: Analysis of best teams to target and their key players Examples: - Target next 5 GWs: num_gameweeks=5 - Find best attackers: positions=['Midfielder', 'Forward'] Error Handling: - Returns error if data unavailable - Returns formatted error message if API fails |
| fpl_get_current_gameweekA | Get the current or upcoming Fantasy Premier League gameweek information. Returns the gameweek that is currently active (before deadline) or the next gameweek (after deadline). Essential for determining which gameweek to plan transfers for and understanding the current state of the season. Args: params (GetCurrentGameweekInput): Validated input parameters containing: - response_format (ResponseFormat): 'markdown' or 'json' (default: markdown) Returns: str: Current/upcoming gameweek details with deadline and status Examples: - Check current GW: response_format="markdown" - Get as JSON: response_format="json" Error Handling: - Returns error if gameweek data unavailable - Returns error if no active gameweek found - Returns formatted error message if API fails |
| fpl_get_league_standingsA | Get standings for a specific Fantasy Premier League league. Returns manager rankings, points, team names, and rank changes within the league. Supports pagination for large leagues. Find league ID in the FPL website URL (e.g., for /leagues/12345/standings/ use league_id=12345). Args: params (GetLeagueStandingsInput): Validated input parameters containing: - league_id (int): League ID from FPL URL - page (int): Page number for pagination (default: 1) - response_format (ResponseFormat): 'markdown' or 'json' (default: markdown) Returns: str: League standings with rankings and pagination info Examples: - View league: league_id=12345 - Next page: league_id=12345, page=2 - Get as JSON: league_id=12345, response_format="json" Error Handling: - Returns error if league not found - Returns error if page number invalid - Returns formatted error message if API fails |
| fpl_get_manager_gameweek_teamA | Get a manager's team selection for a specific gameweek. Shows the 15 players picked, captain/vice-captain choices, formation, points scored, transfers made, and automatic substitutions. Find manager by their name or team name within a specific league. Args: params (GetManagerGameweekTeamInput): Validated input parameters containing: - manager_name (str): Manager's name or team name - league_id (int): League ID where manager is found - gameweek (int): Gameweek number (1-38) Returns: str: Complete team sheet with starting XI, bench, and statistics Examples: - View team: manager_name="John Smith", league_id=12345, gameweek=13 - Check transfers: manager_name="FC Warriors", league_id=12345, gameweek=15 Error Handling: - Returns error if manager not found in league - Returns helpful message suggesting correct name if ambiguous - Returns formatted error message if API fails |
| fpl_compare_managersA | Compare multiple managers' teams for a specific gameweek side-by-side. Shows differences in player selection, captaincy choices, points scored, common players, and unique differentials. Useful for mini-league rivalry analysis and understanding what sets top managers apart. Args: params (CompareManagersInput): Validated input parameters containing: - manager_names (list[str]): 2-4 manager names to compare - league_id (int): League ID where managers are found - gameweek (int): Gameweek number to compare (1-38) Returns: str: Side-by-side manager comparison with differentials Examples: - Compare 2 managers: manager_names=["John", "Sarah"], league_id=12345, gameweek=13 - Compare 4 managers: manager_names=["A", "B", "C", "D"], league_id=12345, gameweek=10 Error Handling: - Returns error if fewer than 2 or more than 4 managers provided - Returns error if any manager not found (with helpful message) - Returns formatted error message if API fails |
| fpl_get_manager_squadA | Get a manager's squad selection for a specific gameweek using their team ID. Shows the 15 players picked, captain/vice-captain choices, formation, points scored, transfers made, and automatic substitutions. This is a simpler alternative to fpl_get_manager_gameweek_team that uses team ID directly instead of requiring manager name and league ID lookup. Args: params (GetManagerSquadInput): Validated input parameters containing: - team_id (int): Manager's team ID (entry ID) - gameweek (int | None): Gameweek number (1-38), defaults to current GW - response_format (ResponseFormat): 'markdown' or 'json' (default: markdown) Returns: str: Complete team sheet with starting XI, bench, and statistics Examples: - View current team: team_id=123456 - View specific gameweek: team_id=123456, gameweek=13 - Get as JSON: team_id=123456, gameweek=15, response_format="json" Error Handling: - Returns error if team ID not found - Returns error if gameweek not started yet - Returns formatted error message if API fails |
| fpl_get_manager_by_team_idA | Get manager profile and squad information using team ID directly. This tool provides the same functionality as fpl_get_manager_squad but with a name that better reflects its purpose - getting manager information without requiring league context. Shows the 15 players picked, captain/vice-captain choices, formation, points scored, transfers made, and automatic substitutions. Args: params (GetManagerByTeamIdInput): Validated input parameters containing: - team_id (int): Manager's team ID (entry ID) - gameweek (int | None): Gameweek number (1-38), defaults to current GW - response_format (ResponseFormat): 'markdown' or 'json' (default: markdown) Returns: str: Complete manager profile with squad, statistics, and team info Examples: - View current squad: team_id=123456 - View specific gameweek: team_id=123456, gameweek=20 - Get as JSON: team_id=123456, response_format="json" Error Handling: - Returns error if team ID not found (404) - Returns error if gameweek not started yet - Returns formatted error message if API fails |
| fpl_analyze_rivalA | Compare your team against a specific rival manager. Provides a comprehensive head-to-head analysis including:
Args: params (AnalyzeRivalInput): Validated input parameters containing: - my_team_id (int): Your team ID - rival_team_id (int): Rival's team ID - gameweek (int | None): Gameweek number (defaults to current) Returns: str: Detailed rival analysis and threat assessment Examples: - Compare me vs rival: my_team_id=123, rival_team_id=456 - Analyze past GW: my_team_id=123, rival_team_id=456, gameweek=10 Error Handling: - Returns error if either team ID invalid - Returns formatted error message if API fails |
| fpl_find_playerA | Find a Fantasy Premier League player by name with intelligent fuzzy matching. Handles variations in spelling, partial names, and common nicknames. If multiple players match, returns disambiguation options. More forgiving than exact search. Args: params (FindPlayerInput): Validated input parameters containing: - player_name (str): Player name with fuzzy support (e.g., 'Haalnd' matches 'Haaland') Returns: str: Player details if unique match, or list of matching players if ambiguous Examples: - Find with typo: player_name="Haalnd" (finds Haaland) - Partial name: player_name="Mo Salah" (finds Mohamed Salah) - Surname only: player_name="Son" (finds Son Heung-min) Error Handling: - Returns helpful message if no players found - Returns disambiguation list if multiple matches - Returns formatted error message if API fails |
| fpl_get_player_detailsA | Get comprehensive information about a specific Fantasy Premier League player. Returns detailed player information including price, form, team, position, upcoming fixtures with difficulty ratings, recent gameweek performance, popularity, and season stats. Most comprehensive player tool. Args: params (GetPlayerDetailsInput): Validated input parameters containing: - player_name (str): Player name (e.g., 'Mohamed Salah', 'Erling Haaland') Returns: str: Comprehensive player information with fixtures, form, and stats Examples: - Get player info: player_name="Mohamed Salah" - Check fixtures: player_name="Bukayo Saka" - Review form: player_name="Erling Haaland" Error Handling: - Returns error if player not found - Suggests using fpl_find_player if name is ambiguous - Returns formatted error message if API fails |
| fpl_compare_playersA | Compare multiple Fantasy Premier League players side-by-side. Provides detailed comparison of 2-5 players including their stats, prices, form, and other key metrics. Useful for making transfer decisions. Args: params (ComparePlayersInput): Validated input parameters containing: - player_names (list[str]): 2-5 player names to compare Returns: str: Side-by-side comparison of players in markdown format Examples: - Compare wingers: player_names=["Salah", "Saka", "Palmer"] - Compare strikers: player_names=["Haaland", "Isak"] - Compare for transfers: player_names=["Son", "Maddison", "Odegaard"] Error Handling: - Returns error if fewer than 2 or more than 5 players provided - Returns error if any player name is ambiguous - Returns formatted error message if API fails |
| fpl_get_top_performersA | Get top 10 Fantasy Premier League performers over recent gameweeks. Analyzes player performance over the last N gameweeks and returns the top 10 players for each metric: Goals, Expected Goals (xG), Assists, Expected Assists (xA), and Expected Goal Involvements (xGI). Perfect for identifying in-form players for transfers. Args: params (GetTopPlayersByMetricInput): Validated input parameters containing: - num_gameweeks (int): Number of recent gameweeks to analyze, 1-10 (default: 5) - response_format (ResponseFormat): 'markdown' or 'json' (default: markdown) Returns: str: Top 10 players for each metric with their stats and team info Examples: - Last 5 gameweeks: num_gameweeks=5 - Last 10 gameweeks: num_gameweeks=10 - Get as JSON: num_gameweeks=5, response_format="json" Error Handling: - Returns error if no finished fixtures in range - Gracefully handles API failures for individual fixtures - Returns formatted error message if data unavailable Note: This tool might take a few seconds to complete due to the number of data points it needs to process. |
| fpl_get_captain_recommendationsA | Get captaincy recommendations for the upcoming gameweek. Analyzes fixtures, form, and home/away advantage to recommend the best captain choices. If team_id is provided, analyzes YOUR specific squad. Otherwise, provides general recommendations from all players. Args: params (GetCaptainRecommendationsInput): Validated input parameters containing: - team_id (int | None): Your team ID to analyze your specific squad - gameweek (int | None): Gameweek to analyze (defaults to next) Returns: str: Top 3-5 captain recommendations with analysis Examples: - Analyze my team: team_id=123456 - General picks for GW15: gameweek=15 - General picks: (no args) Error Handling: - Returns error if gameweek invalid - Returns helpful message if team ID not found - Returns formatted error message if API fails |
| fpl_analyze_team_fixturesA | Analyze upcoming fixtures for a specific Premier League team to assess difficulty. Shows next N gameweeks with opponent strength and home/away status. Includes average difficulty rating and assessment. Very useful for identifying good times to bring in or sell team assets based on fixture difficulty. Args: params (AnalyzeTeamFixturesInput): Validated input parameters containing: - team_name (str): Team name to analyze (e.g., 'Arsenal', 'Liverpool') - num_gameweeks (int): Number of gameweeks to analyze, 1-15 (default: 5) - response_format (ResponseFormat): 'markdown' or 'json' (default: markdown) Returns: str: Fixture difficulty analysis with ratings and assessment Examples: - Next 5 fixtures: team_name="Arsenal" - Next 10 fixtures: team_name="Liverpool", num_gameweeks=10 - Long-term view: team_name="Man City", num_gameweeks=15 Error Handling: - Returns error if team not found - Returns error if no upcoming fixtures - Returns formatted error message if data unavailable |
| fpl_get_top_transferred_playersA | Get the most transferred in and out players for the current gameweek. Shows live transfer trends to identify popular moves happening right now. Uses real-time data from bootstrap for instant response. Essential for understanding the current template and finding differentials. Args: params (GetTopTransferredPlayersInput): Validated input parameters containing: - limit (int): Number of players to return, 1-50 (default: 10) - response_format (ResponseFormat): 'markdown' or 'json' (default: markdown) Returns: str: Top transferred in and out players with net transfers Examples: - Top 10: limit=10 - Top 20: limit=20 - Get as JSON: limit=15, response_format="json" Error Handling: - Returns error if no transfer data available - Returns formatted error message if current gameweek unavailable |
| fpl_get_manager_transfers_by_gameweekA | Get all transfers made by a specific manager in a specific gameweek. Shows which players were transferred in and out, transfer costs, and timing. Useful for analyzing manager strategy and understanding when/why they made moves. Requires manager's team ID (entry ID) which can be found in the FPL URL. Args: params (GetManagerTransfersByGameweekInput): Validated input parameters containing: - team_id (int): Manager's team ID (entry ID) - gameweek (int): Gameweek number (1-38) Returns: str: Complete transfer history for the gameweek with costs Examples: - View transfers: team_id=123456, gameweek=20 - Check costs: team_id=789012, gameweek=15 Error Handling: - Returns error if team ID invalid - Returns message if no transfers in gameweek - Returns formatted error message if API fails |
| fpl_get_manager_chipsA | Get a manager's chip usage showing which chips have been used and which are still available. Since the 2025/2026 season, FPL provides 4 chips per half-season. Shows used chips with gameweek and timing, plus remaining available chips. Essential for strategic chip planning and recommendations. Args: params (GetManagerChipsInput): Validated input parameters containing: - team_id (int): Manager's team ID (entry ID) - response_format (ResponseFormat): 'markdown' or 'json' (default: markdown) Returns: str: Chip usage summary with used and available chips Examples: - Check chip status: team_id=123456 - JSON format: team_id=123456, response_format="json" Error Handling: - Returns error if team ID invalid - Returns formatted error message if API fails |
| fpl_analyze_transferA | Analyze a potential transfer decision between two players. Compares the player being transferred out vs the player being transferred in. Analyzes form, upcoming fixtures (next 5), price difference, and overall value. Provides a direct recommendation based on the data. Args: params (AnalyzeTransferInput): Validated input parameters containing: - player_out (str): Name of player to remove - player_in (str): Name of player to add - my_team_id (int | None): Optional team ID to check budget impact Returns: str: Detailed transfer analysis and recommendation Examples: - Analyze move: player_out="Salah", player_in="Palmer" - Check budget: player_out="Saka", player_in="Foden", my_team_id=123456 Error Handling: - Returns error if either player not found - Returns error if players play different positions (unless specified) - Returns formatted error message if API fails |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| recommend_captain | Recommend optimal captain choices using xGI-based metrics and fixture analysis. This prompt guides the LLM to analyze squad players and recommend the top 3 captain options based on form, fixtures, expected goals, and opponent strength. Args: team_id: Manager's FPL team ID gameweek: Target gameweek (defaults to current/next if None) response_format: Output format - 'markdown' (default) or 'json' |
| recommend_chip_strategy | Analyze chip strategy with xGI-based metrics and EV calculations. This prompt guides the LLM to recommend optimal chip timing using quantitative expected value analysis rather than subjective assessments. Args: team_id: FPL team ID of the manager to analyze |
| gameweek_analysis | Analyze detailed match reports for a specific gameweek. Provides a comprehensive analysis of all matches in a gameweek, highlighting key performers, tactical insights, and FPL implications based on detailed statistics. Also suggests transfer targets based on upcoming fixtures and form. Args: gameweek: Gameweek number to analyze (defaults to current gameweek if None) |
| compare_managers | Generate a prompt for comparing managers' teams in a league. This prompt guides the LLM to analyze differences in team selection, strategy, and performance between multiple managers. Args: league_id: ID of the league (from FPL URL) gameweek: Gameweek number to analyze *manager_names: Variable number of manager names (2-4 managers) |
| find_league_differentials | Generate a prompt for finding differential players in a league. This prompt guides the LLM to identify low-owned players that could provide a competitive advantage in a specific league. Args: league_id: ID of the league to analyze max_ownership: Maximum ownership % to consider as differential (default: 30%) |
| compare_players | Compare players using underlying metrics and probability-based projections. This prompt prioritizes xG/xA/xGI over retrospective points, identifies positive/negative regression candidates, and accounts for ownership context. Args: *player_names: 2-5 player names to compare |
| analyze_squad_performance | Analyze squad performance using xGI-based metrics and regression analysis. This prompt guides the LLM to identify underperforming/overperforming players using underlying stats (xG, xA, xGI) rather than retrospective points. Args: team_id: FPL team ID of the manager to analyze num_gameweeks: Number of recent gameweeks to analyze (default: 5) |
| analyze_team_fixtures | Detect FDR trend shifts to time transfers optimally. Accounts for: - Fixture difficulty horizon (4-6 GW) - DGW/BGW detection - Home/away xG splits - "Green arrow" timing (when to invest) Args: team_name: Team to analyze num_gameweeks: Fixture horizon (default: 6 for trend detection) |
| select_team | Optimize Starting XI and Bench using fixture analysis and player status. This prompt guides the LLM to choose the best starting lineup and bench order based on fixture difficulty, player availability, and form. Args: team_id: Manager's FPL team ID gameweek: Target gameweek (defaults to current/next if None) |
| recommend_transfers | Identify targets using xGI delta, fixture swings, and price urgency. Args: team_id: Manager's FPL team ID free_transfers: Available free transfers |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| get_all_players_resource | Get all FPL players with basic stats and prices. |
| get_all_teams_resource | Get all Premier League teams with strength ratings. |
| get_all_gameweeks_resource | Get all gameweeks with their status for the season. |
| get_current_gameweek_resource | Get the current or upcoming gameweek information. |
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/nguyenanhducs/fpl-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server