MCP server for read-only SQL queries to a PostgreSQL university monitor management system database via stdio
Server has 4 tools with basic descriptions but significant quality gaps. Tool names lack action verbs (consultar_base_datos, generate_excel_report are acceptable; verificar_conflicto_horario and busqueda_difusa_nombres are Spanish-language verbs). Descriptions exist but are verbose and lack LLM-optimized structure. Input schemas are present with type definitions but lack proper enum constraints and validation guidance. No output schemas documented. Error handling is minimal, most tools return raw JSON or generic messages without recovery guidance. Security is partially addressed (SQL injection check in consultar_base_datos) but incomplete (no permission gates, no audit logging). Tool composition is reasonable but lacks idempotency guarantees.
Realiza una búsqueda tolerante a errores ortográficos. Úsala cuando una consulta SQL por nombre devuelva vacío. 'entidad' debe ser "monitor" o "sala". 'termino_busqueda' es la palabra mal escrita.
Herramienta exclusiva de SOLO LECTURA para el Administrador del sistema. Ejecuta consultas SQL en la base de datos PostgreSQL de la universidad para extraer información sobre monitores, horas acumuladas, horarios y rendimiento. REGLAS ESTRICTAS Y LIMITANTES (CRÍTICO): 1. OPERACIONES PERMITIDAS: Estás restringido EXCLUSIVAMENTE a operaciones de consulta (`SELECT`). 2. OPERACIONES PROHIBIDAS: BAJO NINGUNA CIRCUNSTANCIA puedes generar, intentar o ejecutar sentencias que modifiquen los datos o la estructura de la base de datos. Esto incluye, pero no se limita a: `INSERT`, `UPDATE`, `DELETE`, `DROP`, `ALTER`, `TRUNCATE` o ejecución de procedimientos almacenados que alteren estado. 3. MANEJO DE INTENCIONES INSEGURAS: Si el administrador solicita agregar, borrar o modificar información, NO uses esta herramienta. En su lugar, responde directamente que tu rol y tus permisos están limitados estrictamente a la consulta de información. El resultado de esta herramienta será una representación en texto de las filas y columnas obtenidas, úsala para redactar una respuesta natural y precisa al administrador.
Recibe una lista de diccionarios (ej: resultados de un SELECT) Esta herramienta recibe una lista de datos y devuelve un enlace de descarga. Úsala cuando el usuario pida un 'informe', 'excel', 'archivo' o cuando los datos sean demasiados para leerlos cómodamente en el chat.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract structured data without knowing return field names and types.
Input parameters lack enum constraints and validation rules. 'dia_semana' accepts string but no enum (1-7 or day names); 'entidad' in busqueda_difusa_nombres should be enum ['monitor', 'sala']. Free-form strings invite hallucinated values.
Error handling is minimal and non-actionable. consultar_base_datos returns raw JSON errors; generate_excel_report returns generic config errors. No recovery guidance (e.g., 'Try search_users() first'). Errors do not classify as retryable vs fatal.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2026-07-28+ | v2 |
Verifica si una sala específica ya tiene una asignación que se cruce con el horario propuesto. Úsala SIEMPRE antes de confirmar al usuario que una sala puede ser asignada. Retorna un mensaje de confirmación si está libre, o los detalles del conflicto si está ocupada.
Tool descriptions are verbose (200+ chars) and lack LLM-optimized structure. Missing WHEN to use, prerequisites, and dependency hints. Descriptions should be 50-200 chars with clear intent.
No idempotency guarantees. generate_excel_report creates timestamped files on every call; verificar_conflicto_horario may return different results if data changes between retries. Agents cannot safely retry without side effects.