Skip to main content
Glama

moodle-mcp

Servidor MCP que conecta Claude con tu cuenta de estudiante en Moodle. Con él le puedes preguntar a Claude por tus cursos, entregas pendientes, calificaciones y avisos, pedirle que descargue materiales, que publique en foros o que suba tus tareas.

Funciona con cualquier Moodle que tenga habilitada la app móvil, porque usa la misma API oficial que ella.

Cómo se usa

Le hablas a Claude como a cualquier persona. No necesitas saber IDs ni nombres de funciones: Claude busca solo el curso, el foro o la tarea de la que hablas.

Algunos ejemplos:

  • "¿Qué tengo pendiente esta semana?"

  • "¿Cómo voy en Estadística? Dame mis calificaciones por actividad."

  • "¿Ya entregué el reporte 3 de Marketing? ¿El profe dejó comentarios?"

  • "Descarga todo el material de Analítica Predictiva."

  • "¿Qué avisos ha publicado el profesor de Ética esta semana?"

  • "Resúmeme las instrucciones de la Entrega Unidad III."

  • "Publica en el foro de dudas de Finanzas un post con el asunto 'Duda sobre VPN' preguntando cómo se elige la tasa de descuento."

  • "Sube C:\Users\yo\Documents\reporte.pdf a la tarea Reporte de lectura 4."

Por ejemplo, cuando le pides publicar en un foro, Claude:

  1. Busca el curso entre tus cursos.

  2. Busca el foro por su nombre y revisa si puedes publicar en él.

  3. Redacta el asunto y el mensaje a partir de lo que le pediste.

  4. Te muestra el texto exacto y espera tu aprobación.

  5. Solo entonces lo publica.

WARNING

Publicar en foros, responder y subir entregas son acciones que ven tus profesores y compañeros. Claude siempre te pide confirmación antes de hacerlas, pero lee bien lo que apruebas. Una entrega nuevareemplaza los archivos que ya hubieras subido a esa tarea.

Related MCP server: moodle-mcp

Instalación

Necesitas:

  • Python 3.10 o superior

  • Claude Code o Claude Desktop

  • Tu usuario y contraseña de Moodle, y la dirección de tu Moodle (p. ej. https://mi.cugdl.udg.mx)

En los pasos se usa https://mi.cugdl.udg.mx (Moodle de CUGDL, UdeG) como ejemplo. Si tu escuela es otra, cámbiala por la dirección de tu Moodle.

Windows

Todos los comandos son para PowerShell (búscalo en el menú Inicio).

1. Instala Python. Descárgalo de python.org y, en el instalador, marca "Add python.exe to PATH". Comprueba que quedó instalado:

py --version

2. Descarga el proyecto en tu carpeta de usuario:

cd $HOME
git clone https://github.com/ivxnwww/moodle-mcp.git
cd moodle-mcp

Si no tienes git, en GitHub ve a Code → Download ZIP, descomprímelo en tu carpeta de usuario y cambia el nombre de la carpeta moodle-mcp-main a moodle-mcp.

3. Instala las dependencias:

py -m venv .venv
.venv\Scripts\python.exe -m pip install -r requirements.txt

4. Consigue tu token de Moodle y guárdalo. Cambia la dirección, el usuario y la contraseña:

$r = Invoke-RestMethod -Method Post -Uri "https://mi.cugdl.udg.mx/login/token.php" -Body @{
  username = "TU_USUARIO"; password = "TU_CONTRASEÑA"; service = "moodle_mobile_app"
}
$r

Si en la respuesta aparece un token, guárdalo:

$r.token | Set-Content -NoNewline "$HOME\.moodle_token"

Si en cambio aparece un error, revisa Problemas comunes.

5. Prueba que funciona:

$env:MOODLE_URL = "https://mi.cugdl.udg.mx"
.venv\Scripts\python.exe -c "import server; print(server.info_usuario())"

Debe mostrar tu nombre y el de tu escuela.

6. Conéctalo con Claude.

  • Claude Code:

    claude mcp add --scope user moodle -e MOODLE_URL=https://mi.cugdl.udg.mx -- "$HOME\moodle-mcp\.venv\Scripts\python.exe" "$HOME\moodle-mcp\server.py"
  • Claude Desktop: abre Configuración → Desarrollador → Editar configuración (el archivo es %APPDATA%\Claude\claude_desktop_config.json) y agrega esto. Cambia TU_USUARIO_DE_WINDOWS y usa / en las rutas:

    {
      "mcpServers": {
        "moodle": {
          "command": "C:/Users/TU_USUARIO_DE_WINDOWS/moodle-mcp/.venv/Scripts/python.exe",
          "args": ["C:/Users/TU_USUARIO_DE_WINDOWS/moodle-mcp/server.py"],
          "env": { "MOODLE_URL": "https://mi.cugdl.udg.mx" }
        }
      }
    }

7. Reinicia Claude y pregúntale "¿qué tengo pendiente esta semana?".

macOS

Todos los comandos son para la app Terminal.

1. Instala Python. Comprueba qué versión tienes:

python3 --version

Si dice 3.9 o menos, o no lo encuentra, instala la versión más reciente desde python.org o con Homebrew (brew install python).

2. Descarga el proyecto en tu carpeta de usuario:

cd ~
git clone https://github.com/ivxnwww/moodle-mcp.git
cd moodle-mcp

Si macOS te pide instalar las herramientas de desarrollo para usar git, acepta. También puedes ir a Code → Download ZIP en GitHub, descomprimirlo en tu carpeta de usuario y cambiar el nombre de la carpeta moodle-mcp-main a moodle-mcp.

3. Instala las dependencias:

python3 -m venv .venv
.venv/bin/python -m pip install -r requirements.txt

4. Consigue tu token de Moodle. Cambia la dirección, el usuario y la contraseña:

curl -s -X POST https://mi.cugdl.udg.mx/login/token.php \
  --data-urlencode "username=TU_USUARIO" \
  --data-urlencode "password=TU_CONTRASEÑA" \
  --data-urlencode "service=moodle_mobile_app"

Si la respuesta trae un "token", copia el valor (sin comillas) y guárdalo:

echo "PEGA_AQUI_TU_TOKEN" > ~/.moodle_token
chmod 600 ~/.moodle_token

Si en cambio aparece un "error", revisa Problemas comunes.

5. Prueba que funciona:

MOODLE_URL=https://mi.cugdl.udg.mx .venv/bin/python -c "import server; print(server.info_usuario())"

Debe mostrar tu nombre y el de tu escuela.

6. Conéctalo con Claude.

  • Claude Code:

    claude mcp add --scope user moodle -e MOODLE_URL=https://mi.cugdl.udg.mx -- "$HOME/moodle-mcp/.venv/bin/python" "$HOME/moodle-mcp/server.py"
  • Claude Desktop: abre Configuración → Desarrollador → Editar configuración (el archivo es ~/Library/Application Support/Claude/claude_desktop_config.json) y agrega esto. Cambia TU_USUARIO_DE_MAC (lo ves con whoami):

    {
      "mcpServers": {
        "moodle": {
          "command": "/Users/TU_USUARIO_DE_MAC/moodle-mcp/.venv/bin/python",
          "args": ["/Users/TU_USUARIO_DE_MAC/moodle-mcp/server.py"],
          "env": { "MOODLE_URL": "https://mi.cugdl.udg.mx" }
        }
      }
    }

7. Reinicia Claude y pregúntale "¿qué tengo pendiente esta semana?".

CAUTION

El token da acceso completo a tu cuenta de Moodle. No lo compartas ni lo subas a ningún repositorio. Si crees que alguien lo vio, cambia tu contraseña de Moodle y genera uno nuevo.

Problemas comunes

Mensaje

Qué significa

Qué hacer

invalidlogin

Usuario o contraseña incorrectos

Revisa que sean los mismos con los que entras a Moodle

enablewsdescription o servicenotavailable

Tu escuela no tiene habilitada la app móvil

No hay solución desde tu lado; pregunta a soporte de tu escuela

Falta MOODLE_URL

No configuraste la dirección de tu Moodle

Agrega MOODLE_URL en el paso 6

No hay token de Moodle

No existe ~/.moodle_token

Repite el paso 4

invalidtoken

El token expiró o se revocó

Repite el paso 4 para sacar uno nuevo

Claude no ve las herramientas

Claude no ha recargado la configuración

Cierra y abre Claude por completo

Si entras a Moodle con Google, Microsoft u otro inicio de sesión único, el paso 4 no funciona porque no tienes contraseña de Moodle. Busca tu token en Moodle, en Preferencias → Claves de seguridad, si tu escuela lo permite.

Configuración

Variable

Obligatoria

Qué es

MOODLE_URL

Sí

Dirección de tu Moodle, p. ej. https://mi.cugdl.udg.mx

MOODLE_TOKEN

No

Token; si no está, se lee de MOODLE_TOKEN_FILE

MOODLE_TOKEN_FILE

No

Archivo con el token (por defecto ~/.moodle_token)

MOODLE_DOWNLOAD_DIR

No

Carpeta de descargas (por defecto ~/Downloads/Moodle)

Herramientas

Referencia técnica de lo que Claude puede usar. No necesitas escribir estos nombres; Claude los elige según lo que le pidas.

Herramienta

Qué hace

info_usuario

Datos de la cuenta conectada y versión de Moodle

mis_cursos

Cursos inscritos con ID y progreso

pendientes(dias)

Actividades que vencen en los próximos días

contenido_curso(curso_id)

Secciones, actividades y archivos de un curso

tareas(curso_id?)

Tareas con fechas e instrucciones

estado_tarea(tarea_id)

Si se entregó, archivos enviados, calificación y comentarios

calificaciones(curso_id?)

Resumen por curso o detalle por actividad

avisos(curso_id)

Últimas discusiones de los foros del curso

descargar_archivo(fileurl)

Descarga un archivo

descargar_materiales_curso(curso_id)

Descarga todo el material de un curso, por sección

foros(curso_id)

Foros del curso, con ID y si puedes publicar

leer_discusion(discusion_id)

Mensajes de una discusión, con su post_id

publicar_en_foro(foro_id, asunto, mensaje, archivos?)

Publica una discusión nueva

responder_en_foro(post_id, mensaje, asunto?, archivos?)

Publica una respuesta

subir_entrega(tarea_id, archivos?, texto?, enviar_para_calificar?)

Entrega una tarea (reemplaza los archivos previos)

llamar_api(funcion, parametros)

Llama cualquier función de la API de Moodle

Las herramientas en negritas hacen cambios visibles para otros.

Notas

  • Lo que puedes ver y hacer depende de los permisos que tu escuela dé a la app móvil. Si una función está desactivada, Moodle responde con un error y Claude te lo dirá.

  • Si el servidor de Moodle no responde, se reintenta hasta tres veces antes de fallar.

  • No es un proyecto oficial de Moodle. Úsalo de acuerdo con las reglas de tu institución.

Licencia

MIT

Related MCP Connectors

Related MCP Servers