Skip to main content
Glama
paulieb89

UK Legal Research MCP Server

uk-legal-mcp

SafeSkill 92/100 uk-legal-mcp MCP server

Un servidor del Protocolo de Contexto de Modelo (MCP) para la investigación jurídica del Reino Unido. Conecta asistentes de IA a jurisprudencia, legislación, debates parlamentarios, proyectos de ley, votaciones, comités, análisis de citas OSCOLA y datos fiscales de HMRC a través de un único punto de conexión.

24 herramientas en 8 módulos. Una conexión. Solo lectura. No se requieren claves API para 23 de las 24 herramientas.

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    |
  |                                                    |
  +----------------------------------------------------+

Inicio rápido

Conectar al servidor alojado

Añadir a la configuración de Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):

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

Luego prueba:

  • "Busca jurisprudencia sobre accidentes de bicicleta"

  • "Obtén la sección 172 de la Ley de Sociedades de 2006 (Companies Act 2006)"

  • "Analiza las citas en: The court applied Donoghue v Stevenson [1932] AC 562 and s.2 Occupiers' Liability Act 1957"

  • "¿Qué dice el parlamento sobre las ventas en corto?"

Ejecutar localmente

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

Inspeccionar con el Inspector MCP:

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

Herramientas

Jurisprudencia

Herramienta

Qué hace

case_law_search

Búsqueda de texto completo de sentencias del Reino Unido. Filtrar por tribunal, juez, parte, rango de fechas.

case_law_grep_judgment

Encuentra párrafos en una sentencia que coincidan con un patrón. Devuelve {eId, snippet, match} por coincidencia.

Plantillas de recursos (leer mediante resources/read o la herramienta read_resource generada por ResourcesAsTools):

Plantilla URI

Devuelve

judgment://{slug*}/header

Encabezado de metadatos (partes, jueces, cita). ~1k tokens.

judgment://{slug*}/index

eId del párrafo + primera línea por fila. ~4k tokens. Recorre esto para descubrir párrafos.

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

Un solo párrafo incluyendo sus subpárrafos. 400–1700 tokens.

Origen: TNA Find Case Law (Atom/XML). Límite de tasa: 1.000 peticiones/5 min. Caché de 1 hora.

Legislación

Herramienta

Qué hace

legislation_search

Buscar Leyes del Parlamento e Instrumentos Estatutarios en legislation.gov.uk.

legislation_get_toc

Tabla de contenido de una Ley: partes, capítulos, secciones, anexos.

legislation_get_section

Recuperar una sección específica con alcance territorial, estado de vigencia y fecha de versión.

Plantillas de recursos (alternativa a las herramientas anteriores para clientes que prefieren lecturas dirigidas por URI):

Plantilla URI

Devuelve

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

Ley/SI completa como CLML XML.

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

Una sección específica como CLML XML.

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

Líneas planas id: title para la tabla de contenido.

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

CLML puntual para una fecha AAAA-MM-DD.

Origen: legislation.gov.uk (CLML XML + feed Atom). Caché de 24 horas. Utiliza curl_cffi con suplantación de Chrome para superar CloudFront 437; la Ley de Sociedades de 2006 (Companies Act 2006) actualmente recibe un desafío JS de AWS WAF de forma intermitente.

Nota: Comprueba siempre el campo extent. Una sección puede aplicarse a Inglaterra y Gales pero no a Escocia o Irlanda del Norte.

Parlamento

Herramienta

Qué hace

parliament_search_hansard

Buscar contribuciones a los debates de Hansard por frase exacta.

parliament_vibe_check

Evaluar la recepción parlamentaria de un tema político. Busca en Hansard y luego utiliza muestreo de LLM para clasificar el sentimiento, partidarios, opositores y preocupaciones.

parliament_find_member

Buscar un diputado o Lord por nombre. Devuelve el ID del miembro para usar con member_debates.

parliament_member_debates

Recuperar las contribuciones de Hansard de un miembro específico, opcionalmente filtradas por tema.

parliament_member_interests

Obtener los intereses financieros registrados de un miembro (donaciones, participaciones, etc.).

parliament_search_petitions

Buscar peticiones del Parlamento del Reino Unido por palabra clave.

Origen: hansard-api.parliament.uk + members-api.parliament.uk + petition.parliament.uk. No cacheado (datos en tiempo real).

Proyectos de ley (Bills)

Herramienta

Qué hace

bills_search_bills

Buscar proyectos de ley parlamentarios actuales e históricos por palabra clave, sesión o tipo.

bills_get_bill

Obtener detalles completos del proyecto de ley: etapas, patrocinadores, publicaciones.

Origen: bills-api.parliament.uk. Caché de 1 hora.

Votaciones

Herramienta

Qué hace

votes_search_divisions

Buscar registros de votaciones (divisions) de los Comunes y los Lores por palabra clave o fecha.

votes_get_division

Obtener detalles completos de la votación: recuento de votos, cómo votó cada miembro.

Origen: commonsvotes-api.parliament.uk + lordsvotes-api.parliament.uk. Caché de 24 horas.

Comités

Herramienta

Qué hace

committees_search_committees

Buscar comités selectos parlamentarios por palabra clave.

committees_get_committee

Obtener detalles del comité: membresía, subcomités.

committees_search_evidence

Buscar presentaciones de pruebas orales y escritas a los comités.

Origen: committees-api.parliament.uk. Caché de 1 hora.

Citas

Herramienta

Qué hace

citations_parse

Extraer todas las citas OSCOLA de texto libre. Resuelve a URLs canónicas. Desambigua códigos de tribunales genéricos mediante muestreo de LLM.

citations_resolve

Analizar y resolver una cadena de cita única a su URL canónica.

citations_network

Obtener una sentencia de TNA y mapear cada cita dentro de ella: casos, legislación, SIs, derecho de la UE.

Autocontenido. Sin API externa. Cero dependencia de red (excepto citations_network que obtiene el XML de la sentencia).

Formatos de cita soportados:

Formato

Ejemplo

Cita neutral

[2024] UKSC 12

Informe legal (con o sin volumen)

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

Sección de legislación

s.47 Companies Act 2006

Instrumento Estatutario

SI 2018/1234

Derecho de la UE retenido

Regulation (EU) 2016/679

HMRC

Herramienta

Qué hace

hmrc_get_vat_rate

Búsqueda de tasa de IVA para cualquier producto o servicio. Tabla estática actualizada según la Declaración de Otoño de 2023.

hmrc_check_mtd_status

Comprobar el estado del mandato de IVA de Making Tax Digital para un VRN. Requiere credenciales OAuth de HMRC.

hmrc_search_guidance

Buscar en GOV.UK documentos de orientación de HMRC.

hmrc_get_vat_rate y hmrc_search_guidance no requieren credenciales. hmrc_check_mtd_status requiere HMRC_CLIENT_ID y HMRC_CLIENT_SECRET: regístrate en developer.service.hmrc.gov.uk. Por defecto usa sandbox; establece HMRC_API_BASE=https://api.service.hmrc.gov.uk para producción.


Arquitectura

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

Cada módulo es una instancia independiente de FastMCP montada en la puerta de enlace con un prefijo de espacio de nombres (case_law_, legislation_, etc.). Todos los módulos comparten un único grupo de clientes httpx a través del contexto de vida de la puerta de enlace.

Pila de middleware (nivel de puerta de enlace):

Middleware

Propósito

ErrorHandlingMiddleware

Captura excepciones no controladas

StructuredLoggingMiddleware

Registro JSON con duración y tamaño de carga útil

DetailedTimingMiddleware

Registros de tiempo por herramienta

ResponseLimitingMiddleware

Límite de 80.000 caracteres (LegalDocML XML puede exceder los 200k)

Caché por módulo: ResponseCachingMiddleware con TTLs: case_law (1h), legislation (24h), bills (1h), votes (24h), committees (1h), hmrc (90 días). El Parlamento y las citas no se cachean.


Despliegue

Fly.io

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

Secretos opcionales:

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

Pruebas

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

Las 35 pruebas de citas se ejecutan sin conexión sin credenciales de API.


APIs de origen y licencias

Fuente

API

Licencia

Autenticación

TNA Find Case Law

caselaw.nationalarchives.gov.uk

Open Justice Licence

Ninguna

legislation.gov.uk

legislation.gov.uk

OGL v3

Ninguna

UK Parliament Hansard

hansard-api.parliament.uk

Open Parliament Licence

Ninguna

UK Parliament Members

members-api.parliament.uk

Open Parliament Licence

Ninguna

UK Parliament Petitions

petition.parliament.uk

Open Parliament Licence

Ninguna

UK Parliament Bills

bills-api.parliament.uk

Open Parliament Licence

Ninguna

UK Parliament Votes

commonsvotes-api.parliament.uk

Open Parliament Licence

Ninguna

UK Parliament Committees

committees-api.parliament.uk

Open Parliament Licence

Ninguna

HMRC

test-api.service.hmrc.gov.uk

OGL / términos comerciales

OAuth 2.0

GOV.UK Search

www.gov.uk/api/search.json

OGL v3

Ninguna


Pila tecnológica

  • Python 3.10+

  • FastMCP v3 (transporte HTTP transmitible)

  • httpx (HTTP asíncrono con agrupación de conexiones)

  • lxml (análisis de LegalDocML y CLML XML)

  • Pydantic v2 (validación de entrada, serialización de salida)

  • Fly.io (región de Londres, auto-parada/inicio)

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