Para asistentes · un archivo, cero dependencias
Un asistente que además mantiene el directorio
Leer los datos es la mitad. Lo que decide si esto sirve no es el código: es que alguien mantenga los datos frescos. Por eso el servidor MCP no solo consulta — también confirma, marca quién se hizo cargo y cierra lo que ya se resolvió, sin que nadie abra la página.
Es un solo archivo de Python, scripts/mcp_pereira.py, sin dependencias: JSON-RPC 2.0 sobre stdio, escrito a mano. No hay nada que instalar ni que construir. Viene con el repositorio; si lo necesita y no lo tiene a mano, escríbanos.
claude mcp add pereira -- python3 scripts/mcp_pereira.py
O a mano, en .mcp.json:
{"mcpServers": {"pereira": {"command": "python3",
"args": ["scripts/mcp_pereira.py"]}}}
No pide clave ni configuración: trae la dirección del proyecto y la clave pública adentro. Si necesita apuntarlo a otra base, las variables de entorno SUPABASE_URL y SUPABASE_ANON mandan sobre esos valores.
Qué puede hacer · dos leen, seis escriben
Las ocho herramientas
Las dos primeras solo consultan. Las otras seis cambian el directorio y salen publicadas de inmediato.
| Herramienta | Qué hace | Parámetros |
buscar_puntos |
Busca en el directorio y devuelve el slug de cada punto, que es lo que hace falta para actualizarlo. |
texto (nombre, descripción y barrio) · categoria · etiqueta · municipio · solo_sin_atender · limite (20 por defecto, 100 máximo) |
estado_directorio |
Cuántos puntos hay por categoría y estado, cuántos está atendiendo alguien y cuáles tienen una contradicción viva. |
ninguno |
publicar_punto |
Publica un pedido, una oferta o un lugar nuevo. Sale de inmediato, marcado sin confirmar. No publica coordenadas. |
nombre* · descripcion* · categoria (necesita_ayuda por defecto) · barrio · municipio (Pereira por defecto) · etiquetas · contacto_telefono · contacto_publicable |
confirmar_punto |
Registra que alguien estuvo ahí. Con no_estaba registra lo contrario, que es el dato más valioso. |
slug* · no_estaba |
atender_punto |
Marca que alguien se hace cargo. Falla si ya lo tomó otra persona, y dice quién. |
slug* · quien* |
resolver_punto |
Cierra un pedido ya cubierto. Solo aplica a pedidos, viviendas y maquinaria: un albergue o un hospital no se cierran desde acá. |
slug* · nota |
reabrir_punto |
Devuelve a la lista un punto cerrado por error o que volvió a hacer falta. |
slug* |
anotar_punto |
Publica un aviso en la ficha. No reescribe el dato original: queda como nota fechada y sin verificar. |
slug* · nota* |
Los marcados con * son obligatorios. Todas las que actualizan piden slug, y el slug sale de buscar_puntos: en la práctica se busca primero y se actualiza después.
El orden en que se usan
Una jornada de mantenimiento se ve así, y es para lo que está hecho el servidor:
estado_directorio para ver qué está contradicho, que es lo que hay que verificar primero.
buscar_puntos con solo_sin_atender para encontrar lo que nadie ha tomado.
atender_punto antes de salir, para que otro grupo no mande lo mismo al mismo sitio.
confirmar_punto al volver — y con no_estaba si no había nadie, que salva nueve viajes.
resolver_punto cuando la ayuda ya quedó cubierta, o anotar_punto si el dato cambió pero el punto sigue vivo.
Qué acepta · y qué descarta en silencio
Los valores cerrados
categoria, etiqueta, etiquetas y municipio aceptan solo los valores de estas listas; lo que no esté en ellas se descarta en silencio. Son las mismas del esquema de la API.
- Categorías:
acopio, albergue, hospital, necesita_ayuda, maquinaria, donacion, mascota, colapso, vivienda, psicologica.
- Etiquetas, quince y ninguna más:
agua, alimentos, medicamentos, ropa, aseo, colchonetas, mascotas, voluntarios, rescate, maquinaria, transporte, psicosocial, estructural, duchas, energia.
- Municipios:
Pereira, Dosquebradas, La Virginia, Santa Rosa de Cabal.
La lista de etiquetas es cerrada a propósito. Con etiquetas libres, «agua», «agua potable», «aguita» y «AGUA» son cuatro filtros para una sola cosa, y un filtro fragmentado no filtra nada.
Lo que no es de forma · permisos y datos personales
Dos advertencias que no son de forma
- El teléfono solo con permiso.
contacto_publicable va en true únicamente si la persona autorizó publicar su número. Es la Ley 1581 de 2012 y por defecto la respuesta es no. Sin ese campo el teléfono no se guarda.
- El servidor no puede hacer nada que un visitante no pueda. Escribe con la misma clave pública que usa la página y pasa por las mismas políticas de seguridad de la base. Si se filtrara, no habría nada que revocar — esa es la idea.
De eso se sigue lo que el servidor tampoco hace: no verifica puntos —el sello de verificado lo pone la comunidad confirmando, y una contradicción viva lo impide—, no borra nada, y no tiene forma de tocar la cola de moderación. Un asistente conectado acá es un vecino más con las manos de un vecino, no un administrador.
El código del servidor va bajo licencia MIT y los datos son abiertos con crédito: los términos exactos, en la licencia.