Notas · · 3 min de lectura
Un MCP no es una API
Le he montado un servidor MCP a Es la hora de la verdad. Exponer los datos fue lo fácil; lo difícil fue escribir las reglas para un lector que rellena huecos.
Cuando le preguntas a un asistente de IA qué votó tu diputado, te contesta. El problema es de dónde lo saca: de su memoria, que es de hace meses y mezcla legislaturas. Contesta con seguridad, y a veces con razón; lo que no puede es enseñarte la fuente, porque no la ha consultado.
Para eso existe MCP, el Model Context Protocol: un protocolo abierto con el que un asistente consulta herramientas externas en vez de rellenar el hueco. El asistente ve una lista de herramientas, decide cuál llamar, recibe los datos y responde con ellos. Es darle a alguien el teléfono del archivo en lugar de pedirle que recuerde.
El ejemplo
Le he montado uno a Es la hora de la verdad, mi proyecto personal sobre las votaciones del Congreso de los Diputados: qué votó cada grupo y cada diputado en el Pleno desde febrero de 2020, con el documento oficial de cada votación. Es gratuito, sin publicidad y sin recomendaciones de voto, y los datos salen de los datos abiertos del Congreso.
Exponer los datos fue lo fácil: ocho herramientas. Buscar votaciones por texto, ver una votación con el voto de cada grupo, ver la ficha de un diputado, saber qué votó un diputado en una votación concreta, ver una provincia, buscar diputados, y dos sobre las elecciones generales del 29 de noviembre: el calendario oficial y los programas electorales. Cada una es una consulta a una base de datos que ya existía.
Lo difícil
Lo difícil fue caer en que quien llama a esa API no es un programador, sino un modelo que quiere agradar. Un programador lee la documentación, hace la llamada y pinta lo que vuelve. Un modelo lee lo que vuelve y lo completa: redondea, interpreta, añade un motivo donde no lo había, y lo hace con la mejor intención. Si la respuesta de la herramienta tiene un hueco, el modelo lo rellena.
Así que el servidor lleva reglas, que viajan con cada respuesta, y las reglas son el producto:
Cada respuesta lleva la URL de la fuente. También las de error. Si el asistente afirma algo, tiene que poder enlazarlo. Una respuesta sin enlace es una respuesta que se puede adornar sin que nadie lo note.
«No votó» incluye ausencias y votos no emitidos, y no explica el motivo. Sin esa línea, el motivo lo pone el modelo, algo como «probablemente estaba de viaje». Nadie publicó eso.
Las cifras se usan tal cual, sin recalcularlas con otro criterio. Las de leyes aprobadas tienen cada una su regla y su fuente. Un modelo que suma «para ayudar» produce un dato que nadie publicó.
No se dice a quién beneficia una norma ni se recomienda voto. La web no lo hace, y el asistente tampoco puede hacerlo en su nombre. Si se lo piden, da los datos y remite al test de la web, que compara tus respuestas con lo que votó cada grupo y que tampoco es una recomendación.
Hay más. Los resultados se describen con la etiqueta de la web, aprobado, rechazado, convalidado o no convalidado, sin calificarlos. Los resúmenes están generados con IA a partir del texto oficial y van marcados como tales, así que para afirmar algo hay que enlazar la ficha y su fuente oficial. Y solo cubre el Pleno del Congreso: ni el Senado ni los parlamentos autonómicos. Cada regla cierra un hueco que un modelo rellenaría encantado.
Lo que me llevo
Un MCP no es una API. Es una API más las instrucciones para un lector que rellena huecos. Y escribir esas instrucciones es escribir lo que tu producto no va a hacer, cosa que conviene saber antes de abrir la puerta.
El trabajo que parecía técnico resultó ser editorial. Las ocho herramientas se escriben casi solas; las pocas líneas de reglas son las que definen qué es Es la hora de la verdad cuando lo cuenta otro.
La IA multiplica. El criterio decide.