CAT
/MCP
SkillsMCPMarketplacesDigestToolsAdvertise

This week in Claude

Every Monday: Claude Code, Agent SDK, MCP, and the Anthropic platform moves worth your time.

Skills by Category
Frontend DevelopmentBackend & APIsTesting & QASecurityDevOps & CI/CDGit & Pull RequestsDocumentationCode Review & QualityAI & Agent BuildingSkill Development
MCP Servers by Category
Sales & MarketingWeb & Browser AutomationDatabasesAI & LLM ToolsCloud & InfrastructureCommunication & MessagingDeveloper ToolsDesign & CreativeDocuments & KnowledgeSearch & Web Crawling
Marketplaces by Category
AI Agents & OrchestrationLLM IntegrationDevelopment ToolsFrontend & UIBackend & APIsDatabasesTesting & Code QualityDevOps & CloudSecurity & ComplianceGit & Version Control

Cross AI Tools

Discover Claude Code plugins, extensions, and tools. Automatically updated directory of Anthropic Claude AI marketplaces with development tools, productivity plugins, and integrations.

Resources

  • Browse Skills
  • Browse MCP Servers
  • Browse Marketplaces
  • Plugins Reference

Community

  • About
  • Tools
  • Feedback
  • Privacy Policy
  • Advertise

Built for the Claude Code community with Claude Code by @mertduzgun

Independent project, not affiliated with Anthropic

UK Legal Research

paulieb89/uk-legal-mcp
934 toolsSTDIO, HTTPregistry active
Summary

Connects Claude and other MCP clients to UK legal sources without API keys. Exposes tools for searching case law from Find Case Law, reading legislation.gov.uk Acts and SIs with point-in-time sections, querying Hansard debates and divisions, tracking bill stages and committee evidence, and parsing OSCOLA citations into canonical references. Also covers HMRC guidance lookups and optional Making Tax Digital endpoints. Returns primary source text plus citation metadata so you can build verifiable evidence packs instead of relying on memory. Runs over HTTP at uk-legal-mcp.fly.dev/mcp or locally via uvx. Most useful when you need to cite UK statutes, trace parliamentary votes, or pull judgment paragraphs with neutral citations for legal research workflows.

Install to Claude Code

verified
claude mcp add --transport http uk-legal-mcp https://uk-legal-mcp.fly.dev/mcp

Run in your terminal. Add --scope user to make it available in every project.

Review the command, arguments, and environment values before installing — MCP servers run with your local permissions.

CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →

Tools

Verified live against the running server on Jun 10, 2026.

verified live34 tools
judgment_get_headerUSE THIS TOOL WHEN you have a judgment slug and need metadata (parties, judges, neutral citation, court, dates). Call case_law_search FIRST to get the slug. AFTER calling, use judgment_get_index to discover paragraphs, then judgment_get_paragraph to read specific ones. Authori...1 params

USE THIS TOOL WHEN you have a judgment slug and need metadata (parties, judges, neutral citation, court, dates). Call case_law_search FIRST to get the slug. AFTER calling, use judgment_get_index to discover paragraphs, then judgment_get_paragraph to read specific ones. Authori...

Parameters* required
slug*string
Judgment slug, e.g. 'uksc/2024/12' or 'ewca/civ/2023/450'
judgment_get_indexUSE THIS TOOL WHEN you have a judgment slug and want the paragraph navigation index (eId + preview line for every paragraph). Call case_law_search FIRST to get the slug. AFTER calling, pass an eId from the returned list into judgment_get_paragraph to read that paragraph's full...1 params

USE THIS TOOL WHEN you have a judgment slug and want the paragraph navigation index (eId + preview line for every paragraph). Call case_law_search FIRST to get the slug. AFTER calling, pass an eId from the returned list into judgment_get_paragraph to read that paragraph's full...

Parameters* required
slug*string
Judgment slug, e.g. 'uksc/2024/12'
judgment_get_paragraphUSE THIS TOOL WHEN you have a judgment slug + LegalDocML eId and want that paragraph's full text. Call judgment_get_index FIRST to discover available eIds (or use case_law_grep_judgment to locate paragraphs by content). Returns the paragraph XML content (400–1,700 tokens typic...2 params

USE THIS TOOL WHEN you have a judgment slug + LegalDocML eId and want that paragraph's full text. Call judgment_get_index FIRST to discover available eIds (or use case_law_grep_judgment to locate paragraphs by content). Returns the paragraph XML content (400–1,700 tokens typic...

Parameters* required
eId*string
Paragraph eId from judgment_get_index, e.g. 'para_12'. Numeric strings like '12' are accepted and normalized to 'para_12'.
slug*string
Judgment slug, e.g. 'uksc/2024/12'
case_law_searchUSE THIS TOOL WHEN searching UK case law by party names, court, judge, date, or free-text query. Returns paginated judgment summaries: neutral citation, court, dates, slug, stable TNA URI. AFTER calling: pass slug into judgment_get_header / judgment_get_index / judgment_get_pa...1 params

USE THIS TOOL WHEN searching UK case law by party names, court, judge, date, or free-text query. Returns paginated judgment summaries: neutral citation, court, dates, slug, stable TNA URI. AFTER calling: pass slug into judgment_get_header / judgment_get_index / judgment_get_pa...

Parameters* required
params*object
CaseLawSearchInput.
case_law_grep_judgmentUSE THIS TOOL WHEN you have a judgment slug and want to find paragraphs whose text matches a pattern. Returns a list of `{eId, snippet, match}` hits — small per-paragraph snippets centred on the match. AFTER calling, read full paragraphs via judgment_get_paragraph(slug, eId) o...1 params

USE THIS TOOL WHEN you have a judgment slug and want to find paragraphs whose text matches a pattern. Returns a list of `{eId, snippet, match}` hits — small per-paragraph snippets centred on the match. AFTER calling, read full paragraphs via judgment_get_paragraph(slug, eId) o...

Parameters* required
params*object
CaseLawGrepInput.
legislation_searchUSE THIS TOOL WHEN searching UK Acts and Statutory Instruments by title, phrase, or full-text. Returns ranked results: title, type, year, number, legislation.gov.uk URL, and next_steps hints (toc URI, section template). AFTER calling, chain to legislation_get_toc then legislat...1 params

USE THIS TOOL WHEN searching UK Acts and Statutory Instruments by title, phrase, or full-text. Returns ranked results: title, type, year, number, legislation.gov.uk URL, and next_steps hints (toc URI, section template). AFTER calling, chain to legislation_get_toc then legislat...

Parameters* required
params*object
LegislationSearchInput.
legislation_get_sectionUSE THIS TOOL WHEN you have a known Act / SI and want the parsed text of a specific section, with extent and in-force metadata. Returns full section text, territorial extent, in-force status, and prospective flag. Content capped per max_chars (default 10,000, ~2,500 tokens) —...1 params

USE THIS TOOL WHEN you have a known Act / SI and want the parsed text of a specific section, with extent and in-force metadata. Returns full section text, territorial extent, in-force status, and prospective flag. Content capped per max_chars (default 10,000, ~2,500 tokens) —...

Parameters* required
params*object
LegislationGetSectionInput.
legislation_get_tocUSE THIS TOOL WHEN you have a known Act / SI and want the structural table of contents (parts, chapters, sections, schedules). Returns structural elements with XML id and title, e.g. 'section-47: Definitions'. AFTER calling, pass the numeric section identifier (use '47', NOT '...1 params

USE THIS TOOL WHEN you have a known Act / SI and want the structural table of contents (parts, chapters, sections, schedules). Returns structural elements with XML id and title, e.g. 'section-47: Definitions'. AFTER calling, pass the numeric section identifier (use '47', NOT '...

Parameters* required
params*object
LegislationGetTocInput.
parliament_search_hansardUSE THIS TOOL WHEN searching Hansard by topic, bill title, or text phrase. Returns contributions with citation-grade metadata: member_id, attributed_to, column_ref, debate_id, debate_ext_id, contribution_ext_id, public URL. AFTER calling, drill into full content via read_resou...1 params

USE THIS TOOL WHEN searching Hansard by topic, bill title, or text phrase. Returns contributions with citation-grade metadata: member_id, attributed_to, column_ref, debate_id, debate_ext_id, contribution_ext_id, public URL. AFTER calling, drill into full content via read_resou...

Parameters* required
params*object
HansardSearchInput.
parliament_policy_position_summaryUSE THIS TOOL WHEN you want debate-level corpus signals on a topic — by_house, by_year, by_section breakdowns — without reading every contribution. Aggregates Hansard debate-level signals on a topic. Pure counts — no LLM, no editorial labels. Sweeps /search/Debates.json with p...1 params

USE THIS TOOL WHEN you want debate-level corpus signals on a topic — by_house, by_year, by_section breakdowns — without reading every contribution. Aggregates Hansard debate-level signals on a topic. Pure counts — no LLM, no editorial labels. Sweeps /search/Debates.json with p...

Parameters* required
params*object
PolicyPositionSummaryInput with topic, optional date range, house, max_debates_scanned.
parliament_find_memberUSE THIS TOOL WHEN you have a member's name and need their integer member_id. Returns all members matching the name query, each with the integer `id`, party, constituency, house, and current-sitting status. Disambiguates common-name matches (e.g. "Lord Smith" returns multiple...1 params

USE THIS TOOL WHEN you have a member's name and need their integer member_id. Returns all members matching the name query, each with the integer `id`, party, constituency, house, and current-sitting status. Disambiguates common-name matches (e.g. "Lord Smith" returns multiple...

Parameters* required
params*object
FindMemberInput with the name (full or partial).
parliament_member_debatesUSE THIS TOOL WHEN you have a member_id and want contributions where THAT member used a specific topic phrase verbatim (text-body search). CALL parliament_find_member(name) FIRST to obtain the integer member_id. This is a name-based text-body search — it matches contributions...1 params

USE THIS TOOL WHEN you have a member_id and want contributions where THAT member used a specific topic phrase verbatim (text-body search). CALL parliament_find_member(name) FIRST to obtain the integer member_id. This is a name-based text-body search — it matches contributions...

Parameters* required
params*object
MemberDebatesInput with member_id and optional topic filter.
parliament_member_interestsUSE THIS TOOL WHEN you have a member_id and need their registered financial interests (donations, directorships, land, gifts). CALL parliament_find_member(name) FIRST to obtain the integer member_id. Returns ONE PAGE of interests (default 20, caller controls via limit). For pr...1 params

USE THIS TOOL WHEN you have a member_id and need their registered financial interests (donations, directorships, land, gifts). CALL parliament_find_member(name) FIRST to obtain the integer member_id. Returns ONE PAGE of interests (default 20, caller controls via limit). For pr...

Parameters* required
params*object
member_id, optional category filter, pagination (offset/limit), and max_description_chars content cap.
parliament_search_petitionsUSE THIS TOOL WHEN searching UK Parliament petitions by keyword or topic. Returns petition title, state, signature count, and dates for government response or parliamentary debate if applicable. Filter by state (open, closed, debated, etc.) to narrow to live or historical peti...1 params

USE THIS TOOL WHEN searching UK Parliament petitions by keyword or topic. Returns petition title, state, signature count, and dates for government response or parliamentary debate if applicable. Filter by state (open, closed, debated, etc.) to narrow to live or historical peti...

Parameters* required
params*object
PetitionSearchInput with query and optional state filter.
parliament_get_debate_divisionsUSE THIS TOOL WHEN you have a debate_ext_id and want the divisions (formal votes) held within it. Most debates contain no divisions — Business of the House sittings, statements, urgent questions, debates without a vote. A populated list typically appears around bill stages, mo...1 params

USE THIS TOOL WHEN you have a debate_ext_id and want the divisions (formal votes) held within it. Most debates contain no divisions — Business of the House sittings, statements, urgent questions, debates without a vote. A populated list typically appears around bill stages, mo...

Parameters* required
params*object
GetDebateDivisionsInput with the debate_ext_id GUID (chain from parliament_search_hansard contribution.debate_ext_id or top_debates[].debate_ext_id).
parliament_get_debate_contributionsUSE THIS TOOL WHEN you have a debate_ext_id and want verbatim contributions, optionally filtered to one member. Canonical path for "everything a member said in this debate" regardless of vocabulary — text-search tools (parliament_member_debates, parliament_search_hansard) filt...1 params

USE THIS TOOL WHEN you have a debate_ext_id and want verbatim contributions, optionally filtered to one member. Canonical path for "everything a member said in this debate" regardless of vocabulary — text-search tools (parliament_member_debates, parliament_search_hansard) filt...

Parameters* required
params*object
GetDebateContributionsInput with debate_ext_id (required) and optional member_id filter.
parliament_lookup_by_columnUSE THIS TOOL WHEN you have an OSCOLA-style Hansard citation (column + volume + house) and need the debate. Example input: 'HL Deb 14 Oct 2025, vol 849, col 200'. AFTER calling, read the contribution at the cited column via read_resource(uri="hansard://debate/{debate_ext_id}/h...1 params

USE THIS TOOL WHEN you have an OSCOLA-style Hansard citation (column + volume + house) and need the debate. Example input: 'HL Deb 14 Oct 2025, vol 849, col 200'. AFTER calling, read the contribution at the cited column via read_resource(uri="hansard://debate/{debate_ext_id}/h...

Parameters* required
params*object
LookupByColumnInput with column_number, volume_number, house.
bills_search_billsUSE THIS TOOL WHEN searching UK parliamentary bills by keyword, session, house, or legislative stage. Returns a paginated page of bill summaries (title, current stage, whether it became an Act). AFTER calling, pass a bill_id into bills_get_bill for full detail (sponsors, long...1 params

USE THIS TOOL WHEN searching UK parliamentary bills by keyword, session, house, or legislative stage. Returns a paginated page of bill summaries (title, current stage, whether it became an Act). AFTER calling, pass a bill_id into bills_get_bill for full detail (sponsors, long...

Parameters* required
params*object
BillSearchInput.
bills_get_billUSE THIS TOOL WHEN you have a bill_id (from bills_search_bills) and want the full detail. Returns sponsors, current stage, long title, summary, and Royal Assent date if enacted. Summary text is capped per max_summary_chars — check summary_truncated in the response. AFTER calli...1 params

USE THIS TOOL WHEN you have a bill_id (from bills_search_bills) and want the full detail. Returns sponsors, current stage, long title, summary, and Royal Assent date if enacted. Summary text is capped per max_summary_chars — check summary_truncated in the response. AFTER calli...

Parameters* required
params*object
BillDetailInput.
votes_search_divisionsUSE THIS TOOL WHEN searching Commons or Lords formal votes by topic, date, or member. Returns division summaries (title, date, vote counts, pass/fail). AFTER calling, pass division_id + house into votes_get_division for the full member-by-member voter lists. Authoritative sour...1 params

USE THIS TOOL WHEN searching Commons or Lords formal votes by topic, date, or member. Returns division summaries (title, date, vote counts, pass/fail). AFTER calling, pass division_id + house into votes_get_division for the full member-by-member voter lists. Authoritative sour...

Parameters* required
params*object
DivisionSearchInput.
votes_get_divisionUSE THIS TOOL WHEN you have a division_id + house and want the full member-by-member voting record. Voter lists are truncated to 100 per side to fit response limits; total voter counts are always accurate regardless of truncation. Chain from votes_search_divisions or parliamen...1 params

USE THIS TOOL WHEN you have a division_id + house and want the full member-by-member voting record. Voter lists are truncated to 100 per side to fit response limits; total voter counts are always accurate regardless of truncation. Chain from votes_search_divisions or parliamen...

Parameters* required
params*object
DivisionDetailInput.
committees_search_committeesUSE THIS TOOL WHEN searching or listing UK parliamentary select committees by name, house, or active status. Returns committee summaries (name, house, active status, ID). AFTER calling, pass committee_id into committees_get_committee for current membership, or into committees_...1 params

USE THIS TOOL WHEN searching or listing UK parliamentary select committees by name, house, or active status. Returns committee summaries (name, house, active status, ID). AFTER calling, pass committee_id into committees_get_committee for current membership, or into committees_...

Parameters* required
params*object
CommitteeSearchInput.
committees_get_committeeUSE THIS TOOL WHEN you have a committee_id and want the metadata + current membership. Fetches committee detail and member list in parallel. AFTER calling, pass committee_id into committees_search_evidence to see what evidence has been submitted to this committee on what topics.1 params

USE THIS TOOL WHEN you have a committee_id and want the metadata + current membership. Fetches committee detail and member list in parallel. AFTER calling, pass committee_id into committees_search_evidence to see what evidence has been submitted to this committee on what topics.

Parameters* required
params*object
CommitteeDetailInput.
committees_search_evidenceUSE THIS TOOL WHEN you have a committee_id and want the oral and written evidence submitted to it. Returns ONE PAGE of evidence (default 20). Free-text titles are capped per max_title_chars; witness lists are capped at 10 per item. For committees with many submissions, re-call...1 params

USE THIS TOOL WHEN you have a committee_id and want the oral and written evidence submitted to it. Returns ONE PAGE of evidence (default 20). Free-text titles are capped per max_title_chars; witness lists are capped at 10 per item. For committees with many submissions, re-call...

Parameters* required
params*object
CommitteeEvidenceInput.
citations_parseUSE THIS TOOL WHEN you have free text (a memo, an email, a clause) and want every OSCOLA-style citation it contains extracted and classified. Identifies: neutral citations ([2024] UKSC 12), law reports ([2024] 1 WLR 100), legislation sections (s.47 Companies Act 2006), SIs (SI...1 params

USE THIS TOOL WHEN you have free text (a memo, an email, a clause) and want every OSCOLA-style citation it contains extracted and classified. Identifies: neutral citations ([2024] UKSC 12), law reports ([2024] 1 WLR 100), legislation sections (s.47 Companies Act 2006), SIs (SI...

Parameters* required
params*object
CitationsParseInput.
citations_resolveUSE THIS TOOL BEFORE constructing an OSCOLA citation string from known fields, OR when you have a citation and want to confirm it points at a real document. Parses + resolves a single citation (neutral citation, SI, legislation section, retained EU law) and returns the parsed...1 params

USE THIS TOOL BEFORE constructing an OSCOLA citation string from known fields, OR when you have a citation and want to confirm it points at a real document. Parses + resolves a single citation (neutral citation, SI, legislation section, retained EU law) and returns the parsed...

Parameters* required
params*object
CitationsResolveInput.
citations_networkUSE THIS TOOL WHEN you have a judgment slug and want to map every citation it makes — cases cited, legislation referenced, SIs, retained EU law. Fetches the judgment XML from TNA and parses all OSCOLA citations within. Returns citations grouped by type, deduplicated and sorted...1 params

USE THIS TOOL WHEN you have a judgment slug and want to map every citation it makes — cases cited, legislation referenced, SIs, retained EU law. Fetches the judgment XML from TNA and parses all OSCOLA citations within. Returns citations grouped by type, deduplicated and sorted...

Parameters* required
params*object
CitationsNetworkInput with case_uri (TNA slug, e.g. 'uksc/2024/12').
hmrc_get_vat_rateUSE THIS TOOL WHEN you have a UK commodity or service description and want its VAT rate category. Returns the rate (standard 20%, reduced 5%, zero 0%, exempt), effective date, and any relevant conditions or exceptions. IMPORTANT: Uses a static lookup table current as of 22 Nov...1 params

USE THIS TOOL WHEN you have a UK commodity or service description and want its VAT rate category. Returns the rate (standard 20%, reduced 5%, zero 0%, exempt), effective date, and any relevant conditions or exceptions. IMPORTANT: Uses a static lookup table current as of 22 Nov...

Parameters* required
params*object
HMRCVATRateInput.
hmrc_check_mtd_statusUSE THIS TOOL WHEN you have a 9-digit VAT Registration Number and need that business's Making Tax Digital VAT mandate status. Returns whether the business is mandated for MTD, effective date, and trading name. Connects to the HMRC sandbox by default. Set HMRC_API_BASE to 'http...1 params

USE THIS TOOL WHEN you have a 9-digit VAT Registration Number and need that business's Making Tax Digital VAT mandate status. Returns whether the business is mandated for MTD, effective date, and trading name. Connects to the HMRC sandbox by default. Set HMRC_API_BASE to 'http...

Parameters* required
params*object
HMRCMTDStatusInput.
hmrc_search_guidanceUSE THIS TOOL WHEN searching GOV.UK for HMRC tax guidance on a topic (VAT, income tax, corporation tax, etc.). Returns matching guidance titles, URLs, summaries, and last-updated dates. Searches the official GOV.UK content API filtered to HMRC publications. Authoritative sourc...1 params

USE THIS TOOL WHEN searching GOV.UK for HMRC tax guidance on a topic (VAT, income tax, corporation tax, etc.). Returns matching guidance titles, URLs, summaries, and last-updated dates. Searches the official GOV.UK content API filtered to HMRC publications. Authoritative sourc...

Parameters* required
params*object
HMRCGuidanceSearchInput.
list_promptsList all available prompts. Returns JSON with prompt metadata including name, description, and optional arguments.

List all available prompts. Returns JSON with prompt metadata including name, description, and optional arguments.

No parameters — call it with no arguments.

get_promptGet a prompt by name with optional arguments. Returns the rendered prompt as JSON with a messages array. Arguments should be provided as a dict mapping argument names to values.2 params

Get a prompt by name with optional arguments. Returns the rendered prompt as JSON with a messages array. Arguments should be provided as a dict mapping argument names to values.

Parameters* required
name*string
The name of the prompt to get
argumentsvalue
Optional arguments for the prompt
list_resourcesList all available resources and resource templates. Returns JSON with resource metadata. Static resources have a 'uri' field, while templates have a 'uri_template' field with placeholders like {name}.

List all available resources and resource templates. Returns JSON with resource metadata. Static resources have a 'uri' field, while templates have a 'uri_template' field with placeholders like {name}.

No parameters — call it with no arguments.

read_resourceRead a resource by its URI. For static resources, provide the exact URI. For templated resources, provide the URI with template parameters filled in. Returns the resource content as a string. Binary content is base64-encoded.1 params

Read a resource by its URI. For static resources, provide the exact URI. For templated resources, provide the URI with template parameters filled in. Returns the resource content as a string. Binary content is base64-encoded.

Parameters* required
uri*string
The URI of the resource to read

uk-legal-mcp

PyPI SafeSkill Glama smithery badge Install in VS Code Install in VS Code Insiders Install in Cursor

UK legal research sources for your AI assistant.

uk-legal-mcp connects ChatGPT, Claude, VS Code, Cursor, and other MCP-aware clients to UK case law, legislation, Hansard, bills, votes, committees, OSCOLA citation parsing, and HMRC guidance. It returns primary source text and citation metadata so your agent can build evidence packs you can check and footnote.

No API keys are required for the legal sources. HMRC's authenticated Making Tax Digital endpoint is optional.

For best results, tell your assistant to use the uk-legal-mcp server and not to answer from memory when a UK legal source can be checked.


Quick Start

Use the hosted MCP endpoint:

https://uk-legal-mcp.fly.dev/mcp

For clients that use mcpServers JSON:

{
  "mcpServers": {
    "uk-legal": {
      "type": "http",
      "url": "https://uk-legal-mcp.fly.dev/mcp"
    }
  }
}

For local stdio use:

uvx uk-legal-mcp

Claude Desktop local config:

{
  "mcpServers": {
    "uk-legal": {
      "command": "uvx",
      "args": ["uk-legal-mcp"]
    }
  }
}

If a hosted tool stops responding, refresh the server from your client's Apps / Customise menu. For very large Acts, local mode can be more reliable because it uses your own IP rather than a shared cloud IP.


Try This First

After connecting the server, start a fresh chat and ask:

I am checking a UK legal source. Only use uk-legal-mcp. Find the source, give me the source URL, and tell me what metadata I should check before relying on it.

For legal work, ask for an evidence pack rather than a bare answer:

Only use uk-legal-mcp. Give me the source text or source summary, the source URL, citation metadata, and any caveats about jurisdiction, version, or uncertainty.

See the lawyer guide for ready-to-run prompts.


What It Covers

Source areaWhat your assistant can check
Case lawUK judgments from TNA Find Case Law, including neutral citations, court, date, judgment metadata, paragraph reads, and in-judgment search.
LegislationActs and Statutory Instruments from legislation.gov.uk, including tables of contents, sections, territorial extent, in-force signals, and point-in-time reads.
ParliamentHansard debates and contributions, debate-to-division chains, member biographies, column references, and petitions.
BillsParliamentary Bills, stages, sponsors, publications, and bill history.
VotesCommons and Lords divisions, counts, results, and per-member voting records.
CommitteesSelect committees, memberships, oral evidence, and written evidence.
CitationsOSCOLA-style citation parsing and resolution to canonical sources.
HMRCVAT rate lookups, GOV.UK HMRC guidance search, and optional authenticated MTD VAT status checks.

The server also exposes judgment://, legislation://, and hansard:// resources for source text that is too large to return in a single search result.

Full details are in the tool reference and upstream API reference.


Examples

Legislation check: the assistant finds the Worker Protection Act duty, commencement position, territorial extent, and source links.

ChatGPT answer using uk-legal-mcp to summarise the Worker Protection Act duty, commencement, territorial extent, and source links

Parliamentary evidence: the assistant follows a House of Lords debate into a division result for an Automated Vehicles Bill amendment.

ChatGPT answer using uk-legal-mcp to connect an Automated Vehicles Bill Hansard debate to the division result for Lord Liddle's Amendment 28

More examples are in the lawyer guide.


Using It Safely

uk-legal-mcp helps your AI assistant find and quote UK legal sources. It does not replace legal judgement.

  • Check jurisdiction. Legislation can apply differently in England, Wales, Scotland, and Northern Ireland. When reading a section, check the extent field before relying on it.
  • Check whether a provision is current. Some sections may be repealed, amended, prospective, or not yet in force. The server returns in-force and version-date information where the source provides it.
  • Verify citations before relying on them. Ask the agent to resolve case citations and Hansard volume/column references against the primary source.
  • Separate exact matches from nearby candidates. Case names and party names can be similar. A good answer should say which source was verified and which candidates were merely related.
  • Treat the result as an evidence pack. The server returns primary source text and citation metadata. Your agent can summarise it, but you decide how the law applies.

For Developers

Run the streamable HTTP server locally:

python -m src.gateway

Run the declarative FastMCP manifest for inspection/dev tooling:

fastmcp run
fastmcp inspect

fastmcp run is for inspection/dev only — it wraps the FastMCP runner directly and skips the production uvicorn shape (_HttpGuard, _AcceptNormalizer, proxy_headers) that python -m src.gateway wires for the Fly deployment. The _HttpGuard GET-SSE shim is required by claude.ai's web connector, so use python -m src.gateway for anything prod-like.

Use a local checkout over stdio:

{
  "mcpServers": {
    "local-uk-legal": {
      "command": "uv",
      "args": ["run", "--project", "<abs-path>", "uk-legal-mcp"],
      "env": { "VIRTUAL_ENV": "" }
    }
  }
}

Release notes live in CHANGELOG.md.

Featured
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Registryactive
Packageuk-legal-mcp
TransportSTDIO, HTTP
Resources1
Prompts4
Tools verifiedJun 10, 2026
UpdatedApr 20, 2026
View on GitHub