get_quiz_grade
Retrieve a student's quiz grade by providing their student ID and the quiz ID to access assessment results from Moodle.
Instructions
Obtiene la calificación de un estudiante en un quiz específico
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| studentId | Yes | ID del estudiante | |
| quizId | Yes | ID del quiz |
Implementation Reference
- src/index.ts:584-636 (handler)The core handler function for the 'get_quiz_grade' tool. Validates input (studentId, quizId), calls Moodle API 'mod_quiz_get_user_best_grade', formats response with hasGrade and grade or 'No calificado', handles errors.private async getQuizGrade(args: any) { if (!args.studentId || !args.quizId) { throw new McpError( ErrorCode.InvalidParams, 'Student ID and Quiz ID are required' ); } console.error(`[API] Requesting quiz grade for student ${args.studentId} on quiz ${args.quizId}`); try { const response = await this.axiosInstance.get('', { params: { wsfunction: 'mod_quiz_get_user_best_grade', quizid: args.quizId, userid: args.studentId, }, }); // Procesamos la respuesta const result = { quizId: args.quizId, studentId: args.studentId, hasGrade: response.data.hasgrade, grade: response.data.hasgrade ? response.data.grade : 'No calificado', }; return { content: [ { type: 'text', text: JSON.stringify(result, null, 2), }, ], }; } catch (error) { console.error('[Error]', error); if (axios.isAxiosError(error)) { return { content: [ { type: 'text', text: `Error al obtener la calificación del quiz: ${ error.response?.data?.message || error.message }`, }, ], isError: true, }; } throw error; } }
- src/index.ts:217-234 (registration)Tool registration in ListToolsRequestHandler, defines name, description, and inputSchema for get_quiz_grade requiring studentId (number) and quizId (number).{ name: 'get_quiz_grade', description: 'Obtiene la calificación de un estudiante en un quiz específico', inputSchema: { type: 'object', properties: { studentId: { type: 'number', description: 'ID del estudiante', }, quizId: { type: 'number', description: 'ID del quiz', }, }, required: ['studentId', 'quizId'], }, },
- src/index.ts:255-256 (registration)Dispatch case in CallToolRequestHandler switch that routes 'get_quiz_grade' calls to the getQuizGrade handler method.case 'get_quiz_grade': return await this.getQuizGrade(request.params.arguments);
- src/index.ts:220-233 (schema)Input schema definition for the get_quiz_grade tool, specifying object with required number properties studentId and quizId.inputSchema: { type: 'object', properties: { studentId: { type: 'number', description: 'ID del estudiante', }, quizId: { type: 'number', description: 'ID del quiz', }, }, required: ['studentId', 'quizId'], },