Skip to main content
Glama
paulieb89

UK Legal Research MCP Server

uk-legal-mcp

SafeSkill 92/100 uk-legal-mcp MCP server

Ein Model Context Protocol-Server für die britische Rechtsrecherche. Verbindet KI-Assistenten über einen einzigen Endpunkt mit Rechtsprechung, Gesetzgebung, parlamentarischen Debatten, Gesetzesentwürfen, Abstimmungen, Ausschüssen, OSCOLA-Zitations-Parsing und HMRC-Steuerdaten.

24 Tools in 8 Modulen. Eine Verbindung. Schreibgeschützt. Für 23 der 24 Tools sind keine API-Schlüssel erforderlich.

MCP Client (Claude, Cursor, etc.)
        |
        v
  uk-legal-mcp gateway  (Streamable HTTP)
  +----------------------------------------------------+
  |                                                    |
  |  case_law      TNA Find Case Law API               |
  |  legislation   legislation.gov.uk Atom feed         |
  |  parliament    Hansard API + Members API            |
  |  bills         Parliamentary Bills API              |
  |  votes         Commons + Lords division records     |
  |  committees    Select committees + evidence         |
  |  citations     OSCOLA regex parser (no network)     |
  |  hmrc          HMRC sandbox/prod + GOV.UK search    |
  |                                                    |
  +----------------------------------------------------+

Schnellstart

Verbindung zum gehosteten Server herstellen

Fügen Sie dies zu Ihrer Claude Desktop-Konfiguration hinzu (~/Library/Application Support/Claude/claude_desktop_config.json):

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

Versuchen Sie dann:

  • "Suche nach Rechtsprechung zu Fahrradunfällen"

  • "Hole Abschnitt 172 des Companies Act 2006"

  • "Analysiere die Zitate in: The court applied Donoghue v Stevenson [1932] AC 562 and s.2 Occupiers' Liability Act 1957"

  • "Was sagt das Parlament über Leerverkäufe?"

Lokal ausführen

pip install -e .
python -m src.gateway
# Server starts on http://localhost:8000/mcp

Mit dem MCP Inspector untersuchen:

npx @modelcontextprotocol/inspector http://localhost:8000/mcp

Tools

Rechtsprechung

Tool

Was es tut

case_law_search

Volltextsuche in britischen Urteilen. Filterbar nach Gericht, Richter, Partei, Datumsbereich.

case_law_grep_judgment

Findet Absätze in einem Urteil, die einem Muster entsprechen. Gibt {eId, snippet, match} pro Treffer zurück.

Ressourcen-Templates (lesbar über resources/read oder das durch ResourcesAsTools generierte read_resource-Tool):

URI-Template

Rückgabe

judgment://{slug*}/header

Metadaten-Header (Parteien, Richter, Zitat). ~1k Token.

judgment://{slug*}/index

Absatz-eId + erste Zeile pro Zeile. ~4k Token. Nutzen Sie dies, um Absätze zu entdecken.

judgment://{slug*}/para/{eId}

Ein einzelner Absatz inklusive seiner Unterabsätze. 400–1700 Token.

Upstream: TNA Find Case Law (Atom/XML). Ratenbegrenzung: 1.000 Anfragen/5 Min. 1 Stunde zwischengespeichert.

Gesetzgebung

Tool

Was es tut

legislation_search

Suche in Parlamentsgesetzen und Statutory Instruments auf legislation.gov.uk.

legislation_get_toc

Inhaltsverzeichnis für ein Gesetz — Teile, Kapitel, Abschnitte, Anhänge.

legislation_get_section

Ruft einen spezifischen Abschnitt mit territorialem Geltungsbereich, Inkrafttretensstatus und Versionsdatum ab.

Ressourcen-Templates (Alternative zu den oben genannten Tools für Clients, die URI-adressierte Lesezugriffe bevorzugen):

URI-Template

Rückgabe

legislation://{type}/{year}/{number}

Vollständiges Gesetz/SI als CLML XML.

legislation://{type}/{year}/{number}/section/{section}

Ein spezifischer Abschnitt als CLML XML.

legislation://{type}/{year}/{number}/toc

Flache id: title-Zeilen für das Inhaltsverzeichnis.

legislation://{type}/{year}/{number}/{date}

Point-in-Time CLML für ein YYYY-MM-DD Datum.

Upstream: legislation.gov.uk (CLML XML + Atom Feed). 24 Stunden zwischengespeichert. Verwendet curl_cffi mit Chrome-Impersonation, um CloudFront 437 zu umgehen; der Companies Act 2006 stößt derzeit zeitweise auf eine AWS WAF JS-Herausforderung.

Hinweis: Überprüfen Sie immer das Feld extent. Ein Abschnitt kann für England und Wales gelten, aber nicht für Schottland oder Nordirland.

Parlament

Tool

Was es tut

parliament_search_hansard

Suche in Hansard-Debattenbeiträgen nach exakten Phrasen.

parliament_vibe_check

Bewertet die parlamentarische Aufnahme eines politischen Themas. Durchsucht Hansard und verwendet dann LLM-Sampling, um Stimmung, Befürworter, Gegner und Bedenken zu klassifizieren.

parliament_find_member

Suche nach einem Abgeordneten oder Lord per Namen. Gibt die Mitglieder-ID zur Verwendung mit member_debates zurück.

parliament_member_debates

Ruft die Hansard-Beiträge eines bestimmten Mitglieds ab, optional gefiltert nach Thema.

parliament_member_interests

Ruft die registrierten finanziellen Interessen eines Mitglieds ab (Spenden, Aktienbesitz usw.).

parliament_search_petitions

Suche in Petitionen des britischen Parlaments nach Stichworten.

Upstream: hansard-api.parliament.uk + members-api.parliament.uk + petition.parliament.uk. Nicht zwischengespeichert (Live-Daten).

Gesetzesentwürfe (Bills)

Tool

Was es tut

bills_search_bills

Suche in aktuellen und historischen Parlamentsentwürfen nach Stichwort, Sitzungsperiode oder Typ.

bills_get_bill

Ruft Details zum Gesetzesentwurf ab — Stadien, Sponsoren, Veröffentlichungen.

Upstream: bills-api.parliament.uk. 1 Stunde zwischengespeichert.

Abstimmungen

Tool

Was es tut

votes_search_divisions

Suche in Abstimmungsaufzeichnungen von Unterhaus und Oberhaus nach Stichwort oder Datum.

votes_get_division

Ruft Details zur Abstimmung ab — Stimmenanzahl, wie jedes Mitglied abgestimmt hat.

Upstream: commonsvotes-api.parliament.uk + lordsvotes-api.parliament.uk. 24 Stunden zwischengespeichert.

Ausschüsse

Tool

Was es tut

committees_search_committees

Suche in parlamentarischen Auswahlausschüssen nach Stichwort.

committees_get_committee

Ruft Ausschussdetails ab — Mitgliedschaft, Unterausschüsse.

committees_search_evidence

Suche in mündlichen und schriftlichen Beweiseinreichungen an Ausschüsse.

Upstream: committees-api.parliament.uk. 1 Stunde zwischengespeichert.

Zitate

Tool

Was es tut

citations_parse

Extrahiert alle OSCOLA-Zitate aus freiem Text. Löst diese in kanonische URLs auf. Unterscheidet mehrdeutige Gerichtscodes mittels LLM-Sampling.

citations_resolve

Analysiert und löst einen einzelnen Zitat-String in seine kanonische URL auf.

citations_network

Ruft ein Urteil von TNA ab und bildet jedes Zitat darin ab — Fälle, Gesetzgebung, SIs, EU-Recht.

In sich geschlossen. Keine externe API. Keine Netzwerkabhängigkeit (außer citations_network, das das Urteils-XML abruft).

Unterstützte Zitationsformate:

Format

Beispiel

Neutrales Zitat

[2024] UKSC 12

Law Report (mit oder ohne Band)

[2024] 1 WLR 100, [1932] AC 562

Gesetzgebungsabschnitt

s.47 Companies Act 2006

Statutory Instrument

SI 2018/1234

Beibehaltenes EU-Recht

Regulation (EU) 2016/679

HMRC

Tool

Was es tut

hmrc_get_vat_rate

MwSt.-Satz-Abfrage für Waren oder Dienstleistungen. Statische Tabelle, Stand Autumn Statement 2023.

hmrc_check_mtd_status

Überprüft den Making Tax Digital MwSt.-Mandatsstatus für eine VRN. Erfordert HMRC OAuth-Anmeldedaten.

hmrc_search_guidance

Durchsucht GOV.UK nach HMRC-Leitfäden.

hmrc_get_vat_rate und hmrc_search_guidance erfordern keine Anmeldedaten. hmrc_check_mtd_status erfordert HMRC_CLIENT_ID und HMRC_CLIENT_SECRET — registrieren Sie sich unter developer.service.hmrc.gov.uk. Standardmäßig auf Sandbox; setzen Sie HMRC_API_BASE=https://api.service.hmrc.gov.uk für die Produktion.


Architektur

src/
  gateway.py            FastMCP gateway — mounts all modules, applies middleware
  deps.py               Shared httpx clients (lifespan-managed) + error formatting
  modules/
    case_law/           TNA Find Case Law (Atom/XML parsing)
    legislation/        legislation.gov.uk (CLML XML + Atom feed)
    parliament/         Hansard API + Members API + Petitions (JSON)
    bills/              Parliamentary Bills API (JSON)
    votes/              Commons + Lords division records (JSON)
    committees/         Select committees + evidence (JSON)
    citations/          OSCOLA regex engine (compiled once, lru_cache)
    hmrc/               HMRC OAuth + GOV.UK search (JSON)
tests/
  test_citations.py     35 unit tests — regex patterns, resolution, disambiguation

Jedes Modul ist eine eigenständige FastMCP-Instanz, die mit einem Namespace-Präfix (case_law_, legislation_ usw.) in das Gateway eingebunden ist. Alle Module teilen sich einen einzigen httpx-Client-Pool über den Lifespan-Kontext des Gateways.

Middleware-Stack (Gateway-Ebene):

Middleware

Zweck

ErrorHandlingMiddleware

Fängt unbehandelte Ausnahmen ab

StructuredLoggingMiddleware

JSON-Logging mit Dauer und Payload-Größe

DetailedTimingMiddleware

Timing-Logs pro Tool

ResponseLimitingMiddleware

80.000 Zeichen Limit (LegalDocML XML kann 200k überschreiten)

Caching pro Modul: ResponseCachingMiddleware mit TTLs — case_law (1 Std.), legislation (24 Std.), bills (1 Std.), votes (24 Std.), committees (1 Std.), hmrc (90 Tage). Parlament und Zitate werden nicht zwischengespeichert.


Bereitstellung

Fly.io

fly auth login
fly launch --name uk-legal-mcp --region lhr
fly deploy

Optionale Secrets:

fly secrets set HMRC_CLIENT_ID=your_id HMRC_CLIENT_SECRET=your_secret
# For production HMRC (default is sandbox):
fly secrets set HMRC_API_BASE=https://api.service.hmrc.gov.uk

Docker

docker build -t uk-legal-mcp .
docker run -p 8000:8000 uk-legal-mcp

Testen

pip install -e '.[test]'  # or: pip install pytest
pytest tests/test_citations.py -v

Alle 35 Zitationstests laufen offline ohne API-Anmeldedaten.


Upstream-APIs und Lizenzen

Quelle

API

Lizenz

Auth

TNA Find Case Law

caselaw.nationalarchives.gov.uk

Open Justice Licence

Keine

legislation.gov.uk

legislation.gov.uk

OGL v3

Keine

UK Parliament Hansard

hansard-api.parliament.uk

Open Parliament Licence

Keine

UK Parliament Members

members-api.parliament.uk

Open Parliament Licence

Keine

UK Parliament Petitions

petition.parliament.uk

Open Parliament Licence

Keine

UK Parliament Bills

bills-api.parliament.uk

Open Parliament Licence

Keine

UK Parliament Votes

commonsvotes-api.parliament.uk

Open Parliament Licence

Keine

UK Parliament Committees

committees-api.parliament.uk

Open Parliament Licence

Keine

HMRC

test-api.service.hmrc.gov.uk

OGL / kommerzielle Bedingungen

OAuth 2.0

GOV.UK Search

www.gov.uk/api/search.json

OGL v3

Keine


Stack

  • Python 3.10+

  • FastMCP v3 (streambarer HTTP-Transport)

  • httpx (async HTTP mit Connection-Pooling)

  • lxml (LegalDocML und CLML XML-Parsing)

  • Pydantic v2 (Eingabevalidierung, Ausgabeserialisierung)

  • Fly.io (Region London, Auto-Stop/Start)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/paulieb89/uk-legal-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server