MCP server para Presto (RIB) — automatizacion COM local (Presto.App.25) + BC3 (FIEBDC-3). Expone Presto a un agente por dos vias complementarias: COM para control en vivo de la obra abierta, y BC3 para leer/analizar ficheros de presupuesto sin abrir Presto.
Server has 14 tools with explicit schemas and descriptions in Spanish. All tools are registered via @mcp.tool with input schemas visible. Naming follows verb_noun pattern (presto_*, bc3_*). Descriptions are present but vary in quality (50-250 chars). Parameters have types and descriptions. However, output schemas are not formally documented, responses are inferred from code (dict returns). Error handling returns structured dicts but lacks recovery guidance. No parameter validation constraints (enums, ranges) visible. Security: no secrets in params (good), but no permission gates or audit logging. Composition is reasonable, tools are single-purpose, but some generic tools (presto_read_records) accept many optional params that could be split.
Exporta una obra a un fichero BC3 valido (registros V/C/T/D). Util para guardar cambios hechos por las tools COM en formato de intercambio.
Lee un fichero BC3 (FIEBDC-3) y devuelve la estructura de la obra: conceptos, descomposiciones, mediciones. No requiere Presto ni Windows.
Devuelve un resumen estadistico de un fichero BC3: numero de conceptos, capitulos, partidas con descomposicion, version FIEBDC y programa emisor.
Cierra la obra actualmente abierta en Presto.
Autodiagnostico completo: comprueba Presto, la obra, el acceso a tablas y campos, y devuelve un informe detallado. Util para depurar problemas de conexion o configuracion.
Ejecuta una opcion interna de Presto (DLG_*) con parametros en JSON. Da acceso a operaciones masivas del programa que no tienen tool propia (multiplicar precios, reducir niveles, generar objetivo, exportar/importar formatos, etc.). `code` = codigo numerico del dialogo (p. ej. 9901 = reducir niveles). `params_json` = objeto JSON con la mascara y parametros del dialogo. Consulta los codigos en la documentacion de la API de Presto.
Output schemas not formally documented. Tools return dicts with inferred structure (e.g., {'ok': True, 'error': str}). LLMs cannot plan downstream calls without knowing response field names and types.
Error handling returns bare error strings without recovery guidance. E.g., 'No se encontro ningun registro' gives no hint to retry with different params or call a discovery tool first.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
Calcula una expresion de Presto sobre la obra abierta. Usa el motor de expresiones del propio programa (funciones EvalStr/EvalNum de su API): campos, funciones y operadores de Presto. Ejemplos: "Conceptos.PresTot", "len(Conceptos.Texto)". `as_number`: True para resultado numerico, False para texto.
Devuelve los datos basicos de un concepto: codigo, unidad, resumen y precios.
Lee un campo concreto del registro cuyo codigo es `code`. Ejemplo: leer el resumen de la partida "E04CM010" -> code="E04CM010", field="Conceptos.Resumen".
Abre una obra de Presto (.Presto) en la instancia en ejecucion. `path`: ruta absoluta al archivo .Presto en este equipo.
Lee registros de CUALQUIER tabla de Presto filtrando por un campo. `table`: tabla (p. ej. "Conceptos", "Mediciones", "Facturas"); se normaliza a mayuscula inicial automaticamente. `fields`: campos completos a devolver, p. ej. ["Conceptos.Código", "Conceptos.Resumen"]. `mask`: comodin sobre `match_field` (p. ej. "E04*", "*hormigon*", "*"). `match_field`: campo del filtro. Si es el campo CLAVE de la tabla (p. ej. Conceptos.Código) el filtro lo hace Presto (rapido); con cualquier otro campo se recorre la tabla y se filtra aqui (mas lento pero valido). Devuelve hasta `limit` filas como lista de objetos {campo: valor}.
Busca conceptos por su resumen (por defecto) o por su codigo. `by`: "resumen" o "codigo". `text` admite comodines (se rodea de * si no los lleva). Por codigo el filtro lo hace Presto (rapido, es el campo clave). Por resumen se recorre la tabla de conceptos y se filtra aqui (la clave de SetElement solo admite campos clave — un campo normal daria "Clave incorrecta").
Escribe un campo del registro cuyo codigo es `code` (transaccional). La operacion se envuelve en BeginRedo/EndRedo (deshacible en Presto) y guarda con UpdateRecord. Modifica la obra: usar con criterio. Nota: los campos codigo (p. ej. "Conceptos.Código") no se cambian con esta tool — la API de Presto exige Rename para ellos (se hace automaticamente).
Comprueba la conexion con Presto por COM y devuelve el ProgID activo. Usala primero para confirmar que Presto esta instalado y en ejecucion en este equipo antes de operar sobre la obra.
presto_read_records and presto_execute_option are overly generic. presto_read_records accepts 5 optional params (mask, match_field, limit) with complex interdependencies not documented. presto_execute_option requires opaque numeric dialog codes and JSON params, no enum or validation.
No input validation constraints visible. Parameters like 'limit' (default 200) lack min/max bounds. 'encoding' in bc3_export accepts free-form string instead of enum ['cp1252', 'utf-8']. LLMs can pass invalid values.
Descriptions in Spanish may limit LLM understanding if model is primarily English-trained. Tool descriptions and param docs should be in English for maximum compatibility with multilingual LLMs.