Search and read UK legislation at any date, resolve citations, list amendments, track changes via MCP. STDIO or Streamable HTTP.
- ✓Open-source license (Apache-2.0)
- ✓Actively maintained (<30d)
- ✓Clear description
- ✓Topics declared
- ✓Documented (README)
git clone https://github.com/cyanheads/uk-legislation-mcp-server{
"mcpServers": {
"uk-legislation": {
"command": "node",
"args": ["/path/to/uk-legislation-mcp-server/dist/index.js"]
}
}
}MCP Servers overview
<div align="center"> <h1>@cyanheads/uk-legislation-mcp-server</h1> <p><b>Search and read UK legislation at any date, resolve citations, list amendments, track changes via MCP. STDIO or Streamable HTTP.</b> <div>6 Tools</div> </p> </div> <div align="center"> [](./CHANGELOG.md) [](./LICENSE) [](https://github.com/users/cyanheads/packages/container/package/uk-legislation-mcp-server) [](https://modelcontextprotocol.io/) [](https://www.npmjs.com/package/@cyanheads/uk-legislation-mcp-server) [](https://www.typescriptlang.org/) [](https://bun.sh/) </div> <div align="center"> [](https://github.com/cyanheads/uk-legislation-mcp-server/releases/latest/download/uk-legislation-mcp-server.mcpb) [](https://cursor.com/en/install-mcp?name=uk-legislation-mcp-server&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBjeWFuaGVhZHMvdWstbGVnaXNsYXRpb24tbWNwLXNlcnZlciJdfQ==) [](https://vscode.dev/redirect?url=vscode:mcp/install?%7B%22name%22%3A%22uk-legislation-mcp-server%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40cyanheads%2Fuk-legislation-mcp-server%22%5D%7D) [](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) </div> --- ## Overview The National Archives publishes the UK statute book on [legislation.gov.uk](https://www.legislation.gov.uk/): primary, secondary, and EU-origin legislation for the UK, England, Scotland, Wales, and Northern Ireland. This server resolves citations and searches the statute book by text or title. It reads any provision as it stands now, as enacted or made, or as it stood on a date; lists the amendments made to or by an item; and follows what legislation.gov.uk publishes day to day. The API needs no key or account. The server runs as a stdio process or a local Streamable HTTP server. ### Tools | Tool | Description | |:---|:---| | `uklaw_search_legislation` | Search by full text or title, or list by type and year, filtered by extent and point in time | | `uklaw_get_document` | Read an item or provision as revised, as enacted or made, or on a date, with its editorial status and unapplied effects | | `uklaw_get_amendments` | List the effects (amendments, repeals, commencements, modifications) recorded against an item or made by it | | `uklaw_track_changes` | Read the legislation.gov.uk Publication Log for a window of up to 31 days | | `uklaw_lookup_citation` | Resolve a citation, short title, or legislation.gov.uk URI to the canonical item and provision | | `uklaw_list_reference` | Decode type codes, extents, version keywords, annotation letters, citation forms, and other vocabulary, offline | ## Capability reference ### `uklaw_search_legislation` <sub>tool</sub> - `text` (full text: AND/OR, "quoted phrases", stemming) and/or `title` (every word must occur), or neither to list by type and year; `limit` 1–50 (default 20) with `page` - Filters: `types` (codes such as `ukpga`, `uksi`, `eur`, or the groups `all`, `primary`, `secondary`, `eu-origin`, `draft`; default `all`, which excludes drafts), `year` or `year_from` / `year_to` (1267–2100), `extent` (`england`, `wales`, `scotland`, `ni`) with `extent_match` (`applicable` or `exact`), and `as_of` (`YYYY-MM-DD`); `extent` and `as_of` cannot be combined - Each result carries the `item` path to pass to `uklaw_get_document`; `has_more` flags another page, and title searches and listings add `facets` (type counts and the newest 25 years) --- ### `uklaw_get_document` <sub>tool</sub> - `item` is a full path (`ukpga/2018/12`, `uksi/2019/419`, `eur/2016/679`, regnal `ukpga/Eliz2/3-4/19`) or a legislation.gov.uk URI; `provision` a path (`section/45/2/f`, `schedule/2/paragraph/3`) or shorthand (`s. 45(2)(f)`, `Sch. 2 para. 3`); `version` `current` (default), `enacted` (or `made`, `adopted`, `created`), or a `YYYY-MM-DD` date; `language` `en` or `cy` - `kind` is `full` (Markdown `text` with its `annotations`), `outline` (provision paths to read next, 100 per call from `outline_offset`), or `pdf_only` (`links.pdf`); text over 20,000 characters, or an item with more than 25 leaf provisions, comes back as an outline (a provision with no smaller provisions to list is returned whole up to 40,000 characters and cut past that, with a notice linking the full text), and `match_text` lists an item's provisions that contain a term - `editorial` (`document_status`, `outstanding_effects`, `caveat`) and `unapplied_effects` (the first 20, at item or provision level) show how far the revised text can be relied on; `version.available` lists the versions to pass as `version` --- ### `uklaw_get_amendments` <sub>tool</sub> - `item` full or partial (`uksi`, `ukpga/2018`); `direction` `affected` (default: changes made to it) or `affecting` (changes it makes); filters `counterpart` (the other item, full or partial), `status` (`all`, `unapplied`, `applied`; default `all`), and `provision` (needs a full item; scans up to 1,500 effects per call) - `limit` 1–100 (default 20), continued with `next_cursor`; each effect names both sides with their provisions, `in_force` dates, `applied` / `outstanding`, and `notes`; `total` counts effects before the provision filter, and `scan` reports its coverage - Pre-1963 Acts are queried by calendar year (`ukpga/1925/20`) and drafts are not indexed: both fail as `regnal_item` / `draft_item`, with the route to take instead --- ### `uklaw_track_changes` <sub>tool</sub> - `start_date` (required) and `end_date` (defaults to `start_date`), a window of at most 31 days; filters `content_type` (`legislation`, `changes`, `draft`, `associated-documents`), `direction` (with `changes` only), `category` (`primary`, `secondary`, `eu-origin`; with `legislation` or `associated-documents` only), `item`, `new_only`, and `event` (`published`, `withdrawn`) - `limit` 1–80 (default 40), continued with `next_cursor`; `mode` is `day_walk` (days newest first, up to 4 upstream requests per call) or `item_log` (a full `item` path reads that item's own log and reports `read_back_to`) - A `changes` event carries no effect detail: `uklaw_get_amendments` on its item has it --- ### `uklaw_lookup_citation` <sub>tool</sub> - One `citation` of up to 300 characters: a numbered citation, a short title, or a legislation.gov.uk URI, optionally with a provision (forms below) - Returns the canonical `item` path, plus `provision_found` for a cited provision, checked against the current version; a miss or an ambiguous title is `found: false` with `guidance` or up to 20 `candidates`, not an error | Form | Examples | Resolves to | |:---|:---|:---| | UK Act by chapter | `2018 c. 12` | `ukpga/2018/12`; before 1963 the calendar year is searched and the regnal candidates returned | | Act of the Northern Ireland Assembly | `2016 c. 5 (N.I.)` | `nia/2016/5` | | UK Statutory Instrument | `S.I. 2019/419`, `SI 2019 No. 419`, `S.I. 2002/808 (W. 89)` | `uksi/2019/419`; alternative series numbers are ignored, and Welsh and NI SIs canonicalize to `wsi` / `nisi` | | Scottish Statutory Instrument | `S.S.I. 2020/123` | `ssi/2020/123` | | Northern Ireland Statutory Rule | `S.R. 2020/12`, `S.R. 2020 No. 12` | `nisr/2020/12` | | Scottish and Welsh Acts and Measures | `2020 asp 13`, `asp 2020/13`, `2016 anaw 1`, `2021 asc 1`, `2010 nawm 1` | `asp/2020/13`, `anaw/2016/1`, `asc/2021/1`, `mwa/2010/1` | | EU-origin legislation | `Regulation (EU) 2016/679`, `Regulation (EC) No 1535/2003`, `Directive 95/46/EC`, `Decision (EU) 2019/419`; the issuing body may lead (`Council Regulation (EC) No 1/2003`) | `eur/2016/679`, `eur/2003/1535` (pre-2015 numbering is number/year), `eudr/1995/46`, `eudn/2019/419` | | Defined name | `UK GDPR` | `eur/2016/679` | | legislation.gov.uk URI | `https://www.legislation.gov.uk/ukpga/2018/12/section/45` | Split into item, provision, and version | | Short title | `Data Protection Act 2018`, `Human Rights Act 1998 (c. 42)` | Resolved by title and year; a trailing chapter resolves the Act by number when the title does not | Any form can end with a provision (`s. 45(2)(f)`, `section 45`, `reg. 5`, `art. 28(3)`, `r. 7`, `r. 3.4`, `Sch. 2 para. 3`, `Pt 3`) or start with one followed by "of" or "of the": `section 45 of the Data Protection Act 2018`. `uklaw_list_reference` topic `citation_formats` returns the same list. --- ### `uklaw_list_reference` <sub>tool</sub> - `topic`: `types`, `type_groups`, `extents`, `versions`, `document_status`, `annotation_types`, `effects`, `provision_paths`, `citation_formats`, `publication_log`, `coverage`, or `attribution` - Offline, with no request to legislation.gov.uk; each entry is a `key`, `label`, `description`, and optional `details` ## Features Built on [`@cyanheads/mcp-ts-core`](https://github.com/cyanheads/mcp-ts-core): stdio and Streamable HTTP transports, pluggable auth (`none` / `jwt` / `oauth`), swappable storage (`in-memory`, `filesystem`, `Supabase`, `Cloudflare KV/R2/D1`), structured logging with optional OpenTelem
What people ask about uk-legislation-mcp-server
What is cyanheads/uk-legislation-mcp-server?
+
cyanheads/uk-legislation-mcp-server is mcp servers for the Claude AI ecosystem. Search and read UK legislation at any date, resolve citations, list amendments, track changes via MCP. STDIO or Streamable HTTP. It has 1 GitHub stars and its last recorded update is dated 2026-09-27.
How do I install uk-legislation-mcp-server?
+
You can install uk-legislation-mcp-server by cloning the repository (https://github.com/cyanheads/uk-legislation-mcp-server) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is cyanheads/uk-legislation-mcp-server safe to use?
+
Our security agent has analyzed cyanheads/uk-legislation-mcp-server and assigned a Trust Score of 95/100 (tier: Verified). See the full breakdown of passed checks and flags on this page.
Who maintains cyanheads/uk-legislation-mcp-server?
+
cyanheads/uk-legislation-mcp-server is maintained by cyanheads. The last recorded GitHub activity is dated 2026-09-27, with 2 open issues.
Are there alternatives to uk-legislation-mcp-server?
+
Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.
Deploy uk-legislation-mcp-server 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.
[](https://claudewave.com/repo/cyanheads-uk-legislation-mcp-server)<a href="https://claudewave.com/repo/cyanheads-uk-legislation-mcp-server"><img src="https://claudewave.com/api/badge/cyanheads-uk-legislation-mcp-server" alt="Featured on ClaudeWave: cyanheads/uk-legislation-mcp-server" width="320" height="64" /></a>More MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
The fastest path to AI-powered full stack observability, even for lean teams.