Maxpreps Mcp

io.github.chrischallPublished by GitHub account chrischallv1.2.0Updated Nov 7, 2026

MaxPreps MCP — high school schedules, scores, records, rosters and stat leaders

VerifiedSTDIODesktop onlyWeb Search & ScrapingData & Analytics

Overview

AI-generated overview

Read-only MCP server that lets an assistant look up US high school sports schedules, scores, records, rosters, rankings and stat leaders from MaxPreps.

What you can do
  • Search for schools and athletes by name and get the paths other tools need
  • Read school profiles, team lists, season records, conference standings and rankings
  • Fetch game schedules with results and scores, plus team rosters with player details
  • Retrieve statistical leaders and ranked stat leaderboards by state or nationally
  • Pull an athlete's career page and raw data for any public MaxPreps page
When to use it
Useful when you want an assistant to answer questions about US high school teams and athletes — records, scores, rosters, rankings or stat leaders — without opening a browser. It is a good fit for sports research, comparisons and season-by-season lookups.
Requirements
Runs locally as an npm package via npx, so Node.js is needed. No account, API key or browser extension is required; it reads public MaxPreps JSON routes over HTTPS, so network access is needed. Optional environment variables MAXPREPS_USER_AGENT, MAXPREPS_CACHE_TTL, MAXPREPS_MIN_INTERVAL_MS and MAXPREPS_TIMEOUT_MS tune behavior.
Before you install
All fifteen tools are read-only and there is no write path. It reads an undocumented surface of a third-party site, so data shapes can change; requests are spaced and cached by default and the README asks that this be kept. The README states it was developed and maintained by AI and to use it at your own discretion.

Installation

In SourceWeft

  1. Open Maxpreps Mcp in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

maxpreps-mcp

MCP server for MaxPreps — read any US high school's team schedules, scores, records, rosters, stat leaders and athlete careers.

Developed and maintained by AI (Claude Code). Use at your own discretion.

No account, no API key, no browser extension. MaxPreps serves its pages with Next.js, and every public page has a companion JSON route carrying the same data the page was rendered from. This server reads those routes directly over plain HTTPS, so it works anywhere Node runs.

Install

bash
npx maxpreps-mcp

Or add it to an MCP host:

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

Tools

All fifteen are read-only; this server has no write path.

ToolWhat it does
maxpreps_searchFind a school or athlete by name — start here
maxpreps_list_teamsEvery team path a school publishes, with sport/gender/level
maxpreps_get_schoolSchool profile, identifiers, association, nearby schools
maxpreps_get_teamSeason record, standings, rankings, and available seasons
maxpreps_get_scheduleGames with results and scores, plus a computed record
maxpreps_get_rosterPlayers with jersey, class, positions, height, weight
maxpreps_get_stat_leadersStatistical leaders with qualifying minimums
maxpreps_get_rankingsRanked leaderboard for a sport, national or by state
maxpreps_get_team_rankingsWhere one team ranks nationally, by state, division, metro
maxpreps_get_standingsConference table with every team's record
maxpreps_list_stat_categoriesWhich stat leaderboards exist, and their paths
maxpreps_get_stat_leaderboardRanked athletes for one stat, statewide or national
maxpreps_get_athleteOne athlete's career page
maxpreps_healthcheckConnectivity plus site build-id resolution
maxpreps_get_pageRaw page data for anything the above doesn't cover (roster rows are projected to public fields)

Typical flow

Paths are not guessable, so resolve before you fetch:

  1. maxpreps_search "myers park" → the school's canonicalUrl
  2. maxpreps_list_teams on that path → real team paths
  3. maxpreps_get_schedule / _roster / _stat_leaders / _standings on a team path

To go the other way — discovering teams and athletes rather than looking one up — maxpreps_get_rankings and maxpreps_get_stat_leaderboard return ranked lists whose entries each carry a teamPath you can feed straight back in. Stat leaderboard paths are not guessable either, so list the categories first.

Prior seasons are a season argument ("25-26"); roughly 20 years are available.

Configuration

Everything is optional — the server works with no configuration at all.

VariableDefaultPurpose
MAXPREPS_USER_AGENTbuilt-inOverride the User-Agent sent to MaxPreps
MAXPREPS_CACHE_TTL300Seconds to reuse a fetched page; 0 disables
MAXPREPS_MIN_INTERVAL_MS250Minimum spacing between requests
MAXPREPS_TIMEOUT_MS20000Per-request timeout

Things worth knowing

These are properties of MaxPreps' data, and each one has bitten a naive reading:

  • Scores are winner-first in the raw data. MaxPreps renders a loss as "L 20-13" even when the team scored 13. The teamScore / opponentScore fields this server returns are always oriented team-vs-opponent.
  • Rosters and schedules carry hidden rows. A meaningful minority are flagged deleted and the site does not render them — the 2025-26 Myers Park football roster has 87 entries behind 63 visible players. They are excluded by default.
  • An out-of-season team is not a broken one. Before opening day the current season legitimately has an empty roster and no results; ask for a prior season.
  • Search is literal. "myers park" finds the school; "myers park high" finds nothing. Drop qualifiers before concluding a school is absent.
  • Statewide scoreboards aren't available. /<st>/<sport>/scores/ renders its game list client-side from a route that has no server-rendered payload. Per-team schedules are the supported way to get scores; maxpreps_get_rankings is the way to see a whole state's teams at once.

Shell-only alternative

The repo also ships a maxpreps skill (skills/maxpreps/) that reaches the same data through curl + a small decoder, with no server to run. If you only ever use Claude Code on one machine, the skill alone may be all you need; the MCP server is what makes this reachable from claude.ai, a phone, or any other client.

Development

bash
npm installnpm run buildnpm test

docs/MAXPREPS-API.md pins the captured request/response shapes, the positional key maps, and how to re-derive them if MaxPreps changes its bundle.

Etiquette

This reads an undocumented surface on someone else's site on behalf of one user. Requests are spaced and responses cached by default. Please keep it that way.

License

MIT

Source: README.md at commit 57c50ea

Tools

15

maxpreps_get_school

Get a MaxPreps school profile

School profile: identifiers, location, state athletic association, partner flags, plus nearby schools and recent articles/videos. Take the path from maxpreps_search. Read-only.

ParametersschoolrequiredincludeNearby

maxpreps_list_teams

List a school’s teams

Every team path a school publishes, with sport, gender and level. Call this before any team tool — the sport path segments are not guessable (the default gender varies by sport, so girls golf is "golf/girls" while boys golf is "golf/spring", and field hockey has no gender segment at all). Passing a team path instead of a school path returns that team’s seasons. Read-only.

Parameterslevelsportschoolrequired

maxpreps_get_team

Get a MaxPreps team season

Team overview for one season: sport/level/season identifiers, the win-loss record and points for/against, conference standing, rankings, and the full list of seasons this team has on MaxPreps (roughly 20 years). Use it to confirm a record without summing a schedule. Read-only.

ParametersteamrequiredseasonincludeSeasons

maxpreps_get_schedule

Get a MaxPreps team schedule and scores

Every game for a team season, with the result and both scores. Scores are oriented team-vs-opponent (`teamScore`/`opponentScore`); the raw `resultString` MaxPreps renders is winner-first, so a loss reads "L 20-13" even when the team scored 13. Soft-deleted contests are hidden by default, matching the site. Before opening day a current season legitimately has no results — check a prior season. Also returns any playoff or championship tournaments the season fed into. Read-only.

ParametersteamrequiredplayedseasonincludeDeletedincludeTournaments

maxpreps_get_roster

Get a MaxPreps team roster

Players on a team for one season: jersey, name, class year, positions, height and weight. Soft-deleted entries (duplicates and departed players the site hides) are excluded by default — a roster payload often carries substantially more rows than the page shows. Height and weight are null when the school did not publish them. Read-only.

ParametersteamrequiredseasonpositionincludeDeleted

maxpreps_get_stat_leaders

Get MaxPreps team stat leaders

Statistical leaders for a team season — each entry names the athlete, the stat, its value and the athlete's career URL. Also returns the qualifying minimums and the stat refresh time. Coverage varies by sport and by how diligently the school reports; an empty result is normal, not an error. Read-only.

Parametersteamrequiredseason

maxpreps_get_athlete

Get a MaxPreps athlete career

One athlete’s career page: season history, sports played, and available data. Pass the `careerCanonicalUrl` from maxpreps_search verbatim — it carries the required `careerid` parameter, without which the page cannot be addressed. Read-only.

ParametersathleterequiredcareerId

maxpreps_get_rankings

Get MaxPreps team rankings

Ranked leaderboard of teams for a sport — nationally, or within one state. Each entry carries the rank, rating, overall record, movement, and a `teamPath` ready to pass to the other team tools, so this is the way to discover teams rather than look one up. Results are paginated 25 at a time. Omitting `season` uses the current one, which is empty before that sport is under way. Read-only.

ParameterssportrequiredstateseasonpageNumber

maxpreps_get_team_rankings

Get one team’s rankings

Where a single team sits in each ranking MaxPreps publishes for it — typically national, state, state division/class, and metro area — along with the teams ranked immediately around it. Use this for "how good is this team"; use maxpreps_get_rankings to browse a whole leaderboard. Read-only.

Parametersteamrequiredseason

maxpreps_get_standings

Get conference standings

The standings table a team sits in — every team in the conference with its conference and overall records and placement, not just this team's own line (maxpreps_get_team gives that). Also returns the ranked statistical leaders MaxPreps highlights for the season. Read-only.

Parametersteamrequiredseason

maxpreps_list_stat_categories

List MaxPreps stat leaderboard categories

Which statistical leaderboards exist for a sport, with the path to each one plus the national and in-scope averages and the games-played minimum. **Call this before maxpreps_get_stat_leaderboard** — the leaf path is not derivable from the stat name (Total TDs lives at `touchdowns/tot-tds`, Sacks at `sacks/tot-sacks`), so the path must come from here. Read-only.

Parameterssportrequiredstateseason

maxpreps_get_stat_leaderboard

Get a MaxPreps stat leaderboard

The ranked athletes for one statistical category across a state or nationally — up to 200 per board, each with their full stat line, school, and a `teamPath` for the other team tools. Take `path` from maxpreps_list_stat_categories rather than constructing it. If MaxPreps changes the row shape the rows are returned undecoded with a warning rather than mislabelled. Read-only.

Parameterspathrequiredlimit

maxpreps_healthcheck

Check MaxPreps connectivity

Verify MaxPreps is reachable and that the site build id — which every data route embeds and which changes on each deploy — resolves. Also probes a real data route, so a pass means tools will work. Reports a failure rather than throwing. No credentials are required by this server. Read-only.

Takes no parameters.

maxpreps_get_page

Get raw MaxPreps page data

Escape hatch: return the raw server-rendered data for any public MaxPreps page, undecoded. Use when a dedicated tool does not cover what you need (playoff brackets, conference standings, article listings). Note that positional payloads — team rosters and schedules — arrive as bare arrays here with no field names; use maxpreps_get_roster / maxpreps_get_schedule for those. Roster rows (athleteData) are always projected to public roster fields (name, jersey, positions, class, height, weight). Read-only.

ParameterspathrequiredkeysOnly

Version history

13
  1. v1.2.0LatestNov 4, 2026
  2. v1.1.9Oct 16, 2026
  3. v1.1.8Oct 10, 2026
  4. v1.1.7Oct 7, 2026
  5. v1.1.6Oct 5, 2026
  6. v1.1.5Oct 3, 2026
  7. v1.1.4Sep 30, 2026
  8. v1.1.3Sep 25, 2026
  9. v1.1.2Sep 23, 2026
  10. v1.1.1Sep 23, 2026
  11. v1.1.0Sep 20, 2026
  12. v1.0.0Sep 19, 2026
  13. v0.3.1Sep 16, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts