Moodle

39 tools. 28 can modify or destroy data without limits.

1 destructive tool with no built-in limits. Policy required.

Last updated:

28 can modify or destroy data
11 read-only
39 tools total

Community server · catalogue entry verified 03/07/2026

How to control Moodle ↓

What Moodle exposes to your agents

Read (11) Write / Execute (27) Destructive / Financial (1)
Critical Risk

The most dangerous Moodle tools

28 of Moodle's 39 tools can modify, destroy, or commit something on every call — and an agent calls them with no built-in limits.

How to control Moodle

PolicyLayer is an MCP gateway — it sits between your AI agents and Moodle, and nothing reaches the server without passing your rules. These are the rules we recommend:

Deny destructive operations
{
  "eliminar_evento": {
    "deny_if": [
      {
        "conditions": [],
        "on_deny": "Blocked by default. Requires approval."
      }
    ]
  }
}

Destructive tools should never be available to autonomous agents without human approval.

Rate limit write operations
{
  "actualizar_curso": {
    "limits": [
      {
        "counter": "actualizar_curso_per_hour",
        "window": "hour",
        "max": 30,
        "scope": "grant"
      }
    ]
  }
}

Prevents bulk unintended modifications from agents caught in loops.

Cap read operations
{
  "listar_alumnos": {
    "limits": [
      {
        "counter": "listar_alumnos_per_minute",
        "window": "minute",
        "max": 60,
        "scope": "grant"
      }
    ]
  }
}

Controls API costs and prevents retry loops from exhausting upstream rate limits.

  1. Create a free account and register Moodle — nothing to install.
  2. Add these rules — paste them, or build them visually. Tune the limits to your setup.
  3. Point your MCP client (Claude, Cursor, anything) at your gateway URL.
ENFORCE POLICY ON MOODLE →

Instant setup, no code required.

All 39 Moodle tools

WRITE 27 tools
Write actualizar_curso Update one or more fields of a course (fullname / shortname / summary / visible / lang / categoryid). At least Write actualizar_evento Reschedule a calendar event to a new timestart. To change name/description/location, delete + re-create (Moodl Write actualizar_seccion Update a course section (name/summary/visible) identified by section_id. At least one field is required. Write archivar_curso Archive (visible=0) or un-archive (visible=1) a course. Non-destructive: data, enrolments and teacher access s Write asignar_a_grupo Add one or more users to a group by group_id. Write calificar_manualmente Manually grade an assignment submission (mod_assign_save_grade). Feedback text is HTML-safe. Supports team gra Write cambiar_rol Assign a course-level role to a user (student / teacher / editingteacher / manager). Does NOT unassign previou Write configurar_quiz Create or update a quiz shell (no questions). Idempotent by slug. Default: hidden, unlimited attempts, grade=1 Write confirmar_preview Make a previewed section visible to students. Propagates visibility to all modules inside the section. Idempot Write crear_anuncio_foro Post a new discussion in a course forum. If forum_id is omitted, uses the course Announcements (type=news) for Write crear_curso Create a new Moodle course with a stable idnumber. Throws MOODLE_WS_COURSE_EXISTS if the idnumber is already i Write crear_evento_calendario Create a calendar event. Default eventtype=course. Set repeat_count>0 to create weekly recurrences. Returns th Write crear_grupo Create a group inside a course. Use asignar_a_grupo to populate it after. Write crear_seccion Create a new section in a course with a given name, summary, position and initial visibility. Requires the Write dar_baja Unenrol one or more users from a course. Non-destructive: user data is preserved, only the course enrolment li Write duplicar_curso Clone a course into a new one (backup+restore under the hood). Defaults copy activities/blocks/filters, NOT us Write enviar_mensaje_moodle Send a private Moodle message to one or more user ids. Max 50 recipients per call. Uses core_message_send_inst Write importar_gift Import GIFT-formatted questions into a quiz. Creates the questions in a bank category and appends them to the Write liberar_seccion Make a course section visible to students (reverse of ocultar_seccion). Write matricular_csv Batch-enrol users in a course from a CSV (email,firstname,lastname[,role]). Creates missing users by default w Write modificar_pregunta Edit an existing question (typo fix, reformulation, feedback tweak). Writes directly to DB, bypass Moodle 5.0. Write ocultar_seccion Hide a course section (and its modules) from students. Uses local_wsmanagesections. Write publicar_ficha_clase Publish a FichaClase markdown file as a Moodle section with component modules. Idempotent: republishing the sa Write publicar_ficha_examen Create or update a quiz and populate it with GIFT questions in one call. Runs plugin repair+promote steps afte Write publicar_preview Publish a FichaClase in hidden preview mode. Returns the same shape as publicar_ficha_clase plus Write reordenar_secciones Reorder sections in a course. Accepts an array of {section_id, position} and applies them in one batched updat Write reset_password Reset a user\
READ 11 tools

Related servers

Other MCP servers with similar tools — same risk classification, starter policies for each.

Questions about Moodle

Can an AI agent delete data through the Moodle MCP server? +

Yes. The Moodle server exposes 1 destructive tools including eliminar_evento. These permanently remove resources with no undo. PolicyLayer blocks destructive tools by default so they never reach the upstream server.

How do I prevent bulk modifications through Moodle? +

The Moodle server has 27 write tools including actualizar_curso, actualizar_evento, actualizar_seccion. Set a rate limit in your policy -- for example, 10 calls per hour prevents an agent from making more than 10 modifications per hour. PolicyLayer enforces this at the gateway, before calls reach Moodle.

How many tools does the Moodle MCP server expose? +

39 tools across 3 categories: Destructive, Read, Write. 11 are read-only. 28 can modify, create, or delete data.

How do I enforce a policy on Moodle? +

Register the Moodle MCP server in PolicyLayer, apply the suggested rules above (adjust the limits to your use case), and point your AI client at the PolicyLayer proxy URL instead of the server directly. Your agents keep the same tools; PolicyLayer evaluates every call against policy before it executes. Nothing to install, live in minutes.

Enforce policy on every Moodle tool call.

Deterministic rules across all 39 Moodle tools. Per-identity grants. Full audit log. Live in minutes. Nothing to install.

Instant setup, no code required.

39 Moodle tools catalogued and risk-classified — across an index of 43,000+ MCP servers.

// GET IN TOUCH

Have a question or want to learn more? Send us a message.

Message sent.

We'll get back to you soon.