Skip to main content
Glama
owen-lacey

FPL MCP Server

by owen-lacey
README.md
# FPL MCP Server

A Model Context Protocol (MCP) server for the Fantasy Premier League API.

## Installation

### Install from NPM (Recommended)

```sh
npm install -g fpl-mcp
```

### Install from Source

```sh
git clone https://github.com/owen-lacey/fpl-mcp.git
cd fpl-mcp
npm install
npm run build
```

## Quick Start

### Using with Claude Desktop

If installed via NPM, add this to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "fpl-api": {
      "command": "npx",
      "args": ["fpl-mcp@latest"]
    }
  }
}
```

If installed from source, use:

```json
{
  "mcpServers": {
    "fpl-api": {
      "command": "node",
      "args": ["/path/to/fpl-mcp/build/src/server.js"]
    }
  }
}
```

### Inspect the MCP tools
Use the Model Inspector to explore available tools:
```sh
npx @modelcontextprotocol/inspector npx fpl-mcp
```

## Usage Example

You can connect this MCP server to Claude Desktop and interact with FPL data using natural language.

![Screenshot of Claude Desktop using FPL MCP server](docs/claude-screenshot.png)

---

## Endpoints Supported
See `docs/fpl-api-cheatsheet.md` for all FPL API endpoints exposed as MCP tools.


---

## Example Prompts

Use these prompts to interact with the MCP server via your LLM:

- "Show me the fixtures for gameweek 5."
- "How am I doing in my private leagues (team id is 12345)?"
- "How did mo salah get on in GW1?"

You can ask natural language questions about any supported endpoint. The LLM will use the appropriate MCP tool to fetch the data.

---

## Development

### Publishing to npm

This repository includes a GitHub Actions workflow that automatically publishes to npm when the version number in `package.json` changes.

#### Setup

1. Create an npm access token:
   - Log in to [npmjs.com](https://www.npmjs.com/)
   - Go to Access Tokens in your account settings
   - Generate a new "Automation" token

2. Add the token to GitHub Secrets:
   - Go to your repository Settings > Secrets and variables > Actions
   - Create a new secret named `NPM_TOKEN`
   - Paste your npm token as the value

3. Publish a new version:
   - Update the version in `package.json` (e.g., `1.0.1` → `1.0.2`)
   - Commit and push to the `main` branch
   - The workflow will automatically build and publish to npm
   - A git tag (e.g., `v1.0.2`) will be created automatically

---

## License
MIT

TDQS

B3.2/5.0

Scored across 16 tools

Disambiguation5/5

Every tool has a clearly distinct purpose targeting specific FPL resources like leagues, players, teams, fixtures, or gameweeks, with no overlap in functionality. The descriptions precisely indicate what each tool fetches, making it easy for an agent to select the correct one without confusion.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern starting with 'get' followed by a descriptive noun phrase (e.g., getElementSummary, getFixturesForGameweek), with no deviations in style or convention. This predictability enhances usability and clarity across the entire set.

Tool Count5/5

With 16 tools, the server is well-scoped for the FPL domain, covering a comprehensive range of data points from player details to league standings without being excessive. Each tool serves a specific, necessary function, making the count appropriate for thorough data retrieval in fantasy football.

Completeness5/5

The tool set provides complete coverage for fetching FPL data, including CRUD-like operations for players, teams, leagues, fixtures, and gameweeks, with no obvious gaps. It supports both general queries (e.g., getPlayerData) and specific ones (e.g., getElementSummary), ensuring agents can access all needed information without dead ends.

Maintenance

ActivityInactive
ResponsivenessNo issues