# NHL MCP

> NHL MCP Server gives your AI agent real-time access to National Hockey League data. You can query live scores, check current standings, pull deep player stats (like powerplay performance), and retrieve historical boxscores for any game or season.

## Overview
- **Category:** data-analytics
- **Price:** Free
- **Tags:** nhl, hockey, sports-stats, live-scores, player-statistics

## Description

**NHL MCP Server** gives your agent deep, real-time access to National Hockey League data. You're not just getting a list of facts; you're tapping into an active pipeline that covers everything from live action right up through decades of history. When you use this server, your AI client pulls the exact metrics you need—no guesswork involved.

**Getting Live Action and Schedules**
You can check real-time scores for games currently running using `get_live_scores`, or see what's scheduled for today with `get_current_schedule`. If you need to plan ahead, use `get_season_standings` for full season rankings, or grab the current league structure by checking out `get_conferences` and `get_divisions`. You can also pinpoint exactly when games happen using `get_schedule_by_date`, or get a month-by-month view of a team's travel with `get_team_monthly_schedule`, and even look at the week-by-week schedule breakdown via `get_team_weekly_schedule`. For immediate action, your agent can pull up current game scores using `get_live_scores` or get instant stats for active players during a match through `get_skater_realtime`.

**Analyzing Specific Game Events and Player Performance**
When you need to dive into how a specific game played out, the server gives you options. You can pull a complete boxscore for one matchup using `get_game_boxscore`, or get every single action recorded in a match with `get_game_play_by_play`. For player deep dives, use `get_player_landing` to check detailed stats and background info on any specific athlete. If you're looking at what the team had going on for that season, `get_team_roster` pulls the complete list of players for a defined year, while `get_team_summary` gives an overall performance snapshot for the whole franchise or team.

**Deep Analytics and Specialized Metrics**
This is where you get specialized numbers. The server lets your agent calculate specific metrics like powerplay effectiveness using `get_skater_powerplay`, or check how teams are performing from the faceoff dot with `get_team_faceoff_percentages`. For goalies, you don't just get saves; you can run advanced stats by calling `get_goalie_advanced` or calculating saves based on shooting strength using `get_goalie_saves_by_strength`, and always pull a general overview of their play with `get_goalie_summary`. For skaters, you can get a general performance summary via `get_skater_summary`. You can also check out league records like the 1,000 career points milestone using `get_records_milestone_1000_point`, or see who hit a 50-goal season record with `get_records_milestone_50_goal`.

**Historical and Archival Data Access**
Need to look back in time? The server handles old data for you. You can retrieve the full boxscore from seasons past using `get_legacy_game_boxscore`, or get a simple line score if all you want is the final count with `get_legacy_game_linescore`. If you need more detail on an old match, `get_legacy_game_live_feed` pulls deep play-by-play data and coordinates for archived games. You can also fetch media links and highlights related to a past game using `get_legacy_game_content`. For player history, you've got `get_legacy_player_info` for background details or use `get_legacy_player_stats` to build out an athlete’s entire career record. The server also tracks old draft picks with `get_legacy_draft`, and checks records related to franchise season totals using `get_records_franchise_team_totals`. You can even look up historical league attendance data via `get_records_attendance`, or review the full history of trophies awarded by calling `get_records_trophies`.

**League Structure and General Records**
To understand the breadth of the league, you can pull a list of all active and former teams using `get_franchises`, or see what historical records are tied to specific franchises with `get_records_franchises`. The server tracks league officials' records through `get_records_officials` and gives you general awards information by calling `get_awards`. You can find out about every official NHL venue location using `get_venues`. If you're searching for a player, use `suggest_players` or narrow it down with `suggest_active_players`, then nail the exact person using `search_player`.

## Tools

### get_awards
Retrieves information about NHL awards.

### get_conferences
Lists the current NHL conferences.

### get_current_schedule
Provides today's full schedule of NHL games.

### get_current_standings
Pulls the current season standings for all teams.

### get_divisions
Lists the current NHL divisions.

### get_franchises
Retrieves a list of active and former NHL franchises.

### get_game_boxscore
Gets the complete boxscore for one specific game ID.

### get_game_play_by_play
Provides play-by-play data records for a single match.

### get_goalie_advanced
Retrieves advanced statistical metrics specific to goalies.

### get_goalie_saves_by_strength
Calculates goalie saves based on shooting strength statistics.

### get_goalie_summary
Pulls a general summary of goalie performance stats.

### get_legacy_draft
Accesses historical data from previous NHL drafts.

### get_legacy_game_boxscore
Retrieves the boxscore for a game played in past seasons.

### get_legacy_game_content
Fetches media links and highlights related to an old match.

### get_legacy_game_linescore
Retrieves the simple line score for a game from past seasons.

### get_legacy_game_live_feed
Gets deep play-by-play, coordinates, and player stats for an archived match.

### get_legacy_player_info
Retrieves general biographical information about a player from past years.

### get_legacy_player_stats
Gets historical career statistics for any NHL player.

### get_live_scores
Fetches the real-time scores for currently active games.

### get_player_landing
Pulls detailed stats and biographical information for a specific player ID.

### get_records_attendance
Gets historical NHL records related to game attendance.

### get_records_franchise_season_records
Retrieves franchise-specific season records for the league.

### get_records_franchise_team_totals
Gets cumulative team totals and historical records for a specific franchise over time.

### get_records_franchises
Retrieves league-wide record data grouped by franchise name.

### get_records_milestone_1000_point
Checks records for players who achieved 1,000 career points.

### get_records_milestone_500_goal
Retrieves records detailing players who scored 500 career goals.

### get_records_milestone_50_goal
Gets historical record data for players hitting 50-goal seasons.

### get_records_officials
Accesses NHL record data related to league officials and referees.

### get_records_trophies
Pulls historical records detailing NHL trophies awarded.

### get_roster_seasons
Lists all available seasons for which a team's roster data exists.

### get_schedule_by_date
Gets the NHL schedule for any specific date you request.

### get_season_standings
Retrieves the full standings data for a completed season.

### get_skater_powerplay
Calculates and retrieves specialized stats about skater performance on the powerplay.

### get_skater_realtime
Gets immediate, real-time statistics for active skaters during a game.

### get_skater_summary
Pulls a general summary of skater performance stats.

### get_stats_config
Retrieves the required configuration details for advanced statistics API calls.

### get_team_faceoff_percentages
Calculates and retrieves team faceoff percentage stats.

### get_team_monthly_schedule
Gets a month-by-month schedule breakdown for any given team.

### get_team_powerplay
Calculates and retrieves overall powerplay stats for a whole team.

### get_team_roster
Pulls the complete roster list for a specific team in a given season.

### get_team_season_schedule
Gets all games scheduled and played by a team within one current season.

### get_team_summary
Pulls overall summary statistics for an entire franchise or team.

### get_team_weekly_schedule
Retrieves the schedule breakdown for a team week by week.

### get_venues
Lists all official NHL game venues and locations.

### search_player
Finds a player's ID using their name.

### suggest_active_players
Suggests active players based on the first few letters of a name fragment.

### suggest_players
Provides general suggestions for player names matching a given text fragment.

## Prompt Examples

**Prompt:** 
```
What is the NHL schedule for today?
```

**Response:** 
```
I'll check the current schedule for you. Today there are 5 games scheduled, including the Rangers vs. Bruins at 7:00 PM ET and the Oilers vs. Flames at 9:30 PM ET.
```

**Prompt:** 
```
Show me the roster for the Montreal Canadiens for the 20232024 season.
```

**Response:** 
```
Fetching the 2023-2024 roster for MTL... The roster includes key players like Nick Suzuki (C), Cole Caufield (LW), and Mike Matheson (D). Would you like stats for a specific player?
```

**Prompt:** 
```
Search for player Connor McDavid and show his current stats.
```

**Response:** 
```
Searching for Connor McDavid... Found Player ID 8478402. He currently has 132 points this season (32 goals, 100 assists) in 76 games played.
```

## Capabilities

### Get live scores and schedules
The agent pulls up current game scores or finds out what games are scheduled for a given day.

### Retrieve team standings and rosters
You get the current ranking of teams, or you pull a complete list of players on a specific team for a defined season.

### Get detailed player performance metrics
The agent pulls specialized stats—like advanced goalie saves or skater powerplay effectiveness—for any given player.

### Analyze specific game events
You retrieve a full boxscore, play-by-play feed, or even media highlights for one completed match.

### Query historical league records
The agent looks up past milestones, franchise totals, or seasonal records that aren't live data.

## Use Cases

### Tracking an unexpected team performance shift.
A sports reporter wants to prove a trend. They ask their agent, 'Show me the total goals scored by the Blues in the last 5 years.' The agent runs `get_records_franchise_team_totals` and combines it with `get_season_standings` data. Problem solved: they have concrete numbers for an article.

### Managing a fantasy lineup mid-week.
A manager needs to know if their star player is having an off night before setting their lineup. They ask the agent, 'What are McDavid's current stats?' The agent calls `get_skater_realtime` and `get_player_landing`, giving the manager immediate actionable data.

### Comparing modern vs. historical goalie play.
A coach wants to analyze whether goalies are playing differently now than they were in the 90s. They ask for `get_goalie_advanced` (modern) and then use `get_legacy_game_boxscore` on a game from that era, allowing direct statistical comparison.

### Quickly verifying today's action.
A user just wants to know the scores for tonight. They ask, 'What's on today?' The agent runs `get_current_schedule` and pulls up all live games in one query, skipping any need to visit a separate league website.

## Benefits

- See real-time game status instantly. Use `get_live_scores` or `get_current_schedule` to know what's happening right now, eliminating manual website checks.
- Build robust data models with structured records. Tools like `get_records_franchise_team_totals` let you track historical team performance across decades.
- Analyze player deep cuts without guesswork. Get specialized metrics—like skater powerplay stats via `get_skater_powerplay` or goalie advanced numbers (`get_goalie_advanced`)—directly into your workflow.
- Go beyond simple rosters. Use `get_team_roster` combined with `get_season_standings` to understand team composition and current league placement simultaneously.
- Handle both live and historical data in one place. Need a modern boxscore? Run `get_game_boxscore`. Need 1985 stats? Use `get_legacy_game_boxscore`.

## How It Works

The bottom line is: your AI client runs a specific, targeted API call using the tools to pull exactly the hockey data you ask for, then delivers it in plain text.

1. First, subscribe to the NHL server and enter 'PUBLIC' as your access token.
2. Second, tell your AI client exactly what you need. For example: 'What were the team totals for the Rangers franchise in 2018?'
3. Your agent executes the relevant tool (like `get_records_franchise_team_totals`) and hands you structured data.

## Frequently Asked Questions

**How do I get the current season standings using get_current_standings?**
You simply ask your agent to run `get_current_standings`. It pulls the latest data showing every team’s rank, points, and win/loss records for the active season.

**Can I use get_game_boxscore for last year's games?**
No. `get_game_boxscore` is for live or recently concluded games. For older matches, you must use the legacy endpoint: `get_legacy_game_boxscore`.

**What if I only know a player's name? Should I use search_player?**
Yes, always start with `search_player`. This tool takes the name and gives you the unique Player ID. You need that ID to run any other stats tools like `get_skater_summary` or `get_legacy_player_stats`.

**Is get_team_roster for current players only?**
No, you can specify the season. Use `get_team_roster` and provide the year (e.g., 2023-2024) to see the roster from any given historical season.

**How do I get data for a specific date?**
Use `get_schedule_by_date`. Just provide the date (YYYY-MM-DD), and the server will return all games scheduled or played on that day.

**When using get_game_boxscore, what unique identifiers do I need to ensure I pull data for a specific matchup?**
You must provide the game's unique ID. The boxscore tool requires this single identifier to scope the data correctly. Sending only dates or teams won't work; you need the exact match code.

**Should I use get_game_play_by_play or get_legacy_game_live_feed for historical games?**
If the game is recent, stick with `get_game_play_by_play`. For anything pre-2015, you'll need to use `get_legacy_game_live_feed` because that tool handles older data formats.

**If I need summary stats for every player on a team, is there a limit when using get_skater_summary?**
The API documentation specifies limits on the number of players per request. If you're pulling a full roster, break your calls into batches to avoid hitting rate constraints.

**How can I see the live scores for games happening right now?**
Use the `get_live_scores` tool. It will return all active NHL games with their current scores, period information, and clock status.

**Can I get a detailed breakdown of a specific game's performance?**
Yes! By using the `get_game_boxscore` tool with a valid Game ID, you can retrieve full team statistics, individual player contributions, and scoring summaries.

**How do I find advanced statistics for skaters like powerplay goals?**
You can use the `get_skater_powerplay` or `get_skater_summary` tools to fetch specialized performance metrics across the league.