moodle-mcp
moodle-mcp
Servidor del Protocolo de Contexto de Modelo para Moodle LMS — conecta Hermes, Claude Code y OpenCode a tu Moodle. Obtén tareas, calificaciones y plazos, sincroniza con Obsidian y recibe alertas de WhatsApp.
Resumen • Características • Inicio rápido • Configuración • Configuración del agente • Herramientas • Sincronización con Obsidian
Resumen
moodle-mcp conecta la API de Servicios Web de Moodle con el Protocolo de Contexto de Modelo, para que los agentes de IA puedan actuar como tu asistente académico. Fue construido para Polibatam (filtrado multiclase) pero funciona con cualquier instancia de Moodle que tenga Servicios Web habilitados.
Bifurcación de loyaniu/moodle-mcp — ampliado de 22 a 40 herramientas con sincronización con Obsidian, descargas de materiales, herramientas de entrega, integración de calendario, recuperación concurrente y archivado automático de semestre.
[!TIP] Funciona con cualquier Moodle LMS — solo apunta
MOODLE_URLa tu instancia. El filtro de clase de Polibatam (MOODLE_MY_CLASS) es opcional.
Related MCP server: mcp-moodle
Características
Tareas y plazos — filtradas por franja horaria de clase, ordenadas por urgencia, con listas de tareas accionables
Calificaciones y progreso — comprobaciones de estado del curso, carga de estudio y seguimiento de finalización
Contenido del curso y búsqueda — secciones, módulos, materiales, anuncios, actividad reciente
Sincronización con Obsidian — exportación con un solo comando de paneles, plazos y notas del curso (con archivado automático de semestre)
Descargas de materiales — listar y descargar archivos del curso y adjuntos de tareas
Entregas — enviar texto, verificar estado y leer comentarios
Calendario — eventos próximos, crear recordatorios (H-2), marcar actividades como completadas
Listo para agentes — único
install-mcp.shpara Hermes, Claude Code y OpenCode
Inicio rápido
Instalación en una línea
curl -fsSL https://raw.githubusercontent.com/zuckdorsey/moodle-mcp/main/scripts/install-mcp.sh | bashDetecta automáticamente los agentes instalados y configura cada uno. Para una simulación:
bash scripts/install-mcp.sh --dry-runVerificar
# Hermes (profile: akademik)
hermes --profile akademik mcp test moodle
# → ✓ Connected ✓ Tools discovered: 40
# Claude Code
claude mcp list
# Run tests
PYTHONPATH=src .venv/bin/python -m unittest discover -s tests -v[!NOTA] Prefiere fuente local en lugar de PyPI durante desarrollo — el lanzador establece
PYTHONPATHensrc/automáticamente.
Configuración
1. Obtén tu token de Moodle
Abre
https://<tu-moodle>/user/managetoken.phpBusca la fila con Servicio web móvil de Moodle en
ServicioCopia el token
2. Crea .env
cp .env.example .envMOODLE_URL=https://your-moodle.example.com/webservice/rest/server.php
MOODLE_TOKEN=your_token_here
# Optional — Polibatam class-slot filter (e.g. Pagi C, Siang A)
MOODLE_MY_CLASS=Pagi C
# Optional — custom vault path
OBSIDIAN_VAULT_PATH=/home/you/Obsidian VaultVariable | Requerido | Descripción |
| sí | Endpoint REST de Moodle ( |
| sí | Token de servicio web móvil |
| no | Filtro regex para títulos de tareas multiclase |
| no | Raíz del vault (predeterminado: |
3. Instala el paquete
# with uv (recommended)
uv pip install -e .
# or pip
pip install -e .[!ADVERTENCIA] Nunca subas
.env— contiene un token con acceso completo a la API. Ya está en.gitignore.
Configuración del agente
Elige tu agente — todos usan el mismo lanzador local en scripts/moodle_mcp_local_launch.py.
Hermes Agent (recomendado)
bash scripts/install-mcp.sh --agent hermes --profile akademikManual (~/.hermes/profiles/akademik/config.yaml):
mcp_servers:
moodle:
command: /home/you/Programming/Python/moodle-mcp/.venv/bin/python
args: [/home/you/Programming/Python/moodle-mcp/scripts/moodle_mcp_local_launch.py]
env:
MOODLE_URL: ${MOODLE_URL}
MOODLE_TOKEN: ${MOODLE_TOKEN}
MOODLE_MY_CLASS: "Pagi C"
OBSIDIAN_VAULT_PATH: "/home/you/Obsidian Vault"Claude Code
bash scripts/install-mcp.sh --agent claude-code
# or manually
claude mcp add -s user moodle-mcp -- python3 /path/to/moodle-mcp/scripts/moodle_mcp_local_launch.pyJSON global (~/.claude/settings.json):
{
"mcpServers": {
"moodle-mcp": {
"command": "python3",
"args": ["/path/to/moodle-mcp/scripts/moodle_mcp_local_launch.py"],
"env": {
"MOODLE_URL": "https://your-moodle/webservice/rest/server.php",
"MOODLE_TOKEN": "your_token_here"
}
}
}
}OpenCode
bash scripts/install-mcp.sh --agent opencode~/.config/opencode/config.json:
{
"mcp": {
"moodle-mcp": {
"command": "python3",
"args": ["/path/to/moodle-mcp/scripts/moodle_mcp_local_launch.py"],
"environment": {
"MOODLE_URL": "https://your-moodle/webservice/rest/server.php",
"MOODLE_TOKEN": "your_token_here"
}
}
}
}Claude Desktop / Cursor
Añade a claude_desktop_config.json:
{
"mcpServers": {
"moodle-mcp": {
"command": "uvx",
"args": ["moodle-mcp"],
"env": {
"MOODLE_URL": "https://your-moodle/webservice/rest/server.php",
"MOODLE_TOKEN": "your_token_here"
}
}
}
}Reinicia la aplicación de escritorio — las herramientas aparecerán en el selector.
Herramientas
40 herramientas en 7 grupos. Llámalas por su nombre desde cualquier agente conectado (ej. "lista mis cursos de Moodle" → get_my_courses).
Herramienta | Descripción |
| Cursos en los que está inscrito |
| Secciones y módulos de un curso |
| Buscar en todos los materiales |
| Anuncios del foro de noticias |
| Actividad reciente desde una fecha |
| Nuevos materiales/anuncios |
Herramienta | Descripción |
| Tareas (filtradas por franja horaria) |
| Estado de entrega y calificación |
| Plazos ordenados por fecha de entrega |
| Vencidas y no entregadas |
| Lista de urgencia priorizada |
| Estado + requisitos + materiales |
| Entregables y criterios |
| Contenido relevante para la tarea |
| Subtareas con ruta crítica |
| Línea de tiempo, recursos, hitos |
| Enviar respuesta de texto |
| Comentarios y resultados de rúbrica |
Herramienta | Descripción |
| Resumen o detalle por curso |
| Progreso de finalización |
| Comprobación de salud (progreso + notas + vencidas) |
| Distribución de tareas por semana |
| Detalle de entrega y comentarios |
Herramienta | Descripción |
| Próximos eventos de Moodle |
| Crear recordatorio H-2 |
| Estado de finalización |
| Marcar actividad completada |
Herramienta | Descripción |
| Cursos + plazos + calificaciones |
| Vencidas, hoy, calificaciones recientes |
| Entregadas, calificadas, vencidas, progreso |
| Enrutamiento en lenguaje natural |
| Detección de cambios en el curso |
Herramienta | Descripción |
| Sincronización completa del vault (archivado automático al cambiar de semestre) |
| Solo plazos |
| Esquema del curso como nota |
| Listar archivos descargables |
| Descargar en |
| Descargar archivos de tareas |
[!TIP] Prueba: "¿qué tengo que entregar esta semana?" →
get_upcoming_deadlines, "analiza tarea base de datos" →analyze_assignment, "sincroniza con Obsidian" →sync_moodle_to_obsidian.
Sincronización con Obsidian
La sincronización crea notas en Academic/Moodle dentro de tu vault:
Obsidian Vault/Academic/
Moodle/ ← current semester (always up-to-date)
.semester_courses.json ← hidden state (course IDs)
Dashboard.md
Deadlines.md
Grades.md
Courses/
Archive/
Semester-2026-07/ ← auto-created on rollover
Dashboard.md
Courses/
Archive-README.mdArchivado automático de semestre se activa cuando >50% de los IDs de curso cambian (o todos son nuevos). Un intercambio de un solo curso se ignora.
PYTHONPATH=src python - <<'PY'
from moodle_mcp import api
print(api.sync_moodle_to_obsidian())
PYNotas de seguridad
[!PRECAUCIÓN] Tu token de Moodle otorga acceso completo a la API como tu usuario. Trátalo como una contraseña.
Los tokens se cargan en el servidor y nunca se envían al modelo.
Inyecta
MOODLE_URL/MOODLE_TOKENcomo secretos de entorno en CI.moodle.pyutiliza unUser-Agentsimilar al de un navegador + POST para compatibilidad con Cloudflare.
Agradecimientos
Bifurcación de loyaniu/moodle-mcp — crédito a todos los contribuyentes originales:
Contribuidor | Rol |
Autor original, integración REST de Moodle, servidor central | |
Paneles, carga de estudio, comprobaciones de salud | |
Contenido del curso y correcciones de búsqueda | |
Insignia de evaluación de seguridad |
Adiciones en esta bifurcación
Sincronización con Obsidian + archivado automático de semestre
Descargas de materiales y adjuntos de tareas
Herramientas de entrega y comentarios, calendario y finalización
Filtro de franja horaria de Polibatam (
MOODLE_MY_CLASS)Recuperación concurrente (~10× más rápido en tareas accionables)
Universal
install-mcp.shpara Hermes / Claude Code / OpenCode
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityCmaintenanceProvides Claude with full access to Moodle learning management systems, enabling interaction with courses, files, assignments, grades, and calendar events. It also supports building Obsidian study vaults from course materials through automated knowledge graph creation.1416MIT
- AlicenseAqualityBmaintenanceEnables AI assistants to interact with Moodle via web services, allowing tasks like listing courses, assignments, events, and downloading files.104MIT
- Alicense-qualityDmaintenanceEnables AI agents to interact with Moodle LMS via the Moodle REST API, supporting management of courses, users, enrollments, grades, and content.GPL 3.0
- Flicense-qualityCmaintenanceEnables AI assistants to automatically pull Canvas LMS course materials into Obsidian, syncing files, assignments, grades, and announcements organized by course and module.
Related MCP Connectors
Persistent memory and knowledge management for AI agents with semantic search and 50+ tools.
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…
Connect any AI agent to 11+ social platforms: schedule, publish & track posts via hosted MCP.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/zuckdorsey/moodle-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server