DEV Community

Andrés León
Andrés León

Posted on Originally published at desarrollomcp.com

Analizamos por dentro un servidor MCP local: mcp-supermercados-cl

mcp-supermercados-cl es un servidor MCP local que da a tu asistente herramientas para armar listas de compra en cinco supermercados de Chile (Jumbo, Santa Isabel, Unimarc, Tottus y Líder). Lo publica NLACE-COM con licencia MIT; tu cliente MCP lo arranca en tu máquina y le habla por stdio.

Lo hemos leído por dentro (commit 3441cca, paquete 1.4.7), lo hemos compilado y ejecutado en local sin cuentas ni claves, y le hemos conectado un cliente MCP mínimo. Esto es lo que más nos ha gustado y lo que mejoraríamos.

Lo que hace bien

Tools orientadas al resultado, no a la API. build_list recibe hasta 30 ítems en texto libre y un presupuesto, y devuelve una lista decidida: producto elegido por precio por unidad y ofertas, hasta tres alternativas y el total. Envolver el endpoint de búsqueda de cada cadena habría obligado al modelo a hacer ese trabajo llamada a llamada. Las tools de lectura (search_products, get_offers…) van aparte.

El carro nunca toca tu cuenta. add_to_cart no hace la petición a la tienda: devuelve la petición exacta y un browserSnippet para ejecutar en tu pestaña ya logueada, con executed: false. Tus credenciales se quedan en el navegador y las instrucciones del servidor prohíben al modelo pedirte usuario o clave.

Un adaptador por cadena, sin fingir cobertura. Un registro de cinco adaptadores (Jumbo y Santa Isabel comparten el de Cencosud) y una tabla en el README que dice qué cadena tiene búsqueda, precio de socio o carro. Solo Jumbo marca el ciclo completo, y lo dice.

Errores con siguiente paso. Cada error lleva categoría, mensaje y un campo action (reiniciar sesión, reintentar…) y se devuelve con isError, así el modelo lo ve como resultado y puede actuar.

stdio bien hecho. Nada que no sea JSON-RPC en stdout; los avisos van a stderr, como pide la especificación.

Por qué es local (y cuándo deja de bastar)

El autor lo explica en el README: el precio de socio, tus compras frecuentes y el carro viven en tu navegador con sesión, y algunas cadenas bloquean el tráfico desde centros de datos. Para un servicio remoto compartido harían falta Streamable HTTP, autorización y aislamiento por usuario.

Lo que probamos (y lo que no)

  • npm ci --ignore-scripts y npm run build: sin errores.
  • npm test: 178 de 180 tests pasan. Los 2 que fallan dependen de la fecha: sus datos de ofertas caducan en agosto de 2026 y el selector compara con Date.now(). No indican un fallo con la web real.
  • Un cliente MCP mínimo recibió las 14 tools y los 5 prompts; get_cart sin sesión devolvió las instrucciones sin consultar ningún carro.
  • No probamos tiendas, compras ni sesiones.

Lo que mejoraríamos

  1. Pasar un reloj fijo a esos dos tests para que no dependan del día.
  2. Documentar que executed: true solo indica que la tool normalizó el JSON recibido, no que el carro haya cambiado.
  3. Documentar con qué versiones del protocolo se ha probado (usa el SDK v1, hasta 2025-11-25) y planificar la migración a MCP 2026-07-28.

El análisis completo, con el código citado línea a línea, los diagramas de la arquitectura y las salidas de nuestras pruebas, está en DesarrolloMCP: Servidor MCP local, analizamos mcp-supermercados-cl.

Si estás aprendiendo MCP en español, el curso de DesarrolloMCP empieza gratis, actualizado a la especificación 2026-07-28.

Top comments (0)