jk-mcp-epl
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| HOST | No | Bind address (HTTP transport only) | 0.0.0.0 |
| PORT | No | TCP port (HTTP transport only) | 8000 |
| API_HOST | No | ESPN API base URL | https://site.api.espn.com |
| MCP_PATH | No | URL path (HTTP transport only) | /mcp/epl |
| LOG_LEVEL | No | DEBUG, INFO, WARNING, or ERROR | INFO |
| MCP_TRANSPORT | No | Transport mode: stdio or streamable-http | stdio |
| MCP_AUTH_ENABLED | No | Require RS256 bearer tokens on streamable-http | |
| MCP_AUTH_ISSUER_URL | No | Auth-server origin (required when auth is on) | |
| MCP_TRACING_ENABLED | No | Bootstrap the OpenTelemetry SDK | |
| MCP_AUTH_RESOURCE_URL | No | This server's public URL for the aud claim |
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
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_teamsA | Get all active Premier League teams. Returns a numbered list of teams with their ID, full name, abbreviation, and home city. Use the ID or abbreviation with get_team to retrieve detailed information about a specific team. |
| get_teamA | Get details for a specific Premier League team. Returns full team information including display name, abbreviation, and location. Use the numeric ID returned by get_teams. Args: team_id: ESPN numeric team ID (e.g. "18418" for Atlanta United FC). |
| get_scoreboardA | Get Premier League match scores and status for a date or date range. With no arguments, returns matches for the current matchweek. With
Args:
date: Optional start date in YYYYMMDD format (e.g. "20260418").
end_date: Optional end date in YYYYMMDD format. Requires |
| get_rosterA | Get the active roster for an Premier League team. Returns each player's jersey number, name, position, citizenship, and age. Use the team ID returned by get_teams. Args: team_id: ESPN numeric team ID (e.g. "18418" for Atlanta United FC). |
| get_match_detailsA | Get detailed information for a single Premier League match. Returns the score, venue, attendance, and a chronological list of key events (goals, substitutions, cards). Use the match ID returned by get_scoreboard or get_team_schedule. Args: match_id: ESPN numeric event ID (e.g. "401853883"). |
| get_team_scheduleA | Get all matches for a single Premier League team in the current season. Returns scheduled, in-progress, and completed matches for the team — with opponent, date, score (if played), and status. Args: team_id: ESPN numeric team ID (e.g. "18418" for Atlanta United FC). |
| get_newsA | Get recent Premier League news articles. Returns each article's headline, publication date, summary, and link to the full ESPN story. Args: limit: Maximum number of articles to return (default 10). |
| get_standingsA | Get the current Premier League standings. Returns the eight-team table ordered by points descending, with win/loss/tie record, goals for, goals against, and goal differential. |
| get_playersA | Get Premier League player registrations from the Pulselive/Opta feed. Richer than ESPN's roster: carries the Opta player id, shirt number, detailed positional label (e.g. "Centre-back" vs "Right-back"), current-club affiliation, nationality, date of birth, and loan flag. Defaults to the most recent completed season — the current season may not have full registrations until the transfer window closes. Args: season_year: Currently ignored (see roadmap). Reserved for a future per-year season lookup. limit: Maximum number of players to return (default 50, max 500). |
| get_strength_of_scheduleA | Get a team's strength of schedule based on opponents already faced. Returns the average current points-per-game of every opponent the team has played in completed matches, plus a per-opponent breakdown. Useful early in the season for "who has played the tougher schedule so far?" questions. Args: team_id: ESPN numeric team ID (e.g. "18418" for Atlanta United FC). |
| get_results_by_opponent_tierA | Get a team's W-L-T splits against current top-tier, middle, and bottom-tier teams. Tiers are derived from the live league standings: top Args: team_id: ESPN numeric team ID. tier_size: Number of teams in each of the top and bottom tiers. Defaults to 5. Must be at least 1, and 2*tier_size must not exceed the league size. |
| get_adjusted_points_per_gameA | Get a team's raw points-per-game alongside an opponent-quality-adjusted PPG. Adjusted PPG scales raw PPG by Args: team_id: ESPN numeric team ID. |
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 12 tools
Most tools have clearly distinct purposes, but get_roster and get_players both return player information and get_scoreboard vs get_team_schedule could be confused for team-specific date queries. Descriptions adequately differentiate them, but a few boundaries are close.
All tools follow a consistent get_<noun> pattern in snake_case. Multi-word nouns are used consistently, making the API predictable and easy to navigate.
12 tools is well-scoped for a Premier League data server, covering team, match, player, news, standings, and advanced analytics without redundancy. Each tool earns its place.
The tool set covers core domains well: teams, matches, rosters, players, news, standings, and analytics. Minor gaps exist like individual player stats or detailed match events beyond key events, but these are workable.