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 🙏

© 2025 – Pkg Stats / Ryan Hefner

@openconductor/sportintel

v1.0.0

Published

MCP server for sports data, fantasy insights, and betting analysis - powered by AI

Readme

SportIntel MCP Server

AI-powered sports intelligence directly in Claude. Get live scores, standings, team info, and insights for NBA, NFL, MLB, NHL, and MLS.

Powered by ESPN's public APIs with intelligent caching and AI-friendly data formatting

Features

  • 🏀 Live Scores - Real-time game scores and status for all major sports
  • 📊 Standings - Current league standings with wins, losses, and rankings
  • 🔍 Team Search - Find teams across all leagues and sports
  • ⚡ Smart Caching - Automatic caching to respect API rate limits
  • 🎯 AI-Optimized - Data formatted perfectly for Claude's analysis

Supported Sports & Leagues

  • Basketball: NBA
  • Football: NFL
  • Baseball: MLB
  • Hockey: NHL
  • Soccer: MLS

Installation

Using OpenConductor CLI (Recommended)

npm install -g @openconductor/cli
openconductor install sportintel

Manual Installation

npm install -g @openconductor/sportintel

Then add to Claude Desktop config:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "sportintel": {
      "command": "node",
      "args": [
        "/usr/local/lib/node_modules/@openconductor/sportintel/dist/index.js"
      ]
    }
  }
}

Available Tools

get_live_scores

Get live scores and game results with real-time updates.

Parameters:

  • sport (required): "basketball", "football", "baseball", "hockey", or "soccer"
  • league (optional): Specific league (defaults to main league for sport)

Example:

Show me today's NBA scores

Returns:

  • Game status (live, final, scheduled)
  • Team names and records
  • Current scores
  • Betting lines (when available)

get_standings

Get current league standings organized by division/conference.

Parameters:

  • sport (required): Sport type
  • league (optional): Specific league

Example:

What are the current NBA standings?

Returns:

  • Division/conference breakdowns
  • Wins, losses, win percentage
  • Games behind leader
  • Top 10 teams per division

search_teams

Search for teams by name or city.

Parameters:

  • query (required): Team name or city
  • sport (optional): Filter by sport
  • league (optional): Filter by league

Example:

Find the Lakers team information

Returns:

  • Team names and abbreviations
  • Location
  • Current record
  • Team ID for other queries

Usage Examples

Once installed, ask Claude:

Live Scores:

  • "What are today's NBA scores?"
  • "Show me live NFL games"
  • "How did the Lakers do today?"

Standings:

  • "Show me the NBA Eastern Conference standings"
  • "What's the NFL playoff picture?"
  • "Who's leading the AL East in baseball?"

Team Search:

  • "Find the Boston Celtics"
  • "Search for NFL teams in California"
  • "What teams are called the Rangers?"

Fantasy & Analysis:

  • "Compare the Lakers and Celtics recent performance"
  • "Which teams are on winning streaks?"
  • "Analyze the playoff race in the Western Conference"

Technical Details

Data Sources

  • ESPN API: Public endpoints for scores, standings, and team data
  • Caching: 2-minute cache for live scores, 1-hour for standings
  • No API Keys Required: Uses public ESPN endpoints

Caching Strategy

Live Scores:   2 minutes  (frequent updates)
Standings:     1 hour     (daily changes)
Team Data:     24 hours   (rarely changes)

Rate Limiting

Built-in caching ensures respectful API usage:

  • Automatic deduplication
  • Configurable TTLs per data type
  • Memory-efficient cache cleanup

Architecture

Claude Desktop
    ↓ (MCP Protocol)
SportIntel MCP Server
    ↓ (HTTP with caching)
ESPN Public APIs

Code Structure

src/
├── index.ts              # Main MCP server
├── providers/
│   └── espn.ts          # ESPN API client
├── tools/
│   ├── live-scores.ts   # Live scores tool
│   ├── standings.ts     # Standings tool
│   └── team-search.ts   # Team search tool
└── cache/
    └── simple-cache.ts  # In-memory cache

Development

Build from source

git clone https://github.com/epicmotionSD/openconductor.git
cd openconductor/packages/mcp-servers/sportintel
npm install
npm run build

Testing

# Build the server
npm run build

# Test with MCP inspector
npx @modelcontextprotocol/inspector node dist/index.js

# Test ESPN API directly
curl "http://site.api.espn.com/apis/site/v2/sports/basketball/nba/scoreboard"

Use Cases

For Sports Fans

  • Check live scores without leaving Claude
  • Get instant standings updates
  • Find team schedules and results

For Fantasy Sports Players

  • Track player team performance
  • Monitor standings and playoff races
  • Compare team matchups

For Bettors (Educational)

  • View betting lines and spreads
  • Analyze team performance trends
  • Track over/under trends

For AI Analysis

  • Statistical analysis of teams
  • Trend identification
  • Predictive insights based on data

Roadmap

v1.1 (Coming Soon)

  • [ ] Player statistics and profiles
  • [ ] Team schedules and calendars
  • [ ] Injury reports
  • [ ] Game summaries and highlights

v1.2 (Future)

  • [ ] Advanced analytics and predictions
  • [ ] Fantasy points projections
  • [ ] Historical data and trends
  • [ ] More sports (NCAA, international leagues)

v2.0 (Vision)

  • [ ] Real-time play-by-play
  • [ ] Premium data sources (SportRadar partnership)
  • [ ] Custom alerts and notifications
  • [ ] Freemium tier with advanced features

API Compatibility

SportIntel uses ESPN's public API endpoints:

  • http://site.api.espn.com/apis/site/v2/sports/{sport}/{league}/scoreboard
  • http://site.api.espn.com/apis/site/v2/sports/{sport}/{league}/standings
  • http://site.api.espn.com/apis/site/v2/sports/{sport}/{league}/teams

These are publicly accessible and don't require API keys.

Limitations

Current Version:

  • No player-level statistics (team-level only)
  • Limited historical data
  • Dependent on ESPN API availability
  • No real-time play-by-play

Data Freshness:

  • Live scores: Updated every 2 minutes
  • Standings: Updated every hour
  • Schedule data: Cached 24 hours

Contributing

Contributions welcome! Please see the main OpenConductor repository for guidelines.

Related Projects

License

MIT License - see LICENSE for details

Support

Disclaimer

This tool is for informational and educational purposes. Sports data provided by ESPN. Betting information (when shown) is for educational purposes only. Please gamble responsibly.


Built for the Anthropic Model Context Protocol Challenge

Made with ❤️ by the OpenConductor team