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
| 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'], },