Aliado Libre
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., "@Aliado LibreBusca jurisprudencia sobre estabilidad laboral reforzada en Colombia"
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.
Aliado Libre
RAG legal colombiano libre y gratuito — alternativa abierta a ALI Cerebro Legal (aliado.pro). Legislación y jurisprudencia colombiana con citas verificables, para cualquiera: abogado, estudiante o persona sin formación jurídica.
Es la primera herramienta de Suite Legal Libre.
Qué es y qué no es (4-sep-2026)
Asistente que responde en prosa y cita sus fuentes, con un modelo propio fine-tuneado que corre en el equipo del usuario. Se usa de tres maneras, y la elige el usuario según la máquina que tenga:
Modo | Qué necesita | Para quién |
Todo local | ~21 GB de disco, ~5,1 GB de RAM de pico | quien quiera independencia total |
Modelo local + índice en la nube | conexión; el .exe pesa 29 MB + modelo | equipos modestos |
Servidor MCP | un asistente de IA propio (Claude, Cursor…) | perfil técnico |
Estado: en desarrollo, no apto para uso profesional todavía. La capa que redacta respuestas está en calibración y su tasa de acierto aún no alcanza el umbral que nos hemos puesto para darla por utilizable. Mientras tanto: verifica siempre la cita — cada respuesta trae los fragmentos oficiales de los que salió, y esos sí son texto literal comprobable. No sustituye asesoría jurídica profesional.
Las mediciones de calidad se llevan internamente y se publicarán cuando la precisión alcance el objetivo fijado.
Lo que puedes hacer hoy
Buscar en 928.086 fragmentos de 7 entidades colombianas, con citas verificables.
Acotar por entidad (solo la SIC, solo la DIAN, o varias cruzadas) y ver qué fuentes están cubiertas y cuáles no, con el motivo.
Apartar fuentes en un tablero y exportarlas a
.mdo.txtpara trabajar en tu equipo. El tablero vive en tu navegador y desaparece al cerrar la pestaña.Pedir una respuesta redactada por el modelo propio (gratis) o, si tienes clave de API de otro proveedor, por esa IA — viendo el costo estimado antes de gastar.
No guardamos tus consultas ni registramos quién pregunta. Ver docs/PRINCIPIOS.md.
Salvaguarda que ya existe: un verificador determinista comprueba que cada número de norma, artículo, plazo y cifra de la respuesta esté en los fragmentos recuperados, y marca lo que no encuentre.
Cobertura honesta: este proyecto NO pretende cubrir "toda" la data jurídica de Colombia.
Cubre lo que tiene fuente abierta confirmada y documentada (ver docs/fuentes.md).
Cuando el índice no tiene algo, la app debe decirlo explícitamente — nunca inventar — y
distinguir "no está en el índice" de "no sé": los huecos de cobertura son información útil.
Related MCP server: jurisprudenciaia-mcp
Estado (30-ago-2026)
Corpus creciendo activamente — de 44.733 documentos (28-ago) a más de 150.000 y subiendo.
Ver CHANGELOG.md para el detalle sesión a sesión.
✅ Gestor Normativo (legislación nacional): 2.381 normas. Techo del método BFS confirmado (ver
docs/fuentes.md). Incluye el grafo de vigencias (modifica/deroga/reglamenta) nativo.✅ Supersociedades (Tesauro, conceptos jurídicos): 4.999 conceptos.
✅ Corte Constitucional: 36.853 sentencias (1992-2026).
✅ SIC (decisiones jurisdiccionales): 500 providencias.
✅ DIAN: normativa/doctrina/jurisprudencia tributaria, aduanera y cambiaria (creciendo).
✅ Superfinanciera: conceptos jurídicos y jurisprudencia financiera (creciendo, 18.569 registros en el catálogo).
✅ legalize-co (respaldo GitHub): 71.900 normas completas, resuelve de paso el techo de Gestor Normativo.
⏳ Corte Suprema de Justicia: ingester funciona (backend GraphQL propio, sin autenticación, corpus de >1M resultados brutos) pero el servidor de la Corte es muy inestable (502 intermitente) — corriendo con reintento persistente hasta que haya una ventana estable.
🔴 Consejo de Estado, SUIN-Juriscol, jurisprudencia.ramajudicial.gov.co: bloqueados por WAF.
✅ Servidor MCP:
buscar_normativa()operativo (APImcp2.x), modo local (stdio). Deploy a un servicio web (Render) preparado pero deliberadamente no activado — el costo recurrente no se justifica frente al uso 100% local actual (verdocs/DEPLOY.md).
Portabilidad: el código vive en GitHub (github.com/fabiangulla-pixel/aliado-libre), pero
data/raw/ y index/chroma_db/ (varios GB) no — se generan localmente corriendo los ingesters,
o se descargan ya construidos desde Hugging Face Hub una vez publicados
(scripts/publicar_indice_hf.py).
Calidad: 278 tests (make test), lint limpio (ruff), hook de pre-commit instalado.
Arquitectura
ingest/ scrapers por fuente -> Documento (esquema común en ingest/schema.py)
fuentes/
gestor_normativo.py, supersociedades.py, corte_constitucional.py, sic.py,
dian.py, superfinanciera.py, corte_suprema.py, legalize_co_github.py
chunking.py corta documentos en fragmentos citables (por artículo cuando es posible)
data/raw/ JSON crudo por fuente
index/
build_index.py construye embeddings + índice Chroma a partir de data/raw/
build_fts.py construye el índice léxico FTS5 (SQLite, en disco) a partir de Chroma
buscar.py búsqueda híbrida (vectorial + FTS5, fusión RRF ponderada — RAM ~5,1GB
de PICO con los 928k fragmentos, antes ~10GB con BM25 en memoria.
Los 2,3GB que decía antes eran del embedding MiniLM viejo Y medidos
solo al arrancar: el HNSW de Chroma se mapea a memoria y crece al
buscar, así que hay que medir DESPUÉS de servir consultas)
mcp_server/
server.py expone buscar_normativa() como herramienta MCPEntorno
La versión de Python no es negociable: 3.12. PyTorch y sentence-transformers hacen
segfault en el 3.14 del sistema, y este proyecto los carga siempre que toca el índice. Está
declarado en pyproject.toml (requires-python), no solo aquí.
Instalación desde cero:
py -3.12 -m venv venv
./.venv/Scripts/python.exe -m pip install -r requirements.txt # para usarlo
./.venv/Scripts/python.exe -m pip install -r requirements-dev.txt # además, para desarrollar
./.venv/Scripts/python.exe scripts/install_hooks.py # hook de pre-commitSi el equipo tiene GPU NVIDIA, instala torch aparte y ANTES, o pip traerá la
rueda de PyPI, que en Windows es solo CPU y deja la tarjeta sin usar:
./.venv/Scripts/python.exe -m pip install torch==2.13.0 --index-url https://download.pytorch.org/whl/cu130Esa rueda exige driver NVIDIA 580 o superior. Con uno anterior, import torch
no falla al usar la GPU: falla al importar, con WinError 1114 cargando c10.dll,
que no se parece en nada a la causa. Comprobar con nvidia-smi antes de perder
la tarde. Merece la pena: el reranker pasa de ~57 s por consulta en CPU a 1,5 s
en una RTX 5080, y con GPU se enciende solo (ver docs/PROJECT_STATE.md).
llama-cpp-python (solo para el modelo propio local) no tiene rueda
precompilada en la versión fijada: se compila, así que hace falta las Build
Tools de C++ de Visual Studio. En Windows, además, hay que darle una carpeta
temporal corta (set TMP=C:\t), porque su paquete fuente contiene rutas que pasan
del límite de 260 caracteres y el error que devuelve pip habla de un archivo
.svelte, no del límite de ruta.
Las versiones están fijadas a propósito: son las que se usaron para construir el índice y medir la calidad. Sin fijarlas, una instalación de dentro de tres meses trae otra cosa y las mediciones dejan de ser reproducibles sin que nadie se entere.
Falta el índice: no está en git (pesa ~21 GB). Se descarga ya construido desde
Hugging Face —es público, no
hace falta token— o se reconstruye con index/build_index.py + index/build_fts.py.
Al descargarlo a mano, dos avisos que cuestan horas:
Bájalo en paralelo. Un solo flujo de descarga da una fracción del ancho de banda disponible; con 8 trozos simultáneos se midió 8× más rápido (de más de 5 horas a menos de una).
huggingface-cli downloadya lo hace.De las dos carpetas de vectores sobra una. Son ids de segmento, no de colección:
9601ae5b-…es la del embedding actual (e5-large) y41519883-…la del MiniLM viejo, que ya no se usa. Verifica cuál es cuál en la tablasegmentsdechroma.sqlite3antes de fiarte del nombre. Los.npyde vectores solo sirven para reconstruir el índice: para consultarlo no hacen falta.
Comprueba el índice descargado abriéndolo, no por su tamaño: PRAGMA quick_check en
chroma.sqlite3 y fts_index.db, y que las tres estructuras den 928.086 fragmentos.
Comprobar que todo está bien:
./.venv/Scripts/python.exe -m pytest tests/ -q # 278 tests
check.bat # lint + formato + testsComandos de uso:
./.venv/Scripts/python.exe index/build_index.py # construir/actualizar índice vectorial (Chroma)
./.venv/Scripts/python.exe index/build_fts.py # construir el índice léxico (FTS5) a partir de Chroma
./.venv/Scripts/python.exe index/buscar.py "consulta" # probar búsqueda por CLI
./.venv/Scripts/python.exe mcp_server/server.py # levantar servidor MCP
./.venv/Scripts/python.exe gui/server.py # GUI web local (abre navegador solo)La GUI (gui/server.py) es la forma recomendada de uso diario: búsqueda
híbrida con citas, y opcionalmente una respuesta redactada en español por un
modelo local vía Ollama (checkbox "Redactar respuesta con IA local"), ambas
100% locales sin llamadas externas.
Fine-tuning y modelo local
finetune/ tiene el pipeline completo para entrenar un modelo chico (LoRA en Colab, GPU
gratuita) que responda citando fuentes en el formato de index/responder.py, exportarlo a
GGUF (finetune/exportar_gguf.py) y evaluarlo (finetune/evaluar.py, banco de preguntas
real generado y juzgado con Claude). Se compararon 4 candidatos sobre 150 preguntas reales
y ganó Qwen2.5-1.5B, que le gana incluso a la generación más nueva (Qwen3) a este
tamaño de parámetros: a esta escala pesó más el tamaño que la generación. Qwen3.5 se
descartó por un bug real del conversor de llama.cpp para su arquitectura híbrida (no
carga, sin importar el tamaño del modelo).
Las cifras de acierto de cada candidato están en las mediciones internas
(docs/PROJECT_STATE.md), no aquí.
Próximos pasos
Subir el acierto de la búsqueda, que es el cuello de botella real. Dos vías preparadas y no confirmadas: reordenar los candidatos con un modelo que lee pregunta y pasaje juntos (
index/reordenar.py), y afinar el embedding sobre este mismo corpus (finetune/generar_pares_embedding.py+finetune/colab_afinar_embedding.ipynb). Cualquiera de las dos se juzga contra la partición de prueba del banco, que no se usa para ajustar nada.Volver a medir la memoria del índice con el embedding nuevo, antes de contratar hosting: la cifra que hay en
docs/DESPLIEGUE_INDICE.mdes del modelo anterior y es la que decide el escalón de precio.Desplegar el servidor del índice y fijar su URL por defecto en el ejecutable.
Publicar el índice construido en Hugging Face Hub (
scripts/publicar_indice_hf.py) para que otros lo usen sin tener que reconstruirlo.Reintentar Corte Suprema cuando su backend esté disponible (sigue en 0 documentos; comprobado de nuevo el 6-sep-2026, responde 502).
Consejo de Estado sigue bloqueado por WAF — no hay plan de reintento hasta que aparezca una vía de acceso pública real.
Cerrado ya: la cuantización del modelo (se distribuye Q4_K_M, ver docs/EMPAQUETADO.md),
el .spec de PyInstaller y la decisión de arquitectura híbrida nube+API.
This server cannot be deployed
Maintenance
Related MCP Connectors
Connect AI to millions of laws and court cases with the Lawstronaut MCP.
- LegalizeOAuthdev.legalize
Official MCP connector for Legalize: read and search its whole open corpus, at any point in time.
Cloud or self-hosted knowledge for AI agents: hybrid search, reranking, GraphRAG, scoped MCP tools.
Make your knowledge agent-ready. One MCP endpoint, 5 connectors, 3 search modes.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables querying 6,870 German federal statutes, case law, and legislative preparatory works directly from AI assistants and MCP-compatible clients.65 npm4Apache 2.0
- FlicenseNot gradedqualityBmaintenanceSelf-hosted MCP connector for querying Brazilian legal jurisprudence via JurisprudenciaIA. Enables natural language legal research using Claude.ai, with tools for consulting, searching, and comparing jurisprudence and legal theses.13-
- AlicenseAqualityCmaintenanceMCP server that connects AI to the Chilean legislation system (Ley Chile) for retrieving legal norms, citations, and intertemporal analysis.282MIT
- AlicenseBqualityFmaintenanceConnects AI assistants to Chilean legal sources, enabling citation of official legal texts, search of doctrine, jurisprudence, and rulings.18MIT