Skip to main content
Glama

get_submissions

Retrieve student assignment submissions from Moodle courses, optionally filtered by student or specific assignment.

Instructions

Obtiene las entregas de tareas en el curso configurado

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
studentIdNoID opcional del estudiante. Si no se proporciona, se devolverán entregas de todos los estudiantes
assignmentIdNoID opcional de la tarea. Si no se proporciona, se devolverán todas las entregas

Implementation Reference

  • The primary handler function for the 'get_submissions' tool. It retrieves assignments, fetches submissions and grades from Moodle API, filters by optional studentId and assignmentId parameters, processes the data, and returns formatted JSON.
    private async getSubmissions(args: any) { const studentId = args.studentId; const assignmentId = args.assignmentId; console.error(`[API] Requesting submissions${studentId ? ` for student ${studentId}` : ''}`); // Primero obtenemos todas las tareas const assignmentsResponse = await this.axiosInstance.get('', { params: { wsfunction: 'mod_assign_get_assignments', courseids: [MOODLE_COURSE_ID], }, }); const assignments = assignmentsResponse.data.courses[0]?.assignments || []; // Si se especificó un ID de tarea, filtramos solo esa tarea const targetAssignments = assignmentId ? assignments.filter((a: any) => a.id === assignmentId) : assignments; if (targetAssignments.length === 0) { return { content: [ { type: 'text', text: 'No se encontraron tareas para el criterio especificado.', }, ], }; } // Para cada tarea, obtenemos todas las entregas const submissionsPromises = targetAssignments.map(async (assignment: any) => { const submissionsResponse = await this.axiosInstance.get('', { params: { wsfunction: 'mod_assign_get_submissions', assignmentids: [assignment.id], }, }); const submissions = submissionsResponse.data.assignments[0]?.submissions || []; // Obtenemos las calificaciones para esta tarea const gradesResponse = await this.axiosInstance.get('', { params: { wsfunction: 'mod_assign_get_grades', assignmentids: [assignment.id], }, }); const grades = gradesResponse.data.assignments[0]?.grades || []; // Si se especificó un ID de estudiante, filtramos solo sus entregas const targetSubmissions = studentId ? submissions.filter((s: any) => s.userid === studentId) : submissions; // Procesamos cada entrega const processedSubmissions = targetSubmissions.map((submission: any) => { const studentGrade = grades.find((g: any) => g.userid === submission.userid); return { userid: submission.userid, status: submission.status, timemodified: new Date(submission.timemodified * 1000).toISOString(), grade: studentGrade ? studentGrade.grade : 'No calificado', }; }); return { assignment: assignment.name, assignmentId: assignment.id, submissions: processedSubmissions.length > 0 ? processedSubmissions : 'No hay entregas', }; }); const results = await Promise.all(submissionsPromises); return { content: [ { type: 'text', text: JSON.stringify(results, null, 2), }, ], }; }
  • Input schema defining optional parameters studentId and assignmentId for filtering submissions.
    inputSchema: { type: 'object', properties: { studentId: { type: 'number', description: 'ID opcional del estudiante. Si no se proporciona, se devolverán entregas de todos los estudiantes', }, assignmentId: { type: 'number', description: 'ID opcional de la tarea. Si no se proporciona, se devolverán todas las entregas', }, }, required: [], },
  • src/index.ts:156-172 (registration)
    Tool registration in the ListTools response, including name, description, and input schema.
    name: 'get_submissions', description: 'Obtiene las entregas de tareas en el curso configurado', inputSchema: { type: 'object', properties: { studentId: { type: 'number', description: 'ID opcional del estudiante. Si no se proporciona, se devolverán entregas de todos los estudiantes', }, assignmentId: { type: 'number', description: 'ID opcional de la tarea. Si no se proporciona, se devolverán todas las entregas', }, }, required: [], }, },
  • src/index.ts:249-250 (registration)
    Switch case in CallToolRequestHandler that routes calls to the getSubmissions handler.
    case 'get_submissions': return await this.getSubmissions(request.params.arguments);

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/cfsandoval/Mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server