local_mcpserver
Mi plugin para Moodle que convierte Moodle en un servidor MCP (Model Context Protocol). Así, asistentes de IA como Claude, ChatGPT, Cursor o Grok pueden trabajar con Moodle de forma segura. Software libre (GPLv3).
My Moodle plugin that turns Moodle into an MCP server (Model Context Protocol). AI assistants like Claude, ChatGPT, Cursor or Grok can then work with Moodle safely. Free software (GPLv3).
Cómo funcionaHow it works
El plugin expone un endpoint Streamable HTTP en /local/mcpserver/server.php. El asistente se conecta ahí y usa las herramientas que el usuario tiene permitidas.
The plugin exposes a Streamable HTTP endpoint at /local/mcpserver/server.php. The assistant connects there and uses the tools the user is allowed to use.
SeguridadSecurity
OAuth 2.1OAuth 2.1
Con PKCE y registro dinámico de clientes. Como alternativa, token de servicio web.
With PKCE and dynamic client registration. A web service token works as an alternative.
Alcances y tokensScopes and tokens
Alcances read, write y admin. Los tokens caducan y se pueden revocar. Solo se guarda su hash.
read, write and admin scopes. Tokens expire and can be revoked. Only their hash is stored.
Registro y límitesLogging and limits
Cada llamada queda en el log de eventos de Moodle. Hay límite de peticiones.
Every call goes to the Moodle event log. Requests are rate limited.
Escritura controladaControlled writes
La escritura viene desactivada. La activa el administrador. Los borrados y las notas van primero en simulación (dryRun) y piden confirmación.
Writes are off by default. The admin turns them on. Deletes and grades run as a dry run (dryRun) first and need confirmation.
PermisosPermissions
Lectura: cualquier usuario autenticado. Escritura: profesores con permiso de edición y gestores. Administración: administradores del sitio. Por alcance hay 26 tools de lectura, 26 de escritura y 11 de administración.
Read: any authenticated user. Write: editing teachers and managers. Admin: site administrators. By scope there are 26 read tools, 26 write tools and 11 admin tools.
Herramientas (63)Tools (63)
Lectura (23)Read (23)
Cursos, categorías, actividades, participantes, notas, plazos, progreso, foros, calendario, entregas, resultados de cuestionarios, finalización, registros y ajustes de cada actividad.
Courses, categories, activities, participants, grades, deadlines, progress, forums, calendar, submissions, quiz results, completion, logs and each activity's settings.
site_info, search_courses, list_categories, get_course_structure, list_participants, list_activities, get_activity_settings, get_grades_summary, get_task_status, get_my_deadlines, get_my_grades, get_my_progress, get_assignment_details, get_forum_posts, get_calendar_events, search_course_content, get_submissions_status, get_ungraded_work, get_quiz_results, get_inactive_students, get_activity_completion_report, get_course_logs_summary, get_forum_unanswered
Crear cursos y actividades (12)Courses and activities (12)
Cursos en blanco, desde plantilla o desde un plan JSON; ajustes e imagen del curso; secciones; página y etiqueta con imágenes, URL, archivo, tarea con rúbrica, foro, consulta y cuestionario, con condiciones de finalización y cualquier ajuste del formulario; seguimiento de finalización, restricciones de acceso (también a todo el curso de una vez), visibilidad y borrado.
Blank courses, template copies or a JSON plan; course settings and image; sections; page and label with images, URL, file, assignment with rubric, forum, choice and quiz, with completion conditions and any form setting; completion tracking, access restrictions (also for the whole course at once), visibility and deletion.
create_course, update_course, build_course, add_section, add_activity, update_activity, set_course_image, set_course_completion, set_availability, set_visibility, delete_activity, delete_section
Cuestionarios y preguntas (3)Quizzes and questions (3)
Preguntas multichoice, truefalse, shortanswer, numerical, match y essay, o importación GIFT y Moodle XML. Los resultados se leen con get_quiz_results.
multichoice, truefalse, shortanswer, numerical, match and essay questions, or GIFT and Moodle XML import. Results are read with get_quiz_results.
create_quiz, add_quiz_questions, import_questions
Calificar tareas (2)Grading (2)
get_submission lee la entrega, archivos y rúbrica. grade_submission propone la nota con dryRun (por defecto) y solo guarda tras confirmar.
get_submission reads the submission, files and rubric. grade_submission proposes the grade with dryRun (the default) and saves only after confirmation.
get_submission, grade_submission
Usuarios y matriculación (12)Users and enrolment (12)
Buscar, crear, editar y suspender usuarios (alcance admin); matricular y desmatricular, roles y grupos.
Search, create, update and suspend users (admin scope); enrol and unenrol, roles and groups.
search_users, create_user, create_users, update_user, suspend_user, unsuspend_user, enrol_user, unenrol_user, set_user_role, create_group, add_group_members, remove_group_members
Foros y mensajería (6)Forums and messaging (6)
Abrir debates (también en el foro de avisos) y responder; leer conversaciones y enviar mensajes privados respetando las preferencias de cada usuario.
Start discussions (including in the announcements forum) and reply; read conversations and send private messages, honouring each user's preferences.
create_forum_discussion, reply_forum_post, list_conversations, get_conversation_messages, send_private_message, reply_conversation
Políticas del sitio (5)Site policies (5)
Activar el plugin Políticas, crear y versionar políticas y ver quién las ha aceptado (alcance admin).
Turn on the Policies plugin, create and version policies and see who has accepted them (admin scope).
set_site_policy_handler, create_policy, update_policy, list_policies, get_policy_acceptances
create_course crea un curso en blanco o lo copia de una plantilla. build_course monta un curso entero desde un JSON (secciones, actividades y preguntas) en segundo plano, con simulación y deshaciendo los cambios si falla. Ambos devuelven un id de tarea que se consulta con get_task_status. Un profesor con edición puede llenar su curso; crear cursos nuevos requiere el permiso de Moodle de crear cursos. Referencia completa de las 63 tools.
create_course creates a blank course or copies one from a template. build_course builds a whole course from JSON (sections, activities and questions) in the background, with a dry run and rollback if it fails. Both return a task id you can check with get_task_status. An editing teacher can fill their own course; creating new courses needs Moodle's course-creation permission. Full reference for the 63 tools.
TokensTokens
Mis tokens MCPMy MCP tokens
Cada usuario crea sus propios tokens desde Preferencias o el menú de usuario: nombre, alcances que su rol permite y duración de 30, 90 o 365 días. El token se muestra una sola vez, con la URL del servidor y la configuración para Cursor y Claude Desktop. Se puede revocar en cualquier momento.
Each user creates their own tokens from Preferences or the user menu: a name, the scopes their role allows and a lifetime of 30, 90 or 365 days. The token is shown once, with the server URL and the setup for Cursor and Claude Desktop. It can be revoked at any time.
Panel de tokens del administradorAdmin token panel
El administrador ve todos los tokens del sitio sin su valor, filtra por usuario, estado y tipo, y revoca uno, todos los de un usuario o todos. También puede desactivar los tokens personales o limitar su duración.
The admin sees every token on the site without its value, filters by user, status and type, and revokes one, all of a user's, or all. Personal tokens can also be switched off or given a shorter maximum lifetime.
Prompts y skillPrompts and skill
El servidor ofrece tres prompts MCP: design_course, grade_assignment y create_quiz_from_content. Guían al asistente paso a paso, con simulación antes de guardar. Para clientes que cargan skills, el plugin incluye la skill moodle-course-design con el mismo método: orden de trabajo, cómo es un buen curso y los campos de cada tipo de actividad. Prompts · Skill · Calificar con dryRun
The server offers three MCP prompts: design_course, grade_assignment and create_quiz_from_content. They guide the assistant step by step, with a dry run before saving. For clients that load skills, the plugin ships the moodle-course-design skill with the same method: order of work, what a good course looks like and the fields of each activity type. Prompts · Skill · Grading with dryRun
EstadoStatus
Versión 0.8.6 (beta) en desarrollo. Aún faltan cosas. Lo he probado en local con MCP Inspector. Aún no está publicado.
Version 0.8.6 (beta) in development. Some things are still missing. I have tested it locally with MCP Inspector. Not released yet.