Guía de integración · conector MCP
Conecta tu IA al derecho colombiano
Tu asistente ya sabe razonar. Lo que no tiene es el texto de las normas colombianas ni el rastro de lo que les pasó después de publicadas. Esto se arregla pegando una URL y una key: a partir de ahí tu IA busca, lee y cita el corpus en vez de reconstruirlo de memoria.
Sin sufijos ni
rutas: el dominio es el endpoint. Las configuraciones antiguas que apuntan a
…/mcp siguen funcionando.
man mcp
Qué es un conector MCP
MCP (Model Context Protocol) es el estándar con el que un modelo de lenguaje llama herramientas que no son suyas. Tú registras un servidor una vez; el modelo descubre solo qué herramientas hay, cuándo usarlas y con qué argumentos. No hay que programar nada ni cambiar de asistente.
El Cerebro Legal es uno de esos servidores. Expone cinco herramientas sobre 1,1 millones de normas y sentencias colombianas, y devuelve siempre el identificador de la fuente para que cualquier afirmación se pueda verificar.
canonical_id y del fragmento del que salió.auth --key
Paso 1 — tu API key
Entra con la cuenta de ALI
Es la misma cuenta de aliado.pro: Google o WhatsApp, sin
pasos intermedios y sin tarjeta. Desde tu panel generas la key.
sk_live_ y va siempre en la
cabecera Authorization: Bearer …, nunca en la URL.config --pegar
Paso 2 — pegar el conector
Elige tu cliente. En todos, lo único variable es dónde va el bloque; la URL y la cabecera son iguales.
Claude (web y escritorio) — sin key
- Abre Ajustes → Conectores → Añadir conector personalizado.
- Nombre:
Cerebro Legal. URL:https://mcp.aliado.pro. - Deja Client ID y Client Secret completamente vacíos — el registro del cliente es automático.
- Pulsa conectar: se abre el navegador, entras con tu cuenta de ALI y autorizas. Vuelves a Claude con el conector activo.
Claude Code — una línea
claude mcp add --transport http cerebro-legal https://mcp.aliado.pro \ --header "Authorization: Bearer sk_live_TU_KEY"
Comprueba con /mcp dentro de Claude Code: debe aparecer
cerebro-legal como connected con cinco herramientas.
Cursor — ~/.cursor/mcp.json
{
"mcpServers": {
"cerebro-legal": {
"url": "https://mcp.aliado.pro",
"headers": { "Authorization": "Bearer sk_live_TU_KEY" }
}
}
}
El mismo bloque sirve en cualquier cliente que lea el formato
mcpServers — Windsurf, VS Code con extensión MCP y la mayoría de
IDEs. Algunos piden además "type": "http":
{
"mcpServers": {
"cerebro-legal": {
"type": "http",
"url": "https://mcp.aliado.pro",
"headers": { "Authorization": "Bearer sk_live_TU_KEY" }
}
}
}
Agentes propios
El transporte es streamable-http, el estándar actual del protocolo. Cualquier SDK de MCP se conecta pasando la URL y la cabecera de autorización. En Python:
# pip install mcp import asyncio from mcp import ClientSession from mcp.client.streamable_http import streamablehttp_client URL = "https://mcp.aliado.pro" CAB = {"Authorization": "Bearer sk_live_TU_KEY"} async def main(): async with streamablehttp_client(URL, headers=CAB) as (r, w, _): async with ClientSession(r, w) as s: await s.initialize() print([t.name for t in (await s.list_tools()).tools]) out = await s.call_tool("buscar_normas", {"query": "estabilidad laboral reforzada", "limit": 3}) print(out.content[0].text[:400]) asyncio.run(main())
Si tu orquestador no habla MCP (n8n, Zapier, un cron propio), usa la API REST con la misma key.
test --primera-pregunta
Paso 3 — la primera pregunta
Pídele algo que obligue a usar el corpus. Una buena primera prueba:
Con el Cerebro Legal, busca qué dice la ley colombiana sobre la estabilidad laboral reforzada de la mujer embarazada. Cítame el canonical_id de cada norma o sentencia que uses y dime, para las normas, si siguen vigentes.
Sabes que funcionó cuando la respuesta trae identificadores concretos
(co:ley:…, co:sentencia:…) y no solo prosa. Si tu
asistente responde sin llamar a ninguna herramienta, dile explícitamente
«usa las herramientas del Cerebro Legal».
tools --list
Las cinco herramientas
No tienes que llamarlas a mano: el modelo elige. Conocerlas sirve para pedirle lo correcto y para entender la factura.
| Herramienta | Para qué | Argumentos principales | Créditos |
|---|---|---|---|
| buscar_normas | Búsqueda híbrida (semántica + léxica) con reranker jurídico. Devuelve fragmentos, no documentos enteros. | query, limit, tipo,
anio, estado_vigencia,
excluir_derogadas |
1 |
| texto_vigente | ¿Rige hoy — o regía a la fecha de los hechos? Se resuelve sobre el grafo de afectaciones. | canonical_id, fecha, articulo |
0,5 |
| leer_norma_completa | Texto íntegro de una norma o sentencia, paginado por secciones para no inundar el contexto. | doc_id, seccion, desde,
max_chars |
0,5 |
| consulta_grafo | Quién modifica, deroga, adiciona, reglamenta o cita a quién. Salto a salto. | canonical_id, relacion,
direccion, limit |
0,5 |
| estadistica_jurisprudencial | Jurimetría descriptiva: distribuciones por corte, año, materia, magistrado y tipo. No predice fallos. | corte, materia, magistrado,
anio_desde, anio_hasta, top |
1 |
El flujo que da mejores respuestas
- buscar_normas para localizar. Si buscas la norma y
no jurisprudencia, pasa
tipo=LEY(oDECRETO): sin filtro, las sentencias suelen copar los primeros puestos. - texto_vigente antes de citar legislación.
- leer_norma_completa para el texto largo, por secciones.
- consulta_grafo para rastrear qué le pasó a la norma.
cat respuesta.json
Cómo leer las respuestas
Tres campos explican casi todo lo que puede confundir:
canonical_id— con esto se cita y se consulta el grafo o la vigencia. Formatoco:….doc_id— con esto se lee. Formatosource:external_id. No es intercambiable con el anterior.estado_vigencia: null— significa fuente sin control de vigencia (jurisprudencia, doctrina administrativa), no que esté vigente.
suin_id
que traen algunas fuentes no es único entre fuentes distintas: hay documentos que
lo comparten. doc_id sí es único, y por eso es el que se usa para
leer. Si pides una lectura sin doc_id, la herramienta puede
devolverte varios candidatos en lugar de adivinar.Cuando una búsqueda devuelve total: 0, revisa
aviso y cobertura: puede ser que esa fuente aún no esté
indexada. Y modo te dice si la búsqueda vino degradada a solo-léxica.
prompt --recetas
Cómo pedirlo bien
El conector le da a tu IA las fuentes; lo que le pidas decide si las usa.
- Exige el identificador. «Cítame el
canonical_idde cada afirmación» convierte una respuesta plausible en una verificable. - Fija la fecha cuando importa. «¿Qué regía el 12 de marzo de 2019?» hace que se consulte la vigencia a esa fecha y no la de hoy.
- Di si quieres norma o jurisprudencia. Son corpus muy distintos y el ranking los mezcla si no lo dices.
- Pide el texto, no el resumen, cuando vayas a citar literalmente: «tráeme el artículo completo».
- Pregunta qué le pasó después. «¿Esta norma fue modificada o derogada? Rastréalo en el grafo» es lo que ningún modelo puede saber de memoria.
usage --limites
Créditos y límites
Cada llamada a una herramienta consume créditos según la tabla de arriba. El plan gratuito trae 50 créditos al mes y 10 solicitudes por minuto, sin tarjeta. Los créditos del plan se renuevan cada mes; el saldo recargado no caduca mientras la cuenta esté activa.
Tu consumo en vivo:
curl -s https://api.aliado.pro/v1/usage \ -H "Authorization: Bearer sk_live_TU_KEY"
Lo mismo, con gráficas y desglose por herramienta, está en tu panel.
curl --api-rest
Sin MCP: la API REST
Misma key, mismos datos, mismos créditos. Útil para pipelines, backends y herramientas que no hablan MCP.
curl -X POST https://api.aliado.pro/api/tools/buscar \
-H "Authorization: Bearer sk_live_TU_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "vigencia del articulo 90 de la ley 100", "limit": 5}'
| Ruta | Herramienta equivalente |
|---|---|
| POST /api/tools/buscar | buscar_normas |
| POST /api/tools/texto-vigente | texto_vigente |
| POST /api/tools/leer-documento | leer_norma_completa |
| POST /api/tools/grafo | consulta_grafo |
| POST /api/tools/estadistica | estadistica_jurisprudencial |
debug --codigos
Cuando algo falla
401 — unauthorized
Falta la cabecera, o la key es inválida o fue revocada. Revisa que sea
Authorization: Bearer sk_live_… (con el espacio tras
Bearer) y que no hayas generado una key nueva después —
generar una revoca la anterior.
402 — sin créditos
Agotaste el cupo del mes y no hay saldo. Recarga desde tu panel o sube de plan. El cupo del plan se renueva solo el mes siguiente.
429 — demasiadas solicitudes
Pasaste el límite por minuto de tu plan. La respuesta trae
Retry-After con los segundos que faltan. Si vas a lanzar lotes,
espacia las llamadas o sube de plan.
El conector aparece pero sin herramientas
Suele ser una URL con ruta de más o un cliente que exige
"type": "http". Usa exactamente
https://mcp.aliado.pro y prueba la variante con
type de la pestaña de Cursor.
La IA responde de memoria y no llama nada
No es un fallo del conector: es el modelo decidiendo que no lo necesita.
Nómbralo en el prompt («usa el Cerebro Legal») y pide el
canonical_id: eso lo fuerza a ir a la fuente.
Sigue sin funcionar
Comprueba el estado del servicio en /health y escríbenos a hola@aliado.pro con el código de error y la hora aproximada.
Qué no hace
El Cerebro Legal entrega información jurídica documental y no constituye asesoría legal. Está en beta: la cobertura crece cada semana y por eso cada respuesta trae la fuente exacta — para que la verifiques antes de usarla. No entrenamos modelos con tus consultas.
Empezar gratis — 50 consultas/mes