Skip to main content
Glama
Left-Coast-Tech

ESPN MCP Server

ESPN MCP Server

A Model Context Protocol (MCP) server that provides access to ESPN's public API for live sports data.

Supported Leagues

  • NFL (National Football League)

  • NHL (National Hockey League)

  • NBA (National Basketball Association)

Related MCP server: ESPN MCP Server

Features

  • Current standings and playoff picture

  • Live scores and game schedules

  • Team information and statistics

  • Flexible team name resolution (city, nickname, or abbreviation)

Installation

npm install -g espn-mcp-server

Or clone and build:

git clone https://github.com/Left-Coast-Tech/espn-mcp.git
cd espn-mcp
npm install
npm run build

Usage with Claude Desktop

Add to your Claude Desktop config (~/.config/claude/claude_desktop_config.json on Mac/Linux or %APPDATA%\Claude\claude_desktop_config.json on Windows):

{
  "mcpServers": {
    "espn": {
      "command": "npx",
      "args": ["espn-mcp-server"]
    }
  }
}

Or if installed globally:

{
  "mcpServers": {
    "espn": {
      "command": "espn-mcp-server"
    }
  }
}

Usage with Claude Code

Add to your project's .mcp.json:

{
  "espn": {
    "command": "npx",
    "args": ["espn-mcp-server"]
  }
}

Available Tools

get_standings

Get current standings for a league.

league: "nfl" | "nhl" | "nba" (required)
group: conference or division filter (optional)

Example: "Get NFL standings for the AFC East"

get_scoreboard

Get current or upcoming games with scores.

league: "nfl" | "nhl" | "nba" (required)
week: NFL week number (optional)
date: YYYYMMDD format (optional)

Example: "What NFL games are on this week?"

get_team

Get team information including record and standing.

league: "nfl" | "nhl" | "nba" (required)
team: team name, city, or abbreviation (required)

Example: "Get info on the Patriots"

get_schedule

Get a team's schedule with results.

league: "nfl" | "nhl" | "nba" (required)
team: team name, city, or abbreviation (required)

Example: "Show me the Chiefs remaining schedule"

get_game

Get details about a specific game.

league: "nfl" | "nhl" | "nba" (required)
gameId: ESPN game ID (required)

get_playoffs

Get playoff bracket or playoff picture.

league: "nfl" | "nhl" | "nba" (required)

Example: "Show me the NBA playoff bracket"

Examples

Once configured, you can ask Claude:

  • "What are the current NFL standings?"

  • "Who's leading the AFC North?"

  • "What's the Broncos record?"

  • "What NBA games are on tonight?"

  • "Show me the NHL playoff picture"

Data Source

This server uses ESPN's public API. Data is fetched in real-time and is not cached.

License

MIT

Contributing

Contributions welcome! Please open an issue or PR.

Available Tools

6 tools
get_gameA

Get detailed information about a specific game including box score if completed.

ParametersJSON Schema
NameRequiredDescriptionDefault
gameIdYesESPN game ID
leagueYesThe sports league

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. It does indicate that box score is only included if the game is completed, which adds useful context, but it doesn't clarify what is returned for incomplete games or any error conditions.

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 clear sentence with no redundant information, front-loaded with the action and resource.

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?

The tool is simple with only two parameters, but the lack of an output schema and annotations leaves the response format vague. The 'if completed' condition creates ambiguity about the behavior for incomplete games, making the description minimally adequate.

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?

Both parameters are fully described in the schema (league as enum, gameId as string with description), and the description doesn't add extra meaning beyond what the schema already provides, so the baseline score of 3 applies.

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 uses the specific verb 'Get' with the resource 'a specific game' and adds the conditional detail about box score completion, clearly distinguishing it from sibling tools like get_scoreboard and get_schedule.

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?

There is no explicit comparison to alternatives. The phrase 'a specific game' implies this is for retrieving a single game's details, but it doesn't specify when to prefer it over get_scoreboard or get_schedule.

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

get_playoffsC

Get current playoff bracket or playoff picture/standings.

ParametersJSON Schema
NameRequiredDescriptionDefault
leagueYesThe sports league

TDQS

C2.7/5.0
Behavior1/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, yet it fails to even imply read-only safety, data freshness, or behavior during the offseason. The agent has no information about side effects, authentication needs, or potential errors.

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

Conciseness4/5

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

The description is concise at 11 words and front-loads the purpose. However, the ambiguous 'or' could have been clarified without much extra length, so it is slightly less effective than it could be.

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

Completeness2/5

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

The description is incomplete for an agent to confidently invoke the tool. It does not resolve the bracket vs. standings ambiguity, lacks output schema, and does not differentiate from get_standings. The single parameter is well-defined, but overall context is missing.

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 schema already fully covers the 'league' parameter with an enum and description, so the description does not need to add meaning. Since coverage is 100%, the baseline of 3 applies, and the description provides no additional parameter insight.

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

Purpose4/5

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

The description clearly identifies the tool as retrieving playoff information with the verb 'Get' and resource 'playoff'. However, the phrase 'bracket or playoff picture/standings' introduces ambiguity about whether one or both are returned, and it does not distinctly separate from the sibling tool get_standings.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus siblings like get_standings or get_scoreboard. There is no mention of postseason context, prerequisites, or circumstances where this tool is preferred over alternatives.

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

get_scheduleA

Get a team's schedule including past results and upcoming games.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamYesTeam name, city, or abbreviation
leagueYesThe sports league

TDQS

A3.8/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 burden of behavioral disclosure. It discloses that the schedule includes past results and upcoming games, which is useful scope information, but it does not mention return format, data freshness, or read-only behavior beyond the obvious.

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 of 10 words, front-loaded with the action ('Get') and resource ('a team's schedule'). Every word adds value, with no redundancy or filler.

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?

For a simple read tool with two parameters and no output schema, the description sufficiently explains the tool's purpose and returns (past results and upcoming games). It could mention league or team scoping, but those are already in the schema, and the sibling context helps clarify. Slightly incomplete regarding data boundaries like season or competition, but acceptable.

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 description coverage is 100% for both parameters, so the schema already explains 'team' and 'league'. The description does not add extra meaning beyond noting the team's schedule, but it does not need to since the schema is complete.

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 uses a specific verb ('Get') and resource ('a team's schedule'), clearly distinguishing it from sibling tools like get_standings or get_scoreboard. The phrase 'including past results and upcoming games' adds precision about the content.

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?

The description implies usage for retrieving a team's schedule but does not explicitly mention alternatives or when not to use this tool. It provides clear context but lacks explicit exclusions or references to sibling tools like get_game for single games.

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

get_scoreboardA

Get current or upcoming games with scores. For NFL, can specify week number.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoOptional: specific date in YYYYMMDD format
weekNoNFL only: week number (1-18 regular season, 19+ playoffs)
leagueYesThe sports league

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It states it returns current/upcoming games with scores and mentions NFL week support, but it does not disclose whether past games can be accessed, whether scores are live or final, or how the date parameter affects the 'current/upcoming' logic. This leaves significant ambiguity.

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 two short sentences, front-loaded with the core purpose, and contains no filler or redundant information. It is efficient and easy to scan.

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?

The tool is relatively simple, but without an output schema, the description should describe return structure or edge-case behavior. It does not mention response format, date handling for non-NFL leagues, or score status, leaving some gaps in contextual completeness.

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 provides 100% descriptive coverage for all parameters, so the baseline is 3. The description adds no new parameter semantics beyond repeating that week is NFL-only, which the schema already states.

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 a specific action ('Get current or upcoming games with scores') and resource, distinguishing it from siblings like get_schedule (schedule without scores) and get_game (individual game details). The NFL week note adds specificity without confusing the core purpose.

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?

The description implies usage for scoreboard queries but does not explicitly contrast with alternatives such as get_schedule or get_game. The NFL week note is the only usage hint, providing no when-not-to-use guidance.

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

get_standingsA

Get current standings for a league. Returns win-loss records, division standings, and playoff positioning.

ParametersJSON Schema
NameRequiredDescriptionDefault
groupNoOptional: conference (afc, nfc, eastern, western) or division (afc-east, nfc-north, atlantic, pacific, etc.)
leagueYesThe sports league

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden. It adds value by disclosing the type of data returned, which helps set expectations. However, it does not mention any limitations or edge cases, though for a read-only standings tool these are less critical.

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 sentences with no waste: the first declares the action and scope, the second summarizes the return content. Every word contributes meaning.

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?

For a simple read-only query with one required and one optional parameter, the description is sufficient. It covers the purpose and expected output. A small gap is the lack of note about the 'group' filter, but the schema already explains this.

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 description coverage is 100%, with both parameters clearly documented (league enum and group examples). The tool description adds no additional param-level detail, so it meets the baseline but does not exceed it.

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 'Get current standings for a league' with a specific verb and resource, and highlights output elements (win-loss records, division standings, playoff positioning). This distinguishes it from sibling tools like get_scoreboard or get_playoffs.

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?

The description implies use for league standings but does not explicitly mention when to prefer this over alternatives like get_playoffs for full playoff brackets. No when-not-to-use guidance is given.

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

get_teamA

Get detailed information about a specific team including record, stats, and current standing.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamYesTeam name, city, or abbreviation (e.g., 'Patriots', 'New England', 'NE')
leagueYesThe sports league

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries full responsibility for disclosing behavioral traits. It only states that the tool retrieves information; it does not mention read-only nature, permission requirements, error handling, rate limits, or data freshness. This is a significant gap for a tool with no annotation support.

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 efficiently conveys the action, resource, and expected output. There is no fluff or redundant information, making it highly concise and well-structured.

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?

For a simple 2-parameter read tool with complete schema descriptions and no output schema, the description adequately covers the core purpose. However, it lacks details on return format or error behavior, and does not explicitly differentiate from sibling tools, so it is not fully complete. Overall, it is sufficient but with minor gaps.

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 description coverage is 100% because both 'team' and 'league' have clear descriptions, and 'league' has an enum. The tool description adds no parameter-specific meaning beyond what the schema already provides, so a baseline score of 3 is appropriate.

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 uses a specific verb 'Get' with a clear resource ('a specific team') and lists the output content (record, stats, current standing). This distinguishes it from sibling tools such as get_standings, which focuses on league standings, and get_scoreboard, which focuses on scores.

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?

The description implies usage when needing team-level details, but it does not explicitly state when to use this tool versus alternatives like get_standings or get_schedule. No exclusions or conditions are mentioned, so guidance is only implied, not explicit.

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. 6 tool updatesv1.0.3
    • First observedget_game
    • First observedget_playoffs
    • First observedget_schedule
    • First observedget_scoreboard
    • First observedget_standings
    • First observedget_team

TDQS

A3.6/5.0
Disambiguation4/5

Each tool targets a distinct aspect (standings, scores, team info, schedule, game details, playoffs). Minor overlap exists between get_team (which includes standing) and get_standings, and between get_scoreboard and get_game, but descriptions clarify the differences.

Naming Consistency5/5

All tools follow the consistent `get_` prefix followed by a clear noun (standings, scoreboard, team, schedule, game, playoffs). No mixed conventions or ambiguous verbs.

Tool Count5/5

With 6 tools, the server is well-scoped for a sports data provider. Each tool covers a core data need without bloat, and the count feels appropriately sized.

Completeness4/5

The server covers the major domains: standings, scores, teams, schedules, games, and playoffs. Minor gaps exist (e.g., player stats, league news, or team lists), but for the apparent purpose of game/season data, the surface is largely complete.

Maintenance

ActivityInactive
ResponsivenessNo issues

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
    Not graded
    quality
    C
    maintenance
    Provides access to comprehensive sports data from 5 major leagues (NBA, NFL, MLB, EPL, NHL) including teams, players, games, statistics, standings, injuries, and betting odds through 67+ endpoints. Enables users to query sports information and analytics through natural language.
    12
    MIT
  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Provides comprehensive access to ESPN's sports APIs for live scores, team information, news, and statistics across NFL, NBA, MLB, NHL, college sports, and major soccer leagues with advanced filtering and real-time updates.
    19
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides access to live NHL game data, team and player statistics, standings, schedules, playoff information, and head-to-head comparisons through natural language queries using official NHL APIs.
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Provides access to live NHL game data, player and team statistics, standings, schedules, playoff brackets, and historical comparisons through natural language queries using the official NHL API.
    11
    -

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/Left-Coast-Tech/espn-mcp'

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