Skip to main content
Glama
mgphp
by mgphp

fpl-mcp

An MCP server for Fantasy Premier League. Reads use FPL's public API; authenticated calls use a PingOne OIDC refresh token.

Tools

Tool

Description

current_gameweek

Current/next gameweek and deadline.

recommend_players

Rank players by form, value (points per £m), and upcoming fixture difficulty. Filters: position, max_cost, horizon, limit.

my_squad

Your current squad, bank, and free transfers. Needs auth.

make_transfer

Transfer a player out/in. Previews by default; set confirm=true to submit. Needs auth.

update_fpl_credentials

Replace the stored auth token from inside chat when it's expired or revoked — no restart needed.

Related MCP server: FPL Advisor MCP Server

Setup

npm install
npm run build
cp .env.example .env   # then fill in the values

Environment

Var

Purpose

FPL_ENTRY_ID

Your team ID (the number in fantasy.premierleague.com/entry/<ID>/). Needed for my_squad and make_transfer.

FPL_REFRESH_TOKEN

PingOne OIDC refresh token — see .env.example for how to grab it from DevTools. Needed for my_squad and make_transfer.

Read-only tools (current_gameweek, recommend_players) work without any env vars.

Auth notes

FPL retired the old users.premierleague.com cookie login in favor of PingOne OIDC (account.premierleague.com). The server:

  • Exchanges FPL_REFRESH_TOKEN for a short-lived access token and sends it as X-API-Authorization: Bearer <token>.

  • Refreshes proactively before expiry and on any 401/403.

  • PingOne rotates the refresh token on every exchange — the server rewrites FPL_REFRESH_TOKEN in .env each time so the new one survives a restart.

  • If the token is ever revoked or fully expired, call the update_fpl_credentials tool from chat with a freshly copied oidc.user value instead of editing .env by hand.

Run

node dist/server.js   # speaks MCP over stdio

Client config example

{
  "mcpServers": {
    "fpl": {
      "command": "node",
      "args": ["/absolute/path/to/fpl-mcp/dist/server.js"],
      "env": {
        "FPL_ENTRY_ID": "1234567",
        "FPL_REFRESH_TOKEN": "eyJ..."
      }
    }
  }
}

Available Tools

4 tools
current_gameweekA

Return the current (or next upcoming) FPL gameweek and its deadline.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must cover behavioral context. It states the tool 'returns' data, implying no side effects, but does not detail output format, any prerequisites, or other behavioral traits. The absence of output schema means the description could offer more, but for a simple zero-param tool, a minimally adequate disclosure is provided.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that conveys all necessary information without any filler. It is front-loaded with the primary action and is appropriately sized for the tool's simplicity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's zero complexity (no parameters, no output schema, no annotations), the description is nearly complete. It clarifies what is returned (current/next gameweek and deadline). However, it could specify the exact format (e.g., object with id and deadline timestamp) to be fully self-sufficient, but it is adequate for its simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so the baseline score is 4 per the guidelines. The description does not need to add parameter info, as there are none, and the schema coverage is 100% (empty schema).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Return' and the resource 'current (or next upcoming) FPL gameweek and its deadline'. It is specific and distinguishes from sibling tools like recommend_players, my_squad, and make_transfer, which have different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly indicates when to use this tool (to get the current/next gameweek) and, given the distinct sibling tools, alternative scenarios are clear. However, no explicit when-not-to-use or conditional guidance is provided, so it's rated slightly below perfect.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

make_transferA

Transfer one player out and another in. Previews (dry run) unless confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoSet true to actually submit the transfer; otherwise preview only.
element_inYesPlayer ID to transfer in.
element_outYesPlayer ID to transfer out.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses the preview-vs-confirm behavior, but omits details like authorization needs or error handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences that front-load the core action and then clarify the preview behavior. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No annotations or output schema exist. The description covers the essential preview/confirm behavior but lacks details on prerequisites (e.g., budget, team constraints) and return structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds minimal value beyond schema property descriptions, noting the confirm parameter's effect on submission vs preview.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Transfer one player out and another in') and distinguishes from siblings like current_gameweek and my_squad by focusing on the transfer operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description indicates preview behavior by default and requires confirm=true for actual submission. However, it does not explicitly state when to use versus alternatives, but sibling names make the context clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

my_squadA

Show your current squad (requires FPL_ENTRY_ID and FPL_COOKIE).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses dependency on external environment variables, which is key behavioral context beyond the empty input schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no waste, front-loaded with the action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool with no parameters or output schema, the description fully covers purpose and prerequisites.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters in schema (0 params, 100% coverage). Description adds value by noting required environment variables, going beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Show your current squad', a specific verb+resource. It is distinct from siblings current_gameweek, recommend_players, and make_transfer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description mentions prerequisites (FPL_ENTRY_ID and FPL_COOKIE) but does not explicitly state when to use vs alternatives. However, the purpose is clear and no sibling performs the same function.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recommend_playersA

Rank available players by a blend of form, value (points per £m), and upcoming fixture difficulty.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
horizonNoNumber of upcoming fixtures to average difficulty over.
max_costNoMaximum price in £m (e.g. 8.5).
positionNoFilter to a single position.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the ranking criteria but does not explicitly confirm that the tool is read-only or describe any side effects. However, the described action (ranking) inherently suggests a query operation, so it is minimally transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that directly communicates the core functionality without superfluous details. Every word adds value, making it concise and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has four parameters, no output schema, and no annotations, the description is adequate but not fully complete. It explains what the tool does and the ranking factors but does not describe the return format, ordering, or potential limitations. The lack of output schema increases the need for behavioral context, which the description partially fulfills.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers 75% of parameters with descriptions (horizon, max_cost, position). The tool description adds context about the ranking blend but does not clarify the 'limit' parameter, which is described only in schema constraints. Overall, the description adds some meaning beyond the schema but not significantly for all parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Rank available players by a blend of form, value, and upcoming fixture difficulty.' It specifies a verb (rank), a resource (available players), and ranking criteria, making it easy to understand. The tool is distinct from its siblings (current_gameweek, my_squad, make_transfer) which serve different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

While the description implies the tool is for getting player recommendations, it does not provide explicit guidance on when to use it versus alternative tools or when not to use it. The context from sibling tools helps, but the description itself lacks direct usage instructions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 4 tool updatesv0.1.0
    • First observedcurrent_gameweek
    • First observedmake_transfer
    • First observedmy_squad
    • First observedrecommend_players

TDQS

A3.9/5.0
Disambiguation5/5

Each tool serves a distinct purpose: gameweek info, player recommendations, squad viewing, and transfers. No overlap.

Naming Consistency4/5

All names use snake_case, but verb placement varies: 'current_gameweek' uses adjective, others use verb_noun. Mostly consistent.

Tool Count3/5

4 tools cover basic FPL operations but feel minimal. Could expand with chip management or league features.

Completeness3/5

Core CRUD-like operations present: read gameweek, read squad, create transfer. Missing updates (e.g., squad order) and chip actions.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    A
    maintenance
    A Model Context Protocol server that provides access to Fantasy Premier League data, allowing users to compare players, find team information, view gameweek data, and get FPL-related advice through Claude for Desktop and other MCP-compatible clients.
    23
    78
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    MCP server for the Fantasy Premier League API, enabling querying of players, teams, fixtures, and your FPL team through any MCP-compatible client.
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    MCP server for NFL fantasy football retrieval, providing access to NFL stats and Sleeper league data through retrieval-oriented tools.
    -

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/mgphp/fpl-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server