Skip to main content
Glama
sbanthia92

fpl-context-mcp

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
DRY_RUNNoSet to true/1/yes to run without writing to PostgreSQL or Pinecone. The server logs a DRY RUN MODE warning and tools return descriptions of would-be actions.false
DATABASE_URLYesPostgreSQL read-only connection string for the query_historical_stats tool. Example: postgresql://fpl_readonly:password@localhost:5432/fpl
MCP_AUTH_TOKENNoBearer token required for HTTP transport (--transport http). If set, all /mcp requests must include Authorization: Bearer <token>. Leave empty only when bound to localhost.
DATABASE_ETL_URLNoPostgreSQL read/write connection string used by the ingest_match_data job. Falls back to DATABASE_URL if not set.
GUARDIAN_API_KEYNoThe Guardian Open Platform API key. Optional but recommended; without it, press content ingestion skips Guardian articles and uses only BBC Sport.
PINECONE_API_KEYYesPinecone API key for the query_press_conferences tool and press content ingestion. Must have access to an index configured with the multilingual-e5-large model.
PINECONE_INDEX_NAMENoPinecone index name. Defaults to 'fpl-context'.fpl-context

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

CapabilityDetails
tools
{
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
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, or gameweek history for the seasons in the database.

Available tables (read-only). The current season is fully populated; past seasons exist only as season totals in players (see notes below the table list):

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, status, news 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:

  • teams, fixtures, gameweeks and gw_player_stats hold the CURRENT season only.

  • For past seasons, players has one row per player per season with season totals (points, minutes, goals, assists, clean sheets, cards, bonus). team_fpl_id is NULL there, and fpl_id is the player's current FPL id. Join seasons for the label.

  • Past seasons only include players in the CURRENT FPL player list. Departed players are absent, so league-wide or team-wide totals for past seasons are incomplete; only trust per-player history for players who appear in the current season.

Join hint: teams.fpl_id = players.team_fpl_id (current season, same season_id).

query_press_conferencesA

Semantic search over Premier League press conference summaries, match reports, and player injury/availability updates ingested from BBC Sport and The Guardian. Use this to find recent quotes, injury news, or manager/team news.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.2/5.0

Scored across 2 tools

Disambiguation5/5

The two tools are completely distinct in purpose: one executes SQL queries on structured stats data, the other performs semantic search over press conference text. There is zero overlap, so an agent can unambiguously select the correct tool.

Naming Consistency5/5

Both tools follow the exact same 'query_' + noun pattern (query_historical_stats, query_press_conferences). This is a perfectly consistent and predictable naming convention.

Tool Count3/5

With only 2 tools, the surface is thin, but it matches the narrow scope of providing FPL context (stats and news). It sits at the borderline where the count is low but arguably sufficient for the server's stated purpose.

Completeness4/5

The two tools cover the core needs of an FPL context server: historical/current stats via SQL and recent news/availability via press conferences. Minor gaps exist (e.g., no dedicated tool for current standings or transfers), but the SQL tool can be used to derive much of that, so the surface is largely complete.

Maintenance

ActivityNo data
ResponsivenessNo issues