npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

nhl-mcp

v0.1.0

Published

MCP server wrapping the unofficial NHL API (api-web.nhle.com)

Readme

nhl-mcp

An MCP (Model Context Protocol) server that wraps the unofficial NHL API (api-web.nhle.com), giving AI assistants like Claude real-time access to NHL scores, schedules, standings, rosters, and player stats.

Note: This project targets the undocumented api-web.nhle.com API reverse-engineered from nhl.com. It may break without notice if the NHL changes their API. Community reverse-engineering reference: Zmalski/NHL-API-Reference.


Quick start

Claude Desktop

Add to your claude_desktop_config.json:

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

Restart Claude Desktop. You can now ask things like:

  • "What are tonight's NHL scores?"
  • "Show me the Eastern Conference standings."
  • "How is Auston Matthews performing this season?"
  • "What does the Maple Leafs roster look like?"

Other MCP hosts (Cursor, etc.)

Use the same npx nhl-mcp command. Refer to your host's MCP configuration docs.


Available tools

| Tool | Description | |---|---| | get_scores | Live and final scores for a date (default: today) | | get_schedule | Team or league-wide schedule | | get_standings | League standings, filterable by conference/division | | get_team_info | Full roster for a team | | get_player_info | Player bio and stats by numeric ID | | search_player | Find a player by name, returns their ID | | get_game_detail | Boxscore and optional play-by-play for a game |


Development

git clone https://github.com/your-org/nhl-mcp
cd nhl-mcp
npm install
npm run build

# Run with the MCP inspector for interactive testing
npm run inspector

Running tests

npm test

Project structure

src/
├── index.ts          # MCP server entrypoint and tool registry
├── api/
│   ├── client.ts     # Typed fetch wrapper for api-web.nhle.com
│   └── types.ts      # Hand-crafted response types
├── tools/            # One handler file per domain
│   ├── scores.ts
│   ├── schedule.ts
│   ├── standings.ts
│   ├── teams.ts
│   ├── players.ts
│   └── game.ts
└── utils/
    └── errors.ts     # Safe tool call wrapper

Known limitations

  • Undocumented API: api-web.nhle.com has no official docs and can change at any time.
  • Geo-blocking: Some endpoints may behave differently outside North America.
  • Off-season data: Schedule and standings shapes differ during the off-season. If you hit issues, open an issue with the date range.
  • Play-by-play: The play-by-play response shape is highly variable and returned as raw JSON. Parse with care.

Contributing

PRs are welcome. Before submitting:

  1. Run npm run typecheck — zero errors required.
  2. Add or update tests in tests/ for any new tool behavior.
  3. If you've discovered new API fields, add them to src/api/types.ts as optional (| undefined).

License

MIT