Skip to main content
Glama

SEA-Conect

Conector MCP en Next.js para buscar proyectos del SEIA de Chile, listar enlaces de sus expedientes y comparar métricas de evaluación. Solo consulta metadatos, fichas e índices públicos: no descarga PDF ni abre o lee documentos.

Ejecutar y conectar

Requiere Node.js 20 o superior. Se recomienda Node.js 24.

npm install
npm test
npm run build
npm start

Para desarrollo: npm run dev. En Windows con scripts de PowerShell deshabilitados, usa npm.cmd.

El endpoint MCP es http://localhost:3000/api/mcp, transporte Streamable HTTP. En Vercel, importa este proyecto Next.js y configura tu cliente MCP con https://tu-dominio/api/mcp. En Claude: Settings → Connectors → Add custom connector. El conector consulta información pública y no necesita API key.

Related MCP server: bogamatic-sac-mcp

Herramientas

Herramienta

Parámetros y comportamiento

listar_filtros_seia

filtro: estados, sectores, razones_ingreso, tipologias, regiones o comunas. texto opcional busca sin distinguir mayúsculas ni tildes. Devuelve código y texto.

buscar_proyecto_seia

nombre opcional, titular, tipo (DIA/EIA), estado, sector, tipologia, region, comuna, razon_ingreso, presentado_desde, presentado_hasta, calificado_desde, calificado_hasta, pagina (1), limite (15, máximo 50). Exige algún criterio.

buscar_documentos_seia

id_expediente numérico como texto. categoria por defecto rca_icsara; también todos, documento_de_ingreso, adenda, icsara, rca, ice, anexo, otro. texto filtra por nombre. Siempre informa conteos por categoría antes del filtro.

evaluar_proyecto_seia

id_expediente. Informa estado, DIA/EIA, presentación, calificación, días corridos, número de ICSARA/adendas, presencia de RCA y enlaces a ficha, RCA e ICSARA. Datos ausentes: null, con explicación.

proyectos_similares_seia

Al menos tipologia, sector o texto; opcionales region, tipo (DIA), solo_aprobados (true), presentado_desde, limite (8, máximo 12). Selecciona los candidatos más recientes en el buscador y ordena aprobados primero, menor suma de ICSARA/adendas después, y finalmente presentación más reciente.

Los filtros de catálogo admiten código o texto; varios valores pueden pasarse como array o separados por comas. Una coincidencia textual parcial puede corresponder a varios códigos: usa listar_filtros_seia para elegir uno preciso. Las fechas aceptan 2022 o dd/mm/aaaa; los años se expanden al 1 de enero o al 31 de diciembre según el extremo del rango. Se validan fechas reales y rangos.

La búsqueda devuelve ID, nombre, tipo, región, comuna, titular, estado, fecha de presentación, inversión en MMUS$, ficha, total y página. Los parámetros originales {nombre, limite} y {id_expediente} siguen siendo válidos; la búsqueda documental sin categoría sigue mostrando RCA/ICSARA. Las respuestas MCP ahora son tablas/listas de texto, con máximo de 15.000 caracteres y aviso si se recortan. Los errores devuelven isError: true y mensaje en español.

Ejemplos en lenguaje natural

  • «Lista las tipologías que mencionan transmisión o avícola y muéstrame sus códigos».

  • «Busca parques fotovoltaicos aprobados en Antofagasta, presentados desde 2024».

  • «Busca DIA de energía aprobadas o rechazadas entre 2022 y 2025; muestra la segunda página».

  • «Encuentra ocho DIA similares de saneamiento ambiental y prioriza las que tuvieron menos rondas de observaciones».

  • «Evalúa el expediente 2160034555 y dame enlaces a su RCA y sus ICSARA».

  • «Lista todos los documentos de ese expediente que mencionen Capítulo 2 o área de influencia» (hacer una consulta por texto).

Las tipologías reflejan el catálogo oficial: una tecnología como “solar” puede no aparecer literalmente en sus descripciones. En ese caso, busca proyectos por nombre/texto o elige la tipología oficial pertinente, por ejemplo centrales generadoras. Los capítulos no expuestos por el índice principal no pueden encontrarse por texto; se entregan enlaces a los índices de anexos para revisión manual.

Datos oficiales y límites

app/api/mcp/datos_seia.js contiene 11 estados, 14 sectores, 6 razones de ingreso, 209 tipologías, 17 regiones (incluida Interregional) y 346 comunas, extraídos del formulario oficial. Los códigos territoriales son internos del SEA: no se deben sustituir por códigos administrativos de otras fuentes.

npm run actualizar-filtros
npm run humo

scripts/actualizar_filtros.mjs hace una petición al formulario y regenera los catálogos sin ejecutar JavaScript remoto. Regiones y comunas provienen del literal RegionesYcomunas insertado por PHP en el JavaScript del formulario; no fue necesario un endpoint AJAX. También admite un archivo HTML local como argumento para regeneración sin red. Si la extracción falla conserva el archivo anterior.

Todas las peticiones llevan User-Agent identificable, vencen a los 20 segundos y comparten un máximo de cuatro peticiones simultáneas por proceso. Una búsqueda de similares consulta como máximo 12 expedientes. route.js exporta maxDuration = 60. No se siguen redirecciones hacia archivos: se consulta directamente la ruta canónica de la ficha.

Las métricas son orientativas: menos rondas no demuestra mejor calidad ambiental. Se cuentan documentos clasificados por nombre, no oficios de envío, solicitudes de evaluación ni notificaciones que los mencionan. Los índices de anexos se cuentan como enlaces de categoría anexo, no como cantidad de archivos internos. Los días son corridos e incluyen suspensiones; no se confunden con DIAS_LEGALES. Una tabla documental vacía deja las métricas en null, pues no prueba que no existan documentos. Ante un fallo individual, similares conserva el candidato con métricas null y explica el motivo, sin favorecerlo como si tuviera cero rondas.

Verificación real del SEA (7 de octubre de 2026)

  • El endpoint de búsqueda requiere nombres sin [] y listas separadas por comas. projectStatus=4 devolvió 552 coincidencias para “fotovoltaico”; projectStatus=4,5, 569. Las variantes projectStatus[] devolvieron errores SQL del servidor.

  • Tanto las respuestas como los textos enviados en el formulario requieren ISO-8859-1. Una búsqueda UTF-8 de “Parque Eólico Wayra” no devolvió coincidencias; la misma búsqueda en Latin-1 sí encontró el expediente correcto.

  • offset representa la página, comenzando en 1. Desde la segunda página el servidor devuelve total cero aunque haya resultados; se recupera el total mediante una consulta mínima de la primera página.

  • El orden predeterminado es presentación ascendente. Los parámetros oficiales orderColumn=FECHA_PRESENTACION y orderDir=DESC permiten seleccionar los candidatos recientes antes de evaluar sus expedientes.

  • La respuesta de búsqueda observada no incluye fecha de calificación. Se obtiene del registro de estados de la ficha; en similares se usa la fecha de la primera RCA del índice, indicando esta procedencia en las métricas. No se infiere de FECHA_PLAZO.

  • Se examinaron los expedientes 2160034555, 5282615 y 6581267. Los dos últimos devolvieron índices vacíos. Wayra mostró 131 filas, 3 ICSARA, 3 adendas, una RCA, un ICE y 7 enlaces a índices de anexos.

  • El humo ejecuta cuatro consultas compuestas y ocho peticiones en total: búsqueda regional, documentos Wayra, evaluación Wayra y dos similares. La búsqueda regional encontró 7 coincidencias desde 2024; los dos similares recientes fueron Ckoirama Solar y Valle de las Estrellas. Wayra fue presentado el 20/09/2023 y calificado el 05/02/2026: 869 días corridos.

No se verificó el contenido de documentos o anexos, conforme al alcance. Los catálogos y formatos dependen del SEA y pueden cambiar. La instalación reporta dos avisos de auditoría en la cadena Next.js/PostCSS; no se hizo una migración mayor de Next.js ajena a esta especificación.

Estructura y pruebas

  • app/api/mcp/route.js: entrada MCP y duración máxima.

  • herramientas.js: esquemas, registro, resultados compactos y errores.

  • seia.js: filtros, búsqueda, clasificación, métricas y similares.

  • http.js / html.js: transporte limitado, codificación y parseo de metadatos.

  • datos_seia.js: catálogos estáticos regenerables.

  • test/: pruebas con node --test, fetch simulado, sin acceso a red.

  • scripts/: regeneración de filtros y humo real.

Las pruebas cubren mapeo de filtros, Latin-1 de entrada/salida, paginación, clasificación y exclusión de oficios, deduplicación, métricas y ausencias, orden de similares, límites de concurrencia, compatibilidad original, errores y límite de texto.

Related MCP Connectors

Related MCP Servers