MCP Server para conectar IAs con las plataformas academicas de la UTP Peru
Server has 12 tools with basic descriptions and parameter schemas, but significant gaps in quality. All tools have descriptions (good), but many are generic or lack actionable detail. Parameter schemas are present but inconsistently documented. No tool annotations (readOnlyHint/destructiveHint). Error handling is minimal, most tools return raw API responses without recovery guidance. Output schemas are not formally documented. The server follows a consistent naming pattern (verb_noun) but descriptions often lack WHEN/WHY context that LLMs need for tool selection.
Eliminar un comentario o respuesta tuya en un foro.
Obtener el contenido completo de un curso (unidades, temas, actividades).
Obtener la lista de foros disponibles en un curso específico. Útil para encontrar el forum_id necesario para leer o responder.
Obtener los materiales (PDFs, PPTs, links) y el silabo de un curso. Extrae solo los archivos y enlaces del contenido del curso para facil acceso.
Obtener resumen completo del ciclo: cursos, horarios, notas parciales y evaluaciones. Incluye para cada curso: - Nombre, docente, creditos, horas semanales - Modalidad (P=Presencial, VT=Virtual) - Horario semanal (dia, hora inicio/fin) - Evaluaciones con notas (PC1, PC2, PA, EXFN, etc.) - Promedio del curso
No tool annotations (readOnlyHint/destructiveHint/idempotentHint). LLMs cannot distinguish safe reads from destructive writes without explicit hints. reply_to_forum and delete_forum_reply are state-changing but unmarked.
Output schemas not documented. Tools return formatted JSON but LLMs cannot plan downstream calls without knowing field names and types. E.g., get_courses returns sectionId/courseId but no schema declares these fields.
Descriptions lack WHEN/WHY context. E.g., 'Obtener el contenido completo de un curso' does not explain when to call this vs get_course_materials or get_course_forums. LLMs struggle to select the right tool.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 68 | 2026-07-28+ | v2 |
Obtener los cursos activos del ciclo actual con informacion del docente. Datos del LMS (class.utp.edu.pe) con sectionId para consultar contenido y tareas.
Obtener el contenido de un foro, incluyendo el tema principal y los hilos/respuestas de los compañeros.
Obtener record historico de notas. Por defecto solo el ciclo academico mas reciente. Los bloques se agrupan por ciclo academico (semestre). Cada bloque puede contener cursos de diferentes sub-ciclos del alumno (cursos reprobados, convalidaciones, etc.).
Obtener las tareas pendientes del ciclo actual con fechas de entrega.
Obtener todos los periodos academicos (ciclos) disponibles con ID y nombre. Ejemplo: [{"id": "2262", "name": "2026 - Ciclo 1 Marzo"}, ...] Use the period ID in other tools like get_course_summary or get_schedule.
Obtener el horario semanal completo con clases por dia y hora. Muestra las clases de la semana actual con nombre del curso, hora inicio/fin, y modalidad (Presencial/Virtual).
Publicar una respuesta o comentario en un foro.
Error handling is minimal. Tools return raw API responses or generic fmt() output. No recovery guidance (e.g., 'Period not found. Call get_periods() to see valid IDs'). Only get_grade_record includes a recovery hint.
Parameter descriptions are minimal. E.g., course_id and section_id in get_course_content lack format/constraint info. No guidance on how to obtain these IDs or what happens if they are invalid.