Saltar a contenido

local_mcp

local_mcp es un plugin local de Moodle que habla el Model Context Protocol (MCP) sobre Streamable HTTP. Un asistente de IA como Claude, ChatGPT, Cursor o Grok se conecta como un usuario real de Moodle, con los mismos permisos que ese usuario ya tiene en la interfaz. Puede leer el sitio o montar cursos.

  • Moodle: de 4.5 a 5.2 (requires 2024100700, supported 405–502). Probado en 4.5 LTS y 5.2 con PHP 8.3 y PostgreSQL; el mismo código funciona en 5.0 y 5.1.
  • Licencia: GNU GPL v3 o posterior.
  • Versión: 0.4.1 (2026110107), madurez beta. En desarrollo, probado en local con MCP Inspector.
  • Autor: Sergio Comerón.

Aún no publicado

Descarga, código fuente y ficha en el directorio de Moodle: próximamente.

Qué hace

El endpoint es:

{wwwroot}/local/mcp/server.php

Acepta peticiones JSON-RPC 2.0 por POST y responde con JSON o con un cuerpo SSE de un solo mensaje. Un cliente MCP se conecta a esa URL y llama a 34 tools:

  • 21 de lectura
    • General: site_info, search_courses, get_course_structure, list_participants, list_activities, get_grades_summary, get_task_status.
    • Estudiante: get_my_deadlines, get_my_grades, get_my_progress, get_assignment_details, get_forum_posts, get_calendar_events, search_course_content.
    • Profesor: get_submissions_status, get_ungraded_work, get_quiz_results, get_inactive_students, get_activity_completion_report, get_course_logs_summary, get_forum_unanswered.
  • 13 de escritura: create_course, build_course, add_section, add_activity, create_quiz, add_quiz_questions, import_questions, update_activity, enrol_user, create_group, set_visibility, delete_activity, delete_section.

Con la escritura activada, un asistente puede añadir tareas con rúbrica, foros, URL, páginas, etiquetas, ficheros y cuestionarios; crear preguntas (opción múltiple, verdadero/falso, respuesta corta, numérica, emparejamiento, ensayo); importar GIFT o Moodle XML; y montar un curso entero desde un plan JSON en segundo plano, con simulación y deshaciendo los cambios si falla. Un profesor con edición puede llenar su propio curso; crear un curso nuevo requiere el permiso de Moodle moodle/course:create.

Seguridad en resumen

  • Flujo OAuth 2.1 de código de autorización con PKCE S256 y registro dinámico de clientes (RFC 7591). Token de servicio web de Moodle como alternativa opcional.
  • Alcances read, write y admin. Tokens de acceso de vida corta; los de refresco rotan en cada uso; los tokens se pueden revocar.
  • Cada llamada a una tool queda en el registro de eventos de Moodle.
  • Límite de peticiones por usuario y minuto (60 por defecto).
  • La escritura viene desactivada (allowwrite = 0).
  • Los borrados son simulaciones salvo que la llamada envíe dryRun: false y confirm: true.

Más detalles en Seguridad y permisos.

Siguientes pasos

  1. Requisitos
  2. Instalación
  3. Inicio rápido