Un diario horario para e-readers que acabó convertido en servidor MCP
Cada hora, una Lambda recoge unos 120 elementos de casi 100 fuentes RSS, un modelo pequeño hace de editor y el resultado se maqueta en una página de 480x800 a un bit para tinta electrónica.

Cada hora, una función Lambda recoge unos 120 elementos de cerca de un centenar de fuentes RSS, se los pasa a un modelo pequeño para que ejerza de editor y compone el resultado en una página de 480x800 píxeles a un bit para el lector de tinta electrónica Xteink X4 que su autor tiene en el escritorio. El mismo pipeline sirve ahora un PDF multipágina para reMarkable y Kindle, un plugin para paneles TRMNL y un servidor MCP al que pueden llamar agentes. El servicio está en marcha y se puede consultar.
El proceso
La recolección tira de feedparser sobre unos 100 feeds (IA, internacional, Estados Unidos, finanzas, deportes, fútbol y blogs de laboratorios). Cada elemento guarda id, fuente, título, enlace, enlace canónico —con los parámetros utm y similares ya limpios—, fecha, un resumen de 320 caracteres y un peso por fuente.
La deduplicación empezó mal. La primera regla, comparar título y resumen con un Jaccard de shingles de palabras, dio cero fusiones sobre 480 candidatos reales y solo cinco pares falsos incluso bajando el umbral a 0,2: los medios reescriben el cable y los resúmenes RSS comparten plantilla, no el texto de la noticia. Lo que sí funciona es el solapamiento de entidades en los titulares. Palabras capitalizadas contiguas forman una entidad, la puntuación y los guiones cierran la frase, y dos titulares de medios distintos se fusionan con tres entidades compartidas o dos que no sean genéricas. Sobre los mismos 429 elementos salen nueve fusiones, todas la misma historia al revisarlas. El registro superviviente lista los demás medios, y los descartados se publican igualmente con duplicate_of, la regla aplicada y una puntuación, para quien necesite auditar procedencia. El conjunto horario completo de candidatos está abierto y sin clave en la API del servicio.
Para el ranking, Claude Haiku 4.5 en Bedrock recibe la lista de candidatos y un rol asignado, y tiene que llamar a una herramienta publish_briefing con un tema principal, varias historias, una sección de investigación, resúmenes de una frase, un pasaje de detalle de tres a cinco frases y una línea de por qué importa. El esquema de la herramienta hace de barandilla: los hechos tienen que salir del texto de los candidatos. Si la llamada falla, entra un clasificador alternativo sin modelo, basado en peso, recencia y un tope de dos por medio, de modo que el lector nunca se quede en blanco.
Pillow dibuja cabecera, portada, historias numeradas y una franja de investigación en 480x800, aplica tramado a un bit y escribe BMP que el firmware del lector pagina. Hay además una variante de 800x480 para paneles tipo TRMNL y un PDF. La publicación va a S3 con CloudFront y un manifiesto que solo cambia de marca cuando cambian las elecciones del editor, así el dispositivo no vuelve a descargar páginas idénticas.
Lo que se ha encontrado
Dos cosas. La primera: el valor está en la selección, no en el dibujado. Lo que provoca reacción es una portada con titular y motivo sobre cien fuentes con duplicados ya fusionados, y por eso lo expuso como API y servidor MCP en vez de dejarlo en juguete para un aparato. La segunda es menos halagüeña. Listar el servidor en el registro oficial de MCP, Glama, Smithery y algunas listas produjo tráfico constante en un día, pero de escáneres, auditores y comprobaciones de salud: trece llamadas MCP, cero humanos. Quien construya para agentes debe contar con que la primera oleada son bots evaluándolo. Los usuarios de tinta electrónica, en cambio, quieren archivos y no APIs, y pidieron el PDF en su biblioteca cada mañana.
Las portadas y el JSON son gratuitos, con 25 llamadas de API o MCP por IP y día. Hay nivel de pago de 9 dólares al mes, pago por llamada con x402 en USDC sobre Base y un plan de equipo de 49 dólares al mes sobre feeds propios. Queda abierta la pregunta que lanza el propio autor: si una herramienta de noticias sirve a un agente, ¿debería devolver el JSON completo, un resumen corto o la página ya maquetada?

