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:
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:
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:
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:
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:
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:
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:
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:
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:
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: