Maxpreps Mcp

io.github.chrischall由 GitHub 账号 chrischall 发布v1.2.0更新于 Nov 7, 2026

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

概览

AI 生成的概览

只读的 MCP 服务器,让助手查询 MaxPreps 上美国高中体育的赛程、比分、战绩、名单、排名和统计数据领先者。

可以做什么
  • 按名称搜索学校和运动员,取得其他工具所需的路径
  • 读取学校档案、队伍列表、赛季战绩、联盟排名和名次
  • 获取含结果与比分的比赛赛程,以及含球员信息的队伍名单
  • 获取统计数据领先者和按州或全国排名的统计榜单
  • 读取运动员生涯页面,以及任意公开 MaxPreps 页面的原始数据
适用场景
适合让助手回答关于美国高中队伍和运动员的问题,例如战绩、比分、名单、排名或统计领先者,无需打开浏览器。适用于体育资料查询、对比和逐赛季检索。
运行要求
以 npm 包形式通过 npx 在本机运行,需要 Node.js。无需账号、API 密钥或浏览器扩展;它通过 HTTPS 读取 MaxPreps 的公开 JSON 路由,因此需要网络访问。可选环境变量 MAXPREPS_USER_AGENT、MAXPREPS_CACHE_TTL、MAXPREPS_MIN_INTERVAL_MS 和 MAXPREPS_TIMEOUT_MS 用于调整行为。
安装前请注意
全部十五个工具均为只读,没有写入路径。它读取第三方网站未公开的接口,数据结构可能变化;默认会限制请求频率并缓存响应,README 请求保持这一设置。README 说明该项目由 AI 开发维护,请自行斟酌使用。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Maxpreps Mcp,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

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

来源:README.md,提交 57c50ea

工具

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.

输入参数school必填includeNearby

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.

输入参数levelsportschool必填

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.

输入参数team必填seasonincludeSeasons

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.

输入参数team必填playedseasonincludeDeletedincludeTournaments

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.

输入参数team必填seasonpositionincludeDeleted

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.

输入参数team必填season

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.

输入参数athlete必填careerId

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.

输入参数sport必填stateseasonpageNumber

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.

输入参数team必填season

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.

输入参数team必填season

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.

输入参数sport必填stateseason

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.

输入参数path必填limit

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.

无需输入参数。

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.

输入参数path必填keysOnly

版本历史

13
  1. v1.2.0最新Nov 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

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分
  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分