Saltar a contenido

Tools de escritura

Alcance write (o admin) y capability local/mcp:write. La escritura debe estar activada y la tool habilitada; si no, las tools de escritura no se listan. Consulta Activar la escritura. Cada tool comprueba además el permiso de Moodle indicado.

create_course

Crea un curso en blanco o, si se indica templateCourseId, encola una copia en segundo plano. La copia devuelve al momento taskId y status: pending; consulta get_task_status. El cron debe estar en marcha.

Parámetro Tipo Obligatorio Por defecto Descripción
fullName string sí — Nombre completo (máx. 254).
shortName string sí — Nombre corto único (máx. 255).
categoryId integer no 1 Id de categoría.
summary string no "" Resumen en HTML.
format string no topics Formato, p. ej. topics, weeks.
visible boolean no true Visible para estudiantes.
numSections integer no 1 Secciones de un curso en blanco (0–52). Se ignora en una copia.
startDate integer no — Inicio (timestamp Unix).
endDate integer no — Fin (timestamp Unix); 0 = sin fin.
templateCourseId integer no — Curso que se copia. Se copian las actividades.
includeUserData boolean no false Copia matrículas y datos de usuario. Requiere moodle/backup:userinfo.
dryRun boolean no false Solo comprueba permisos y nombres.

Devuelve: En blanco: courseId, shortName, fullName, url. Copia: taskId, status (pending), queued. Con dryRun: dryRun: true.

Permisos de Moodle: moodle/course:create en la categoría. Una copia requiere además moodle/backup:backupcourse y moodle/backup:backuptargetimport.

Ejemplo de argumentos:

{"fullName": "Statistics 102", "shortName": "STAT102", "templateCourseId": 42}

build_course

Monta un curso a partir de un plan JSON con secciones, actividades y preguntas, como tarea en segundo plano. Devuelve al momento taskId y status: pending; consulta get_task_status. Si falla después de crear un curso nuevo, ese curso se borra y la tarea queda failed. Con courseId, un fallo borra solo las actividades que creó esta construcción.

Parámetro Tipo Obligatorio Por defecto Descripción
dryRun boolean no false Valida y devuelve el plan sin crear nada.
courseId integer no — Construye dentro de este curso existente en vez de crear uno.
fullName string en curso nuevo — Nombre completo (máx. 254).
shortName string en curso nuevo — Nombre corto (máx. 255).
categoryId integer no 1 Categoría.
summary string no "" Resumen en HTML.
format string no topics Formato del curso.
visible boolean no true Visible.
sections array no [] Hasta 52 secciones {number, name, summary, activities[]}; hasta 40 actividades en cada una. Una actividad admite los campos de add_activity (salvo fileBase64 y gradingDueDate) y, en cuestionarios, category, questions[] (como en add_quiz_questions), gift o xml.

Devuelve: dryRun, taskId, status, course, sections[] (el plan en una simulación).

Permisos de Moodle: Curso nuevo: moodle/course:create en la categoría. Curso existente (courseId): moodle/course:manageactivities. Más los permisos de cada actividad y pregunta que crea.

Ejemplo de argumentos:

{"fullName": "Field biology", "shortName": "BIOFIELD", "sections": [{"number": 1, "name": "Week 1", "activities": [{"type": "page", "name": "Welcome", "content": "<p>Start here.</p>"}]}]}

add_section

Añade una sección al final de un curso, con nombre y resumen opcionales.

Parámetro Tipo Obligatorio Por defecto Descripción
courseId integer sí — Id del curso de Moodle.
name string no — Nombre de la sección (máx. 255).
summary string no "" Resumen en HTML.

Devuelve: courseId, section, name.

Permisos de Moodle: moodle/course:update.

Ejemplo de argumentos:

{"courseId": 42, "name": "Week 5"}

add_activity

Añade una page, url, label, resource (fichero), assign, quiz o forum a una sección. Las tareas admiten fechas, nota máxima, tipos de entrega y una rúbrica básica.

Parámetro Tipo Obligatorio Por defecto Descripción
courseId integer sí — Id del curso de Moodle.
section integer sí — Número de sección (0 = general).
type string sí — page, url, label, resource, assign, quiz, forum.
name string no* — Nombre (máx. 255). Puede omitirse en una etiqueta.
intro string no "" HTML de descripción. Cuerpo de una etiqueta.
content string no — Contenido HTML de una página (también cuerpo de etiqueta si intro está vacío).
externalUrl string sí en url — URL de una actividad url (máx. 1333).
dueDate integer no — Fecha de entrega de una tarea (timestamp Unix).
timeOpen integer no — Apertura del cuestionario (timestamp Unix).
timeClose integer no — Cierre del cuestionario (timestamp Unix).
grade integer no — Nota máxima, tarea o cuestionario (0–100000).
forumType string no general general, eachuser, single, qanda, blog, news.
visible boolean no true Si la actividad es visible.
allowSubmissionsFromDate integer no — Apertura de la tarea (timestamp Unix).
cutoffDate integer no — Fecha límite de la tarea.
gradingDueDate integer no — Fecha para terminar de calificar.
submissionTypes array no — Tipos de entrega: file y/o onlinetext.
rubric array no — Hasta 20 criterios, cada uno {description, levels[]} con al menos dos niveles {definition, score} (máx. 10).
fileName string en resource — Nombre del fichero de un resource.
fileUrl string uno de los dos (resource) — URL http(s) pública del fichero.
fileBase64 string uno de los dos (resource) — Contenido en base64, máximo 2 MiB decodificado.
timeLimit integer no — Límite de tiempo del cuestionario en segundos.
attempts integer no — Intentos (0–10, 0 = ilimitados).
gradeMethod string no — highest, average, first, last.
navMethod string no — free o sequential.
questionsPerPage integer no — 0–50; 0 = todas en una página.
shuffleAnswers boolean no — Barajar respuestas.
review string no — immediately, later, afterclose, never.

Devuelve: cmid, instanceId, courseId, type, name, section, visible, url.

Permisos de Moodle: moodle/course:manageactivities y mod/<tipo>:addinstance.

Ejemplo de argumentos:

{"courseId": 42, "section": 1, "type": "assign", "name": "Essay", "dueDate": 1798761600, "submissionTypes": ["onlinetext"], "rubric": [{"description": "Argument", "levels": [{"definition": "Weak", "score": 0}, {"definition": "Strong", "score": 5}]}]}

create_quiz

Crea un cuestionario en una sección.

Parámetro Tipo Obligatorio Por defecto Descripción
courseId integer sí — Id del curso de Moodle.
section integer sí — Número de sección.
name string sí — Nombre (1–255).
intro string no "" Descripción en HTML.
timeOpen integer no — Apertura.
timeClose integer no — Cierre.
timeLimit integer no — Segundos; 0 = sin límite.
attempts integer no — 0–10; 0 = ilimitados.
grade integer no 10 Nota máxima (0–100000).
gradeMethod string no — highest, average, first, last.
navMethod string no — free, sequential.
questionsPerPage integer no — 0–50.
shuffleAnswers boolean no — Barajar respuestas.
review string no — immediately, later, afterclose, never.
visible boolean no — Visible.

Devuelve: Resumen de la actividad: cmid, courseId, name, url (y el resto de campos de add_activity).

Permisos de Moodle: moodle/course:manageactivities y mod/quiz:addinstance.

Ejemplo de argumentos:

{"courseId": 42, "section": 2, "name": "Unit 2 check", "attempts": 2, "timeLimit": 1200}

add_quiz_questions

Crea preguntas en el banco del curso y las añade a un cuestionario (hasta 50 por llamada). En Moodle 4.5 el banco es el contexto del curso; en 5.0+ es la actividad mod_qbank, que se crea si no existe.

Parámetro Tipo Obligatorio Por defecto Descripción
cmid integer sí — Id del módulo del cuestionario.
category string no — Categoría del banco; omítela para la predeterminada.
questions array sí — Cada pregunta: type (multichoice, truefalse, shortanswer, numerical, match, essay), name, text, mark opcional; además correct (truefalse), choices[] {text, correct} (multichoice, una o varias correctas), answers[] y caseSensitive (shortanswer), answer y tolerance (numerical), pairs[] {question, answer} (match).

Devuelve: cmid, categoryId, questions[].

Permisos de Moodle: mod/quiz:manage y moodle/question:add (moodle/question:managecategory para crear una categoría).

Ejemplo de argumentos:

{"cmid": 315, "questions": [{"type": "truefalse", "name": "Sun", "text": "<p>The Sun is a star.</p>", "correct": true, "mark": 1}]}

import_questions

Importa GIFT o Moodle XML a una categoría del banco de preguntas con los importadores de Moodle y, si quieres, las añade a un cuestionario.

Parámetro Tipo Obligatorio Por defecto Descripción
courseId integer sí — Id del curso de Moodle.
format string sí — gift o xml.
content string sí — El texto GIFT o XML.
category string no — Nombre de la categoría (máx. 254).
cmid integer no — Cuestionario al que añadir las preguntas.

Devuelve: courseId, categoryId, questionIds[], added.

Permisos de Moodle: moodle/question:add (mod/quiz:manage para añadirlas a un cuestionario).

Ejemplo de argumentos:

{"courseId": 42, "format": "gift", "content": "::Capital::Where is Paris?{=France ~Spain}"}

update_activity

Modifica una page, url, label, assign, quiz o forum existente. Solo cambian los campos que envías.

Parámetro Tipo Obligatorio Por defecto Descripción
cmid integer sí — Id del módulo de curso.
name string no — Nombre nuevo (1–255).
intro string no — HTML de descripción. Cuerpo de una etiqueta.
content string no — Contenido HTML de una página (también cuerpo de etiqueta si intro está vacío).
externalUrl string no — URL de una actividad url (máx. 1333).
dueDate integer no — Fecha de entrega de una tarea (timestamp Unix).
timeOpen integer no — Apertura del cuestionario (timestamp Unix).
timeClose integer no — Cierre del cuestionario (timestamp Unix).
grade integer no — Nota máxima, tarea o cuestionario (0–100000).
forumType string no — general, eachuser, single, qanda, blog, news.
visible boolean no — Si la actividad es visible.

Devuelve: cmid, instanceId, courseId, type, name, section, visible, url.

Permisos de Moodle: La comprobación normal de Moodle para editar actividades (moodle/course:manageactivities); moodle/course:activityvisibility para cambiar visible.

Ejemplo de argumentos:

{"cmid": 314, "name": "Q&A"}

enrol_user

Matricula a un usuario con matriculación manual. Indica userId o username.

Parámetro Tipo Obligatorio Por defecto Descripción
courseId integer sí — Id del curso de Moodle.
userId integer uno de los dos — Id de usuario.
username string uno de los dos — Nombre de usuario, si no se da userId.
role string no student Nombre corto del rol, p. ej. student, teacher, editingteacher.

Devuelve: courseId, userId, role, enrolled.

Permisos de Moodle: enrol/manual:enrol. El curso necesita una instancia de matriculación manual.

Ejemplo de argumentos:

{"courseId": 42, "username": "ada", "role": "student"}

create_group

Crea un grupo en un curso.

Parámetro Tipo Obligatorio Por defecto Descripción
courseId integer sí — Id del curso de Moodle.
name string sí — Nombre del grupo (máx. 254).
description string no "" Descripción en HTML.

Devuelve: groupId, courseId, name.

Permisos de Moodle: moodle/course:managegroups.

Ejemplo de argumentos:

{"courseId": 42, "name": "Team A"}

set_visibility

Muestra u oculta un curso (courseId), una sección (courseId + section) o una actividad (cmid).

Parámetro Tipo Obligatorio Por defecto Descripción
target string sí — course, section o activity.
visible boolean sí — true = mostrar, false = ocultar.
courseId integer con course/section — Id del curso.
section integer con section — Número de sección.
cmid integer con activity — Id del módulo de curso.

Devuelve: target, visible.

Permisos de Moodle: moodle/course:visibility, moodle/course:sectionvisibility o moodle/course:activityvisibility, según el objetivo.

Ejemplo de argumentos:

{"target": "section", "courseId": 42, "section": 5, "visible": false}

delete_activity

Borra una actividad. Es una simulación salvo dryRun: false y confirm: true.

Parámetro Tipo Obligatorio Por defecto Descripción
cmid integer sí — Id del módulo de curso.
dryRun boolean no true Si es true, solo informa de lo que se borraría.
confirm boolean no false Debe ser true junto con dryRun: false para borrar.

Devuelve: dryRun, deleted, target (la actividad).

Permisos de Moodle: moodle/course:manageactivities.

Ejemplo de argumentos:

{"cmid": 314, "dryRun": false, "confirm": true}

delete_section

Borra una sección y sus actividades. La sección 0 no se puede borrar. Es una simulación salvo confirmación.

Parámetro Tipo Obligatorio Por defecto Descripción
courseId integer sí — Id del curso de Moodle.
section integer sí — Número de sección (no 0).
dryRun boolean no true Si es true, solo informa de lo que se borraría.
confirm boolean no false Debe ser true junto con dryRun: false para borrar.

Devuelve: dryRun, deleted, target (la sección).

Permisos de Moodle: moodle/course:update.

Ejemplo de argumentos:

{"courseId": 42, "section": 6}