Open Economics unifica los datos económicos oficiales de Brasil tras una capa semántica
El proyecto, open source, expone por REST y por un servidor MCP remoto las series de BCB, IBGE, Tesouro y otras siete fuentes oficiales brasileñas.

Felipe Gambetta de Souza ha publicado Open Economics, una capa de código abierto que unifica el acceso a los datos económicos oficiales de Brasil y los sirve por REST y por un servidor MCP remoto. El proyecto integra fuentes del Banco Central (BCB), IBGE, Tesouro, SICONFI, Comex Stat, Novo Caged, ANP, EPE y CVM. El servidor MCP expone 19 herramientas y no pide clave de API ni registro: todo es de solo lectura.
El autor arrancó pensando que el trabajo era meter todas esas fuentes detrás de una sola API. Al construirlo se dio cuenta de que la parte difícil no era normalizar formatos, sino conservar el significado económico de cada dato.
El número correcto puede ser la respuesta equivocada
La pregunta que usa como ejemplo es sencilla: ¿cuál es la tasa Selic actual? Hay varias series oficiales legítimas que responden a eso. La meta fijada por el Copom, la Selic efectiva, la acumulada mensual, las variantes anualizadas. Todas son datos oficiales reales. Devolver la que no toca produce una respuesta incorrecta aunque el número sea impecable.
Por eso separó dos problemas que suelen ir juntos. Primero la resolución semántica: averiguar qué concepto económico está pidiendo el usuario. "Tasa Selic objetivo" resuelve a selic-target. Después la disponibilidad: comprobar qué conjunto de datos oficial representa ese concepto y si el sistema puede consultarlo. Ahí la respuesta es bcb-sgs:432, la serie del Banco Central definida por el Copom. Si el concepto no está soportado, el sistema lo dice. No devuelve una serie que se le parece solo porque comparta palabras clave.
Con varias fuentes detrás de la misma API aparece el otro riesgo: perder de vista de dónde salió cada cifra. La procedencia forma parte del modelo de datos y viaja con el resultado: institución oficial, identidad del conjunto, URL de origen, unidad, frecuencia, fecha de la observación y transformaciones aplicadas.
El fallo que no era de protocolo
El servidor MCP funcionaba. El cliente descubría las herramientas y las llamadas tenían éxito. Aun así, un agente sobre Cline no lograba responder a la tasa Selic. El resultado completo llegaba en structuredContent, mientras que el contenido textual del protocolo apenas decía que se habían recuperado observaciones de bcb-sgs:432. La llamada era correcta, pero ese cliente no exponía la parte estructurada al modelo: el agente sabía que había datos y no podía verlos.
La solución no fue cargarse la salida estructurada, que sigue siendo el resultado canónico para una máquina. Añadió una representación textual acotada con valores, fechas, unidades, identidad del conjunto, institución, procedencia y URL oficial. Los resultados pequeños caben enteros; los grandes incluyen un número limitado de filas y avisan de que el resto está en structuredContent. Repetida la prueba con la instrucción de usar solo Open Economics, sin búsqueda web, curl ni llamadas directas al BCB, el agente resolvió la consulta, identificó la serie, inspeccionó los metadatos y respondió con el valor y la fecha.
El código está en el repositorio y hay una interfaz web para probar consultas sin escribir código. El servidor MCP está publicado en el registro oficial del protocolo.
La cobertura no es completa y el autor lo dice: prefiere que falte un conjunto de datos a sustituirlo por otro que no corresponde. Para quien monte agentes contra APIs, el episodio deja una lección concreta: cumplir el protocolo y ser interoperable de verdad no son lo mismo, y la diferencia se descubre en el cliente, no en el servidor.

