LeyChile MCP
This server provides forensic-level tools to search, retrieve, cite, and analyze Chilean legislation in real time. Capabilities include:
Search and discovery: Search norms by keyword or matter (
leychile_buscar_normas), list recent norms (leychile_normas_recientes), and browse thematic categories (leychile_listar_categorias,leychile_listar_normas_categoria).Retrieve full texts and structure: Get consolidated text of any norm by ID or law number (
leychile_obtener_norma), retrieve historical versions (leychile_obtener_version), view systematic indexes (leychile_indice_sistematico) or complete article list with version dates (leychile_listar_articulos).Forensic article and fragment extraction: Fetch specific articles including suffixed numbers (e.g., 183-B) with citation (
leychile_obtener_articulo), extract exact inciso/numeral/letra fragments within an article (leychile_obtener_fragmento).Temporal control: Trace an article's modification timeline (
leychile_linea_tiempo_articulo), get text as of a specific date with procedural ultra-activity alerts (leychile_texto_vigente_a_fecha), compare versions within a date range (leychile_comparar_versiones) or compare multiple articles across norms (leychile_comparar_articulos).Special parts: Isolate transitory articles (
leychile_listar_transitorios), list modifications (leychile_listar_modificaciones), extract statutory definitions (leychile_extraer_definiciones), and retrieve annexes (leychile_obtener_anexos).Metadata and validity: Check metadata, validity status, legal vacancy, and version count (
leychile_obtener_metadatos).Citation and cross-referencing: Resolve free-text citations to exact text (
leychile_citar), search within a norm (leychile_buscar_en_norma), extract concordances and remissions from an article (leychile_concordancias_articulo), and resolve laws by popular name (leychile_resolver_ley_por_nombre).Legal knowledge layer: Resolve codes by name (
leychile_resolver_codigo), list all codes (leychile_listar_codigos), suggest special laws for a topic with validity checks (leychile_sugerir_normas_especiales), and map substantive rights to procedural remedies (leychile_mapa_procesal).History and additional data: Get links to legislative history (
leychile_historia_ley).Output flexibility: All tools accept
response_format= markdown, json, or compact.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@LeyChile MCP find the current text of Law 19.300"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
⚖️ LeyChile MCP
Servidor MCP (Model Context Protocol) que conecta a Claude — u otra IA compatible — en vivo y directamente con Ley Chile, el sistema de legislación de la Biblioteca del Congreso Nacional de Chile (BCN).
Convierte el ordenamiento jurídico chileno en herramientas de nivel forense, pensadas para el estudio y la práctica de estudiantes de Derecho, abogados litigantes y jueces: buscar normas, leer el texto vigente, citar con precisión incisos/numerales/letras, controlar la vigencia intertemporal, comparar versiones, aislar transitorios, mapear especialidad y vías procesales, y razonar con prompts jurídicos guiados.
⚠️ Herramienta no oficial, sin afiliación con la BCN. Los textos provienen de Ley Chile. No constituye asesoría jurídica: verifique siempre contra la fuente oficial. Es una ayuda metodológica; el criterio jurídico es del profesional.
¿Por qué este servidor?
A diferencia de un volcado estático y parcial, LeyChile MCP consulta a BCN en cada llamada, por lo que entrega la versión consolidada y vigente de cada norma, con cobertura completa del ordenamiento (leyes, decretos, DFL, códigos, resoluciones). Está en español, con citas verificables y enlace oficial.
Related MCP server: lawyer-mcp
Arquitectura en 3 capas (honesta)
La API de BCN entrega datos, no juicios jurídicos. Para no “alucinar derecho”, el servidor separa:
Capa | Qué es | Fuente de verdad |
A — Datos | Recuperación y parsing determinista del XML de BCN |
|
B — Conocimiento | Catálogos curados y verificados (códigos, especialidad, reenvíos procesales) | Tablas mantenidas + verificación de vigencia en vivo |
C — Razonamiento | Prompts que guían el análisis usando A+B | El modelo, citando A/B |
Así, los datos los aporta BCN; el método lo aportan los prompts; y toda conclusión queda anclada a normas citadas.
Características destacadas
🔎 Búsqueda por palabra clave o materia que rankea el cuerpo legal (Ley/Código) sobre modificaciones y actos administrativos, con filtros por tipo, año y
excluir_modificaciones.📄 Texto consolidado y vigente de cualquier norma (por idNorma o N° de ley).
🧷 Segmentación forense: extrae el inciso, numeral o letra exactos (p. ej. “art. 254 inciso segundo del CPC”, “art. 434 N° 4”).
🔤 Artículos con sufijo:
183-A…183-ECT,27ALSA,145 bis E,157 TER,4 bis. La cita forense usa guion y LeyChile nombra con espacio: ambas formas resuelven al mismo artículo. Y un artículo con sufijo nunca resuelve al base — antes183-Bdevolvía el 183 con la cita «Art. 183», que en una herramienta anti-alucinación es el peor modo de fallo posible.🕰️ Vigencia intertemporal: cómo estaba redactado un artículo a una fecha dada, versión histórica exacta (
idVersion), línea de tiempo y comparación de versiones.⚖️ Alerta de ultraactividad procesal: avisa cuando, en normas adjetivas, los plazos o actuaciones ya iniciados podrían regirse por la ley antigua.
📘 Texto refundido e instrumento fijador; vacancia legal (publicada pero no vigente).
🧩 Transitorios, definiciones legales y anexos (p. ej. sentencias del Tribunal Constitucional) aislados.
🔗 Modificaciones desde notas marginales e Historia de la Ley con las leyes modificatorias.
🗂️ Índice sistemático anti-desborde para códigos extensos y categorías temáticas de BCN.
🧠 Capa de conocimiento: resolución de códigos por nombre, mapa de especialidad (arts. 4° y 13 CC) y reenvíos sustantivo↔adjetivo con verificación de vigencia de la vía procesal.
⚙️ Razonamiento jurídico ejecutable (PYTHEN, determinista): reglas derrotables exception-first (
leychile_razonar,leychile_evaluar_regla) y cascada de antinomías lex superior › specialis › posterior (leychile_resolver_antinomia).🪶 Modo
compacto(response_format=compacto): salidas mínimas que ahorran ~50 % de tokens al explorar.🌐 Entrar al BCN (opcional, DrissionPage/Chrome): renderiza páginas JavaScript que la API no expone —Historia de la Ley, jurisprudencia— con
leychile_bcn_extraer.💬 6 prompts jurídicos: antinomías, ratio legis, derogación orgánica, vigencia intertemporal, minuta de alegato y mapa normativo del caso.
📌 Citas en texto libre: pega «art. 1698 inc. 1° del Código Civil» y obtén el texto exacto (
leychile_citar).🔦 Buscar dentro de una norma (
leychile_buscar_en_norma) y concordancias/remisiones de un artículo (leychile_concordancias_articulo).🏷️ Leyes por nombre popular: «Ley Karin», «Ley Emilia», etc. (
leychile_resolver_ley_por_nombre).🛡️ Resiliencia: User-Agent de navegador (anti-403), failover de hosts BCN, caché diaria, reintentos, plegado de acentos.
🔌 Transporte stdio (local) y streamable-HTTP (servicio).
Instalación
Requisitos: Python 3.10+.
git clone https://github.com/IanGuiloff/leychile-mcp.git
cd leychile-mcp
pip install -e .Esto deja disponible el comando leychile-mcp.
Uso en Claude Desktop
Edita el archivo de configuración (%APPDATA%\Claude\claude_desktop_config.json en Windows; ~/Library/Application Support/Claude/claude_desktop_config.json en macOS) y agrega:
{
"mcpServers": {
"leychile": { "command": "leychile-mcp" }
}
}Reinicia Claude Desktop: aparecerán las herramientas leychile_*. (Ver examples/claude_desktop_config.json para la variante sin instalar.)
Uso en Claude Code
claude mcp add leychile -- leychile-mcpPublicarlo como servicio (HTTP / Docker)
leychile-mcp --transport http --host 0.0.0.0 --port 8000 # endpoint: http://host:8000/mcp
# o con Docker:
docker build -t leychile-mcp . && docker run -p 8000:8000 leychile-mcpEjemplos (en lenguaje natural a la IA)
“Tráeme el inciso segundo del artículo 254 del Código de Procedimiento Civil.”
“Resuelve la cita: art. 19 N° 12 de la Constitución.”
“Busca ‘fuero maternal’ dentro del Código del Trabajo.”
“¿A qué artículos y leyes remite el art. 23 de la Ley 19.628?”
“¿Qué ley es la ‘Ley Karin’?”
“¿Cómo estaba redactado el artículo 17 de la Ley 19.628 el 1 de enero de 2005?”
“Compara el artículo 17 de la Ley 19.628 entre 2010 y hoy.”
“Dame los artículos transitorios del Código del Trabajo.”
“¿Qué leyes especiales priman en materia de consumo? ¿Siguen vigentes?”
“¿Cuál es la vía procesal para una acción reivindicatoria?”
“Arma una minuta de alegato sobre término de contrato de arrendamiento urbano.”
Herramientas y prompts
34 herramientas (búsqueda con ranking, texto, fragmentos anidados, vigencia/vacancia, versiones, transitorios, modificaciones, definiciones, anexos, categorías, códigos, especialidad, vía procesal, Historia de la Ley, razonamiento jurídico ejecutable y navegador BCN) y 6 prompts jurídicos. Referencia completa en docs/HERRAMIENTAS.md.
Todas las herramientas aceptan response_format = markdown (por defecto), json o compacto (markdown mínimo, ~50 % menos tokens). Las de texto aceptan formato_texto = limpio (quita notas marginales) u original.
Cómo funciona
Usa el servicio abierto obtxml de Ley Chile:
Búsqueda:
obtxml?opt=61&cadena=…&cantidad=…Norma consolidada:
obtxml?opt=7&idNorma=…(&idVersion=YYYY-MM-DDpara texto histórico exacto)Recientes:
opt=3· Categorías:opt=30· Normas por categoría:opt=6
El XML se parsea preservando la jerarquía oficial (Libros/Títulos/Capítulos/Párrafos/Artículos) y la fecha de versión por artículo, base del control intertemporal.
Documentación de la fuente: Servicios web de Ley Chile · Esquema XML
Desarrollo
pip install -e ".[dev]"
pytest -qEstructura del paquete: client.py (HTTP), parser.py (XML y numeración de artículos), citas.py (citas en texto libre), segmenter.py (incisos/numerales/letras), timeline.py (vigencia intertemporal), catalog.py (capa B), prompts.py (capa C), razonamiento/ (PYTHEN: reglas derrotables y antinomías), browser.py (navegador BCN, opcional), formatting.py (salida + citas), service.py (orquestación), server.py (FastMCP).
El vocabulario de sufijos de artículo (
SUFIJOS_LATINOS,SUFIJO_LETRA) vive enparser.pyy lo importacitas.py: los dos módulos deben coincidir, y tenerlo duplicado fue justamente el origen del defecto que hacía resolver183-Bal artículo 183.
Limitaciones
Depende de la disponibilidad del servicio de BCN (con reintentos, failover y caché).
numero_leyresuelve leyes; para otros tipos useid_normao búsqueda.La línea de tiempo se deriva del historial observable del texto vigente; para precisión absoluta a una fecha, contraste con la versión oficial.
leychile_historia_leyentrega enlaces a la tramitación (no descarga los PDF).Las capas B y C son apoyo metodológico curado, no dictan derecho.
Créditos y datos
Datos: servicio público Ley Chile de la Biblioteca del Congreso Nacional de Chile (BCN). Proyecto creado y mantenido por Ian Guiloff.
Licencia
MIT © 2026 Ian Guiloff.
Available Tools
28 toolsleychile_buscar_en_normaARead-onlyIdempotent
Busca una palabra o frase dentro del articulado de una norma y devuelve los artículos.
Ideal para localizar dónde un código regula un tema (p. ej. 'fuero maternal' en el Código del Trabajo) sin descargar todo el cuerpo legal.
Inputs: params (required). Returns: result
leychile_buscar_normasARead-onlyIdempotent
Busca leyes, decretos, DFL, códigos y demás normas por palabra clave o materia.
Punto de partida para localizar el idNorma. Cobertura completa y vigente.
Inputs: params (required). Returns: result
leychile_citarARead-onlyIdempotent
Interpreta una cita legal en texto libre y devuelve el texto EXACTO citado.
Acepta 'art. 1698 inciso 1° del Código Civil', 'art. 19 N° 12 de la Constitución', 'art. 161 del Código del Trabajo', 'art. 4 de la Ley 19.628', etc. Devuelve el inciso/numeral/letra pedido (o el artículo completo) con su cita forense.
Inputs: params (required). Returns: result
leychile_comparar_articulosBRead-onlyIdempotent
Recupera 2 a 6 artículos (de una o varias normas) para análisis comparado.
Inputs: params (required). Returns: result
leychile_comparar_versionesCRead-onlyIdempotent
Compara la redacción de un artículo entre dos versiones (fechas exactas de versión).
Inputs: params (required). Returns: result
leychile_concordancias_articuloARead-onlyIdempotent
Extrae las remisiones de un artículo: a qué otros artículos, leyes, códigos y decretos cita.
Útil para mapear la red normativa de un precepto (interpretación sistemática).
Inputs: params (required). Returns: result
leychile_extraer_definicionesBRead-onlyIdempotent
Extrae las definiciones legales ('para los efectos de esta ley se entenderá por…').
Inputs: params (required). Returns: result
leychile_historia_leyCRead-onlyIdempotent
Enlaces oficiales a la Historia de la Ley, asociando las leyes modificatorias detectadas.
Inputs: params (required). Returns: result
leychile_indice_sistematicoBRead-onlyIdempotent
Índice de agrupadores (Libros/Títulos/Capítulos/Párrafos), sin artículos.
Ideal para navegar códigos extensos sin descargar todo el texto.
Inputs: params (required). Returns: result
leychile_linea_tiempo_articuloBRead-onlyIdempotent
Trayectoria temporal de un artículo: última modificación, versiones y leyes modificatorias.
Inputs: params (required). Returns: result
leychile_listar_articulosCRead-onlyIdempotent
Índice jerárquico completo (incluye artículos) con fecha de versión por parte.
Inputs: params (required). Returns: result
leychile_listar_categoriasBRead-onlyIdempotent
Lista las colecciones temáticas curadas por BCN (códigos, leyes frecuentes, etc.).
Inputs: params (required). Returns: result
leychile_listar_codigosARead-onlyIdempotent
Lista los códigos de la República con su idNorma (verificado) para acceso directo.
Los marcados sin idNorma se resuelven con leychile_resolver_codigo o búsqueda.
Inputs: params (required). Returns: result
leychile_listar_modificacionesBRead-onlyIdempotent
Lista las leyes modificatorias (desde notas marginales) de la norma o de un artículo.
Inputs: params (required). Returns: result
leychile_listar_normas_categoriaARead-onlyIdempotent
Lista las normas de una categoría temática (ver leychile_listar_categorias).
Inputs: params (required). Returns: result
leychile_listar_transitoriosCRead-onlyIdempotent
Aísla y extrae los artículos transitorios (gradualidad y reglas de vigencia).
Inputs: params (required). Returns: result
leychile_mapa_procesalARead-onlyIdempotent
Conecta un derecho sustantivo con su vía procesal idónea (reenvío sustantivo↔adjetivo).
Verifica en vivo la vigencia de las normas procesales citadas (para no plantear estrategias sobre un procedimiento modificado o derogado).
Inputs: params (required). Returns: result
leychile_normas_recientesBRead-only
Últimas normas publicadas en el Diario Oficial (novedades legislativas).
Inputs: params (required). Returns: result
leychile_obtener_anexosBRead-onlyIdempotent
Devuelve los anexos de la norma (p. ej. sentencias del Tribunal Constitucional).
Inputs: params (required). Returns: result
leychile_obtener_articuloCRead-onlyIdempotent
Texto de un artículo concreto, con su ubicación, fecha de versión y cita forense.
Inputs: params (required). Returns: result
leychile_obtener_fragmentoARead-onlyIdempotent
Extrae con precisión forense un inciso, numeral o letra de un artículo.
Ej.: 'inciso segundo del art. 254 del CPC' o 'art. 434 N° 4'. Devuelve solo el fragmento pedido con su cita.
Inputs: params (required). Returns: result
leychile_obtener_metadatosBRead-onlyIdempotent
Metadatos y estado de vigencia (incluye vacancia legal, texto refundido y N° de versiones).
Inputs: params (required). Returns: result
leychile_obtener_normaARead-onlyIdempotent
Texto consolidado y vigente de una norma (o de una versión histórica con id_version).
Si el texto excede max_caracteres, conmuta automáticamente a índice sistemático.
Inputs: params (required). Returns: result
leychile_obtener_versionARead-onlyIdempotent
Texto consolidado de una versión histórica EXACTA (idVersion = fecha de versión).
Inputs: params (required). Returns: result
leychile_resolver_codigoARead-onlyIdempotent
Resuelve un código chileno por su nombre y devuelve sus metadatos e idNorma.
Útil para obtener el idNorma exacto del Código Civil, Penal, Procesal Penal, de Procedimiento Civil, del Trabajo, Tributario, etc., antes de pedir artículos.
Inputs: params (required). Returns: result
leychile_resolver_ley_por_nombreARead-onlyIdempotent
Resuelve una ley por su apodo o nombre de uso común (p. ej. 'Ley Karin', 'Ley Emilia').
Usa un catálogo verificado de apodos; si no está, busca en vivo y ofrece coincidencias.
Inputs: params (required). Returns: result
leychile_sugerir_normas_especialesARead-onlyIdempotent
Sugiere las leyes especiales que priman sobre la norma general en un tema (Arts. 4° y 13 CC).
Catálogo curado verificado en vivo; señala el estado de vigencia de cada norma.
Inputs: params (required). Returns: result
leychile_texto_vigente_a_fechaARead-onlyIdempotent
Determina cómo estaba redactado un artículo a una fecha dada (control intertemporal).
Para normas procesales agrega la alerta de ultraactividad (actuaciones/plazos ya iniciados).
Inputs: params (required). Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 28 tools
Every tool has a clearly distinct purpose, from searching norms to retrieving specific fragments to mapping procedural routes. No two tools overlap in functionality, and the descriptions make their unique roles explicit.
All tools follow the consistent pattern 'leychile_verb_noun' using snake_case, e.g., leychile_buscar_normas, leychile_obtener_articulo. This makes the tool set predictable and easy for an agent to navigate.
With 28 tools, the set is larger than the typical well-scoped range, but each tool addresses a specific legal research need (citation, comparisons, timelines, etc.), justifying the count for the complexity of Chilean law. Slightly oversized but still reasonable.
The tool set covers the full lifecycle of legal research: search, retrieval, citation, comparison, history, categorization, and special features like process mapping and definition extraction. No obvious gaps are present for a comprehensive legal MCP server.
Maintenance
Related MCP Connectors
Connect AI to millions of laws and court cases with the Lawstronaut MCP.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
AI governance MCP server for EU AI Act compliance and jurisdiction verification
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceMCP server that exposes Austrian federal law (Bundesrecht) to LLMs, enabling full-text search, paragraph retrieval, historical versions, statute lookup, BGBl lookups, amendment timelines, and citation searches via the public RIS OGD API.MIT
- FlicenseAqualityDmaintenanceMCP server for Legalize.dev, enabling AI to query and understand legal frameworks across countries via a structured legislation API.131-
- AlicenseAqualityBmaintenanceMCP server for searching and fetching metadata of Chilean laws, decrees, and resolutions via the BCN Linked Open Data SPARQL endpoint.336 PyPIApache 2.0
- FlicenseAqualityBmaintenanceMCP server that provides access to Argentine legal documents (legislation, CSJN jurisprudence, international treaties) with verifiable provenance including SHA256 hashes and source URLs, enabling legal professionals to search and verify citations.13-