Skip to main content
Glama
owen-lacey

FPL MCP Server

by owen-lacey

getLiveEvent

Fetch live gameweek statistics for Fantasy Premier League matches. Filter results to specific players by providing element IDs for targeted performance data.

Instructions

Fetch focused live stats for a gameweek. Optionally filter to specific players by providing elementIds array.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
gwYes
elementIdsNo

Implementation Reference

  • Core handler function that fetches live gameweek data, optionally filters by player element IDs, extracts essential stats, and returns structured player data.
    export async function getLiveEvent(gw: number, elementIds?: number[]): Promise<any> {
      const data = await fetchLiveEventRaw(gw);
    
      // Filter elements if specific IDs requested
      let elements = data.elements || [];
      if (elementIds && elementIds.length > 0) {
        elements = elements.filter((element: any) => elementIds.includes(element.id));
      }
    
      // Return only essential stats for each player
      const focusedElements = elements.map((element: any) => ({
        id: element.id,
        stats: {
          minutes: element.stats.minutes,
          goals_scored: element.stats.goals_scored,
          assists: element.stats.assists,
          clean_sheets: element.stats.clean_sheets,
          goals_conceded: element.stats.goals_conceded,
          own_goals: element.stats.own_goals,
          penalties_saved: element.stats.penalties_saved,
          penalties_missed: element.stats.penalties_missed,
          yellow_cards: element.stats.yellow_cards,
          red_cards: element.stats.red_cards,
          saves: element.stats.saves,
          bonus: element.stats.bonus,
          bps: element.stats.bps,
          influence: element.stats.influence,
          creativity: element.stats.creativity,
          threat: element.stats.threat,
          ict_index: element.stats.ict_index,
          starts: element.stats.starts,
          expected_goals: element.stats.expected_goals,
          expected_assists: element.stats.expected_assists,
          expected_goal_involvements: element.stats.expected_goal_involvements,
          expected_goals_conceded: element.stats.expected_goals_conceded,
          total_points: element.stats.total_points,
        }
      }));
    
      return {
        elements: focusedElements
      };
    }
  • Zod input schema defining parameters: required gameweek (gw) as number, optional elementIds as array of numbers.
    inputSchema: { gw: z.number(), elementIds: z.array(z.number()).optional() }
  • src/server.ts:50-64 (registration)
    Registers the 'getLiveEvent' tool with the MCP server, providing title, description, schema, and a wrapper that calls the core handler and formats the response.
    server.registerTool("getLiveEvent", {
      title: "Get Live Event",
      description: "Fetch focused live stats for a gameweek. Optionally filter to specific players by providing elementIds array.",
      inputSchema: { gw: z.number(), elementIds: z.array(z.number()).optional() }
    }, async ({ gw, elementIds }) => {
      const data = await getLiveEvent(gw, elementIds);
      return {
        content: [
          {
            type: "text",
            text: JSON.stringify(data)
          }
        ]
      };
    });
  • Internal helper function to fetch raw live event data from the Fantasy Premier League API.
    async function fetchLiveEventRaw(gw: number): Promise<any> {
      const res = await fetch(`https://fantasy.premierleague.com/api/event/${gw}/live/`);
      return res.json();
    }

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

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