Raw scores are not comparable across years, because the paper and the cohort both change; provincial rank roughly is, which is why it is the number people use when choosing where to apply. Checking the available categories first is not optional busywork: provincial tracks differ enough that a wrong category name gets you nothing.
A small Python server over historical gaokao data. It answers the question that matters when filling in university preferences: not what your score is, but what position that score puts you in within your province for that year and exam track.
- `get_rank` returns the provincial rank for a score — `province`, `year`, `category` and `score`, with score in the 0-750 range and a lower rank meaning higher placement
- `get_categories` returns the exam categories available for a given province and year, sorted alphabetically — worth calling first, since the valid categories differ by province
- `year` accepts a plain year or a year-and-level combination; `category` covers the various provincial tracks
Configure your client to run `uvx` with the argument `mcp-gaokao-rank` (package `mcp-gaokao-rank`, version 0.2). No account and no key. Data comes from a bundled database, so coverage is limited to the provinces, years and categories that database contains — and the ranks are historical, which is what makes them useful as a reference rather than a prediction.
One command — uvx mcp-gaokao-rank
