provide_feedback
Submit assignment feedback and grades for students in Moodle to support learning progress and assessment.
Instructions
Proporciona feedback sobre una tarea entregada por un estudiante
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| studentId | Yes | ID del estudiante | |
| assignmentId | Yes | ID de la tarea | |
| grade | No | Calificación numérica a asignar | |
| feedback | Yes | Texto del feedback a proporcionar |
Implementation Reference
- src/index.ts:446-483 (handler)The handler function for the 'provide_feedback' tool. Validates input parameters, calls the Moodle 'mod_assign_save_grade' API to assign grade and feedback, and returns a success message.private async provideFeedback(args: any) { if (!args.studentId || !args.assignmentId || !args.feedback) { throw new McpError( ErrorCode.InvalidParams, 'Student ID, Assignment ID, and feedback are required' ); } console.error(`[API] Providing feedback for student ${args.studentId} on assignment ${args.assignmentId}`); const response = await this.axiosInstance.get('', { params: { wsfunction: 'mod_assign_save_grade', assignmentid: args.assignmentId, userid: args.studentId, grade: args.grade || 0, attemptnumber: -1, // Último intento addattempt: 0, workflowstate: 'released', applytoall: 0, plugindata: { assignfeedbackcomments_editor: { text: args.feedback, format: 1, // Formato HTML }, }, }, }); return { content: [ { type: 'text', text: `Feedback proporcionado correctamente para el estudiante ${args.studentId} en la tarea ${args.assignmentId}.`, }, ], }; }
- src/index.ts:176-197 (schema)Input schema defining the parameters for the 'provide_feedback' tool: studentId, assignmentId (required), grade (optional), feedback (required).inputSchema: { type: 'object', properties: { studentId: { type: 'number', description: 'ID del estudiante', }, assignmentId: { type: 'number', description: 'ID de la tarea', }, grade: { type: 'number', description: 'Calificación numérica a asignar', }, feedback: { type: 'string', description: 'Texto del feedback a proporcionar', }, }, required: ['studentId', 'assignmentId', 'feedback'], },
- src/index.ts:173-198 (registration)Tool registration in the ListTools response, including name, description, and input schema.{ name: 'provide_feedback', description: 'Proporciona feedback sobre una tarea entregada por un estudiante', inputSchema: { type: 'object', properties: { studentId: { type: 'number', description: 'ID del estudiante', }, assignmentId: { type: 'number', description: 'ID de la tarea', }, grade: { type: 'number', description: 'Calificación numérica a asignar', }, feedback: { type: 'string', description: 'Texto del feedback a proporcionar', }, }, required: ['studentId', 'assignmentId', 'feedback'], }, },
- src/index.ts:251-252 (handler)Dispatcher case in CallToolRequestHandler that routes to the provideFeedback method.case 'provide_feedback': return await this.provideFeedback(request.params.arguments);