Skip to main content
ClaudeWave

MCP server for MaxPreps — high school team schedules, scores, records, rosters, stat leaders and athlete careers. Reads the site's public server-rendered data; no account or API key.

MCP ServersOfficial Registry0 stars0 forksTypeScriptMITUpdated today
Install in Claude Code / Claude Desktop
Method: NPX · maxpreps-mcp
Claude Code CLI
claude mcp add maxpreps-mcp -- npx -y maxpreps-mcp
claude_desktop_config.json (Claude Desktop)
{
  "mcpServers": {
    "maxpreps-mcp": {
      "command": "npx",
      "args": ["-y", "maxpreps-mcp"]
    }
  }
}
1. Run the command above in your terminal (Claude Code), or paste the JSON config into claude_desktop_config.json (Claude Desktop).
2. Replace any <placeholder> values with your API keys or paths.
3. Restart Claude. The MCP server and its tools appear automatically.
Use cases

MCP Servers overview

# maxpreps-mcp

MCP server for [MaxPreps](https://www.maxpreps.com) — 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.

| Tool | What it does |
| --- | --- |
| `maxpreps_search` | Find a school or athlete by name — **start here** |
| `maxpreps_list_teams` | Every team path a school publishes, with sport/gender/level |
| `maxpreps_get_school` | School profile, identifiers, association, nearby schools |
| `maxpreps_get_team` | Season record, standings, rankings, and available seasons |
| `maxpreps_get_schedule` | Games with results and scores, plus a computed record |
| `maxpreps_get_roster` | Players with jersey, class, positions, height, weight |
| `maxpreps_get_stat_leaders` | Statistical leaders with qualifying minimums |
| `maxpreps_get_rankings` | Ranked leaderboard for a sport, national or by state |
| `maxpreps_get_team_rankings` | Where one team ranks nationally, by state, division, metro |
| `maxpreps_get_standings` | Conference table with every team's record |
| `maxpreps_list_stat_categories` | Which stat leaderboards exist, and their paths |
| `maxpreps_get_stat_leaderboard` | Ranked athletes for one stat, statewide or national |
| `maxpreps_get_athlete` | One athlete's career page |
| `maxpreps_healthcheck` | Connectivity plus site build-id resolution |
| `maxpreps_get_page` | Raw page data for anything the above doesn't cover |

### 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.

| Variable | Default | Purpose |
| --- | --- | --- |
| `MAXPREPS_USER_AGENT` | built-in | Override the User-Agent sent to MaxPreps |
| `MAXPREPS_CACHE_TTL` | `300` | Seconds to reuse a fetched page; `0` disables |
| `MAXPREPS_MIN_INTERVAL_MS` | `250` | Minimum spacing between requests |
| `MAXPREPS_TIMEOUT_MS` | `20000` | Per-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 install
npm run build
npm 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

What people ask about maxpreps-mcp

What is chrischall/maxpreps-mcp?

+

chrischall/maxpreps-mcp is mcp servers for the Claude AI ecosystem. MCP server for MaxPreps — high school team schedules, scores, records, rosters, stat leaders and athlete careers. Reads the site's public server-rendered data; no account or API key. It has 0 GitHub stars and was last updated today.

How do I install maxpreps-mcp?

+

You can install maxpreps-mcp by cloning the repository (https://github.com/chrischall/maxpreps-mcp) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.

Is chrischall/maxpreps-mcp safe to use?

+

chrischall/maxpreps-mcp has not been audited yet by our security agent. Review the original repository on GitHub before using it in production.

Who maintains chrischall/maxpreps-mcp?

+

chrischall/maxpreps-mcp is maintained by chrischall. The last recorded GitHub activity is from today, with 0 open issues.

Are there alternatives to maxpreps-mcp?

+

Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.

Deploy maxpreps-mcp to your cloud

Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.

Maintain this repo? Add a badge to your README

Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.

Featured on ClaudeWave: chrischall/maxpreps-mcp
[![Featured on ClaudeWave](https://claudewave.com/api/badge/chrischall-maxpreps-mcp)](https://claudewave.com/repo/chrischall-maxpreps-mcp)
<a href="https://claudewave.com/repo/chrischall-maxpreps-mcp"><img src="https://claudewave.com/api/badge/chrischall-maxpreps-mcp" alt="Featured on ClaudeWave: chrischall/maxpreps-mcp" width="320" height="64" /></a>

More MCP Servers

maxpreps-mcp alternatives