Skip to main content
Glama
rithvik-bk

voiceos-sports

by rithvik-bk

Sports for VoiceOS — live multi-sport companion

A voice-first sports companion that runs inside VoiceOS's notch as a local MCP integration. Ask what games are on, check live scores and box scores, follow your team, read standings, look up any player, and get headlines — across NFL, NBA, MLB, NHL, WNBA, college football & basketball, and soccer (EPL/UCL/MLS) — in native cards you can tap through. It knows when a league is off-season and labels last season's standings accordingly. No API key, no account, no login: it works the moment it's installed.

What it does

Seven voice tools, each returning a rendered native card:

Tool

Say

Card

sports_scores

"what games are on", "did the Lakers win"

Tappable scoreboard → tap a game for its box score

sports_game

"how did the Chiefs game go"

Score by quarter, leaders, betting line, live win probability

sports_schedule

"when do the Warriors play next"

Upcoming + recent slate

sports_team

"how are the 49ers doing"

Team hub — GAMES / STANDINGS / PLAYERS tabs

sports_standings

"NBA West standings"

Ranked table with logos, records, win pct

sports_player

"Patrick Mahomes stats"

Headshot + season stat line

sports_news

"what's happening in the NBA"

Tappable headlines

The scoreboard and team hub are in-card mini-apps: tap a game to open its detail without leaving VoiceOS, then tap back.

Related MCP server: ESPN MCP Server

How it works

  • Data: ESPN's public JSON endpoints (site.api.espn.com) — keyless, read-only public data, the same undocumented endpoints every third-party "ESPN MCP" wraps, called directly here so there's no extra hosted layer. One URL shape covers every sport, so the same normalisers serve all ten leagues. A paid provider (e.g. API-Sports) is a drop-in adapter behind them for higher rate limits and deeper history.

  • Native cards: cards.ts composes the notch UI on the shared widgetKit.ts (vendored). Every tool result carries the rendered card under _voiceos_glance; the model always gets the underlying facts even if the card is dropped.

  • Logos: NFL/NBA logos are baked into logos.ts as small data: URIs; every other league's logos are fetched from ESPN and inlined on demand (ESPN's CDN isn't in the host CSP allowlist), deduped per card into one registry, with a step-down that trims the item count to stay under the host's HTML/glance caps.

  • Season awareness: an off-season league (detected by month) is labeled — standings say "last season's final" and scores note when the season starts.

  • Runtime: a single self-contained server.ts (Node/Bun native TypeScript, built-ins + fetch only). Runtime-agnostic networking with a curl fallback.

Install

# copy into the VoiceOS custom integrations directory
cp -R . "$HOME/Library/Application Support/VoiceOS/custom-mcps/sports"

Then register it in VoiceOS (or add a customMcpServers + installedIntegrations entry pointing cwd at the folder and running run.sh) and relaunch.

Layout

server.ts    MCP server + ESPN data layer + tool definitions
cards.ts     native notch cards (scoreboard, hub, box score, standings, player, news)
widgetKit.ts shared VoiceOS card kit (vendored)
logos.ts     baked NFL + NBA team-logo atlas (data URIs)
mark.ts      integration mark
run.sh       launcher (prefers node)

Built for the VoiceOS integration ecosystem.

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.
    6 npm
    -
  • A
    license
    A
    quality
    D
    maintenance
    Gives your MCP host (Claude Desktop, Cursor, Continue, Zed) access to live scores, match details, standings, top scorers, knockout brackets and player stats across football, basketball, cricket and tennis. Backed by the free public SportScore API — no key, no signup, CORS-open.
    8
    44 npm
    10
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables access to live ESPN sports data for NFL, NHL, and NBA leagues, including standings, scores, schedules, team info, and playoffs through natural language queries.
    6
    6 npm
    1
    MIT