Skip to main content
Glama
README.md
# uk-he-data-mcp

An [MCP](https://modelcontextprotocol.io) server that lets Claude (or any MCP
client) query UK higher-education open data: National Student Survey
satisfaction, OfS student outcomes (continuation, completion, progression)
and LEO graduate earnings, every figure paired with the benchmark the
regulator intends it to be read against.

**Status: built in public, moving fast.** All three data sources are
queryable; the interface may still change before the first tagged release.

## Why

UK HE publishes a lot of good open data, and almost nobody can use it in
conversation. The files are large, split across regulators, keyed on codes
(UKPRN, CAH) that mean nothing to most people, and full of statistical
conventions that are easy to get wrong — quoting an NSS score without its
benchmark is the classic one. This server puts that data behind a small set of
tools that carry those conventions with them, so an AI assistant can answer
carefully instead of confidently.

## Install

```bash
# one-off: build the local database (downloads open data from the OfS and DfE)
uvx --from git+https://github.com/wilgreeves-cmd/uk-he-data-mcp uk-he-data-mcp build

# then add the server to Claude Code
claude mcp add uk-he-data -- uvx --from git+https://github.com/wilgreeves-cmd/uk-he-data-mcp uk-he-data-mcp
```

(PyPI release is coming, which shortens both commands to plain `uvx uk-he-data-mcp`.)

The build downloads open data straight from the Office for Students and loads
it into a DuckDB file on your machine — no keys, no accounts. Queries run
locally; tool results then enter your AI assistant's conversation context like
anything else you discuss with it.

## Try asking

- "How satisfied are Law students at Birmingham, and is that good for a
  university with their intake?" — *uses the OfS benchmark, so the answer
  compares like with like.*
- "Compare Sheffield and Sheffield Hallam for Computing" — *side by side,
  each judged against its own benchmark rather than raw score vs raw score.*
- "Do mature students complete their degrees at Birmingham?" — *B3 outcomes
  split by age on commencement, against the OfS regulatory threshold.*
- "What do Law graduates actually earn five years on?" — *LEO quartiles, with
  the caveats stated: pre-tax, employment-matched, and emphatically not
  causal.*
- "Show me assessment-and-feedback scores for nursing at a small provider" —
  *often returns nothing, and says why: cuts under 10 respondents are
  suppressed by the OfS, which is an answer, not an error.*
- "Which university gets the most applications for Computer Science?" — *the
  server tells you this isn't answerable from open data (UCAS publishes no
  bulk application volumes) rather than guessing from satisfaction scores.*

That last behaviour is deliberate. Each tool description states what the data
cannot answer, so the model declines honestly instead of inferring.

## Tools

| Tool | What it does |
|---|---|
| `search_providers` | Name, nickname or fragment → official name + UKPRN ("UCL" and "Sheffield Uni" both work) |
| `nss_scores` | NSS positivity vs OfS benchmark and UK sector average, filterable by subject (CAH), question/theme, population, mode and level |
| `compare_providers` | Two or more providers side by side, each judged against its own benchmark |
| `b3_outcomes` | Continuation, completion and progression rates vs OfS benchmarks and regulatory thresholds, by subject or demographic split |
| `leo_earnings` | Graduate earnings (LQ/median/UQ) at 1, 3 and 5 years, by subject, with the UK figure for context |
| `run_sql` | Read-only SELECT against the underlying DuckDB, capped at 100 rows, for anything the fixed tools don't cover |

Plus a `data://dictionary` resource describing every table, its grain, and
what is deliberately absent, and two MCP prompts — `provider_health_check`
and `subject_shortlist` — that walk a client through the tools in the right
order with the statistical conventions attached.

## Roadmap

1. **Discover Uni course catalogue** — the full course census, crawled from
   the public sitemap.
2. Prebuilt database download, so the one-off build takes seconds rather
   than minutes.

## Data sources and licences

| Source | Publisher | Licence |
|---|---|---|
| National Student Survey 2026 | Office for Students | [OGL v3.0](https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/) |
| Student outcomes (B3) Feb 2026 | Office for Students | OGL v3.0 |
| LEO graduate earnings 2022/23 | Department for Education | OGL v3.0 |

Contains public sector information licensed under the Open Government Licence
v3.0. This project is not affiliated with or endorsed by the Office for
Students or the Department for Education.

Code is MIT licensed.

TDQS

A4.7/5.0

Scored across 5 tools

Disambiguation5/5

Each tool covers a distinct aspect of UK higher education data: student outcomes (b3_outcomes), NSS satisfaction (nss_scores and compare_providers for cross-provider comparison), graduate earnings (leo_earnings), and provider lookup (search_providers). There is no overlap in purpose.

Naming Consistency5/5

All tool names follow snake_case and a predictable pattern: data type nouns (b3_outcomes, leo_earnings, nss_scores) or verb_noun (compare_providers, search_providers). The naming is uniform and descriptive.

Tool Count5/5

With 5 tools, the server is well-scoped for its domain. Each tool serves a necessary function without redundancy or bloat, covering key areas of higher education data.

Completeness4/5

The toolset covers student outcomes, satisfaction, and earnings comprehensively. Minor gaps exist (e.g., no tool for application data or fees), but these are explicitly excluded in tool descriptions and not core to the server's purpose.

Maintenance

ActivityStale
ResponsivenessNo issues