fpl-context-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DRY_RUN | No | Set to true/1/yes to run without writing to PostgreSQL. | false |
| DATABASE_URL | Yes | Read-only PostgreSQL connection string for the query_historical_stats tool. Example: postgresql://fpl_readonly:password@localhost:5432/fpl | |
| MCP_AUTH_TOKEN | No | HTTP transport only (--transport http): if set, /mcp requests must include Authorization: Bearer <token>. | |
| DATABASE_ETL_URL | No | PostgreSQL read/write connection string used by the fpl-context-ingest-match job. Falls back to DATABASE_URL if not set. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| query_historical_statsA | Execute a read-only SQL SELECT against the FPL stats database. Use this to answer questions about player stats, fixtures, team strength, gameweek history, and player injury/availability status (FPL's status, chance of playing and news note) for the seasons in the database. Availability here is as of the last data refresh; call get_live_availability for the current flags. Available tables (read-only). The current season is fully populated; past seasons
exist only as season totals in seasons — id, label (e.g. '2025/26'), start_year, is_current teams — season_id, fpl_id, name, short_name, strength, strength_attack_home/away, strength_defence_home/away gameweeks — season_id, gw_number (1–38), deadline_time, is_current, is_next, is_finished, average_entry_score, highest_score players — season_id, fpl_id, team_fpl_id, first_name, second_name, web_name, position (GKP/DEF/MID/FWD), now_cost, form, total_points, minutes, goals_scored, assists, clean_sheets, expected_goals, expected_assists, ict_index, selected_by_percent, status, chance_of_playing_next_round, news, news_added fixtures — season_id, fpl_id, gw_number, kickoff_time, home_team_fpl_id, away_team_fpl_id, home_score, away_score, finished, home_team_difficulty, away_team_difficulty gw_player_stats — season_id, player_fpl_id, gw_number, fixture_fpl_id, opponent_team_fpl_id, was_home, minutes, goals_scored, assists, clean_sheets, bonus, total_points, expected_goals, expected_assists, ict_index, starts Notes:
Injury and availability (current season
Join hint: teams.fpl_id = players.team_fpl_id (current season, same season_id). |
| get_live_availabilityA | Current FPL injury, suspension and availability flags, fetched live from the FPL API (no database needed). Call this before recommending, picking or captaining any player, so a newly flagged or suspended player isn't missed. With no arguments it lists every player who currently has a flag, newest news first. Pass player names to check specific players (returned even when fully available), and/or statuses to filter. Status codes: a available, d doubtful, i injured, s suspended, u unavailable (left club / on loan), n not in squad. chance_of_playing is FPL's estimate for the next round. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 2 tools
The two tools have largely distinct purposes: one is a broad SQL query interface for historical/current database stats, and the other fetches live injury/availability flags. There is some overlap on availability data, but the descriptions clearly explain that the database version is stale and the live tool should be used for current flags.
Both tools use consistent snake_case and follow a clear verb_noun pattern: query_historical_stats and get_live_availability. Minor verb choice differs, but the convention is predictable and readable.
Two tools is on the low side, but the SQL query tool is a powerful catch-all that covers many data needs, and the live availability tool addresses a specific, time-sensitive gap. The set is focused rather than incomplete.
The server covers historical/season stats via SQL and live availability via a dedicated tool, which handles the core context needs. Minor gaps exist, such as no direct live match/points tool, but agents can work around these through the SQL interface for most questions.