Skip to main content
Glama
myersparkathleticzone-mcp

myersparkathleticzone-mcp

by chrischall

myersparkathleticzone-mcp

MCP server for Myers Park High School (Mustangs) athletics — schedules, teams, rosters, coaches, news and game broadcast links.

No credentials. Everything this server reads is public. There is no login, no API key, no browser extension and nothing to configure before it works.

Developed and maintained by AI. Use at your own discretion.

Install

npx myersparkathleticzone-mcp

Or in an MCP host's config:

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

Related MCP server: SportRadar MCP Server

Tools

Tool

What it does

mpaz_list_teams

The school's teams for a year, with the ids the other tools need

mpaz_resolve_team

Loose name ("varsity football") → team id

mpaz_get_schedule

Upcoming events across every team

mpaz_get_team_schedule

One team's full season

mpaz_get_scores

One team's results, with win/loss/tie from the school's point of view

mpaz_get_roster

A team's coaching staff and players

mpaz_list_news

Recent news posts

mpaz_list_videos

Games with an NFHS Network broadcast link

mpaz_list_photo_galleries

Published photo galleries

mpaz_healthcheck

Verify the site is reachable and parseable

Every tool is read-only; the server performs no writes.

Team-scoped tools need a numeric team id and a sport slug, and team ids differ per school year. Resolve them with mpaz_resolve_team rather than guessing — a stale id makes the site serve a Team … Not Found page (with HTTP 200), which the client detects and reports.

Configuration

Both optional:

Variable

Default

Purpose

MPAZ_SITE_URL

https://www.myersparkathleticzone.com

Point at another Athletic Zone school site

MPAZ_SCHOOL_ID

10150

GoFan/PlayOn school id, used to tell your teams from opponents

The site is one tenant of the PlayOn Sports / SportsEngine "Athletic Zone" platform, so setting both points the server at another school on it. Verified against Ballantyne Ridge (https://www.ballantyneridgeathleticzone.com, school id 21785) as well as Myers Park.

Hosted deployments are Myers Park only. The hosted (mint / claude.ai connector) build runs behind a static egress allow list that permits just www.myersparkathleticzone.com, so setting MPAZ_SITE_URL to another school there makes every call fail with "Could not reach". Pointing at another school works only with a local stdio install (npm / .mcpb).

Known limits

These are properties of the upstream site, not bugs, and the tools say so in their output rather than guessing:

  • A missing score is unknown, never zero. Each side's score is stored independently upstream, so half-entered games (3-null, null-4) are common. result is derived only when both sides are present.

  • Myers Park records few scores. Every completed game of theirs observed so far has null scores, so a season may return fixtures with no results at all — that is the school's data entry, not a fault.

  • Past-season coverage is partial and calendar-dependent. Myers Park's /schedule is empty for past years even though the per-team pages still serve them, so mpaz_list_teams falls back to the sport pages' cross-year team selector. That selector is keyed by team, not by sport slug, so it can only be reached through a team that is in season now — meaning off-season sports are unreachable for past years, and which ones are reachable changes through the year. The result carries a coverage note listing what was searched; an empty list there is not evidence the school fielded no teams.

  • Most teams publish coaches but not players, so an empty roster is normal.

  • The all-school schedule is a window of upcoming events, not a full season — use mpaz_get_team_schedule for that.

  • Broadcast links are NFHS Network links, not hosted clips — durations are always 0.

How it works

The site is a fully server-rendered Next.js app whose own /api/* routes are server-only and reject outside requests. The data ships inside the page's React Server Components flight payload, so this server requests pages with the RSC: 1 header and harvests the entities embedded in them.

docs/ATHLETIC-ZONE-API.md pins the captured request/response shapes, the routes, the failure modes, and what was ruled out.

Development

npm install
npm run build
npm test

License

MIT

Available Tools

10 tools
mpaz_get_rosterGet a team's roster and coachesA
Read-onlyIdempotent

Coaching staff and players for one team. Most teams on this site publish coaches but NOT players, so an empty players list is normal, not an error. Requires the sport slug and team id. Read-only.

Inputs: teamId (required), sportSlug (required), year.

mpaz_get_scheduleGet the all-school scheduleA
Read-onlyIdempotent

Upcoming events across every team, oldest first. Note this page returns a WINDOW of upcoming events (10 observed), not a whole season — for a team's full season use mpaz_get_team_schedule. Each event's startLocal is the local time at the school (in timeZone, e.g. America/New_York) — quote it as-is; start is the same moment in true UTC. Read-only.

Inputs: view, year.

mpaz_get_scoresGet one team's resultsA
Read-onlyIdempotent

Completed games with results for a single team: homeScore/awayScore plus teamScore/opponentScore/result from this school's point of view. Each side's score is stored independently upstream, so a half-entered game yields a null score and result: null — a missing score is unknown, never zero. Prefer mpaz_get_team_schedule for upcoming fixtures. Each event's startLocal is the local time at the school (in timeZone, e.g. America/New_York) — quote it as-is; start is the same moment in true UTC. Read-only.

Inputs: teamId (required), sportSlug (required), year.

mpaz_get_team_scheduleGet one team's full scheduleA
Read-onlyIdempotent

A single team's complete season, oldest first. Requires BOTH the sport slug and the team id — resolve them with mpaz_list_teams or mpaz_resolve_team first. Each event's startLocal is the local time at the school (in timeZone, e.g. America/New_York) — quote it as-is; start is the same moment in true UTC. Read-only.

Inputs: teamId (required), sportSlug (required), year.

mpaz_healthcheckCheck the site is reachableA
Read-onlyIdempotent

Verify the athletics site is reachable and still serving a parseable RSC payload. Reports the configured site and school id. Read-only.

Inputs: no named parameters.

mpaz_list_newsList news postsB
Read-onlyIdempotent

Recent news posts from the athletics site homepage, newest first. Read-only.

Inputs: view.

mpaz_list_photo_galleriesList photo galleriesA
Read-onlyIdempotent

Photo galleries published on the site. Images sit on a public CDN and can be fetched directly, no auth. Read-only.

Inputs: no named parameters.

mpaz_list_teamsList the school's teamsA
Read-onlyIdempotent

List this school's athletic teams for a school year, with the team id needed by the schedule, roster and scores tools. Team ids differ per school year — an id from one season fails against another. A past year is answered from the sport pages when the schedule has nothing, which reaches only sports currently in season; the result carries a coverage note saying so, and an empty list there does NOT mean the school fielded no teams. Read-only.

Inputs: year.

mpaz_list_videosList game broadcast linksA
Read-onlyIdempotent

Games with a broadcast link. These are NFHS Network links rather than hosted clips, so videoLengthSeconds is 0 on every entry and title is the team name — that is expected, not missing data. Read-only.

Inputs: no named parameters.

mpaz_resolve_teamResolve a team name to its idA
Read-onlyIdempotent

Find a team id from a loose name like "varsity football", "girls JV volleyball" or just "field hockey". Use this before mpaz_get_team_schedule / mpaz_get_roster / mpaz_get_scores rather than guessing an id. Returns every candidate when the query is ambiguous. Read-only.

Inputs: query (required), year.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4/5.0

    Scored across 10 tools

    Disambiguation4/5

    Each tool targets a fairly distinct resource (schedule, scores, roster, teams, news, galleries, videos, healthcheck), and descriptions explicitly differentiate the closest pair (mpaz_get_schedule as a cross-team window vs mpaz_get_team_schedule as a full season). list_teams vs resolve_team and get_scores vs get_team_schedule overlap slightly at a glance but the descriptions steer selection well.

    Naming Consistency4/5

    All tools use the same mpaz_ prefix and snake_case with a verb-first pattern (get_schedule, list_teams, resolve_team). The only deviation is mpaz_healthcheck, which is a noun-only diagnostic without a verb, a minor inconsistency in an otherwise predictable scheme.

    Tool Count5/5

    Ten tools is a well-scoped surface for a single-school athletics site: one tool per content type (teams, schedules, scores, roster, news, galleries, videos) plus two helpers for disambiguation and diagnostics. No tool looks redundant or bolted on.

    Completeness4/5

    Coverage of the read-only domain is broad, with helpers (list_teams, resolve_team, healthcheck) that unblock the id-dependent tools. Minor gaps exist: no detail tools for a single news post or a single photo gallery/video, so agents must rely on list payloads for those resources.

    Maintenance

    ActivityActive
    ResponsivenessUsually handled

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      MCP server for NBA live data and stats, providing read-only tools to query live scores, box scores, player info, standings, and more from NBA.com.
      15
      16 npm
      1
      MIT
    • F
      license
      Not graded
      quality
      D
      maintenance
      MCP server providing tools to query live scores, schedules, standings, and game stats from the SportRadar API for multiple sports including NFL, NBA, NHL, NCAAMB, soccer, and tennis.
      -
    • A
      license
      A
      quality
      C
      maintenance
      An MCP server for ECNL and ECRL youth soccer, providing schedules, standings, and RPI for both boys and girls.
      12
      1
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Get live scores, schedules, standings, team and player data for NFL, NBA, MLB, NHL, soccer, and more via MCP.
      203 npm
      2
      Apache 2.0