Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Moodle MCP Serverlist my courses for this semester"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
moodle-mcp
Servidor MCP (Model Context Protocol) para exponer tools que permiten a un LLM interactuar con Moodle mediante su API REST.
Estado: baseline listo para producción ligera (TypeScript + Fastify). Incluye validación con Zod, logging con Pino, estructura de acciones y cliente REST con backoff.
Requisitos
Node.js 20+
Token de servicio en Moodle (REST)
URL base de Moodle (p. ej.
https://elearning.org)
Configuración
Copia
.env.examplea.envy ajusta valores:
MOODLE_BASE_URL=https://elearning.example.org
MOODLE_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
MOODLE_FORMAT=json
PORT=7410
LOG_LEVEL=infoInstala dependencias:
npm installArranca en modo desarrollo:
npm run devEl servidor expone:
GET /health→ okPOST /mcp/tools→ invocar tools MCP con payload{ tool, arguments }GET /mcp/resources/:type/:id→ recursos cacheables (course, user, assignment)
Ejemplos de uso
Listar cursos:
curl -X POST http://localhost:7410/mcp/tools -H "content-type: application/json" -d '{"tool":"list_courses","arguments":{"search":"prospectiva","limit":10}}'Buscar usuario por email:
curl -X POST http://localhost:7410/mcp/tools -H "content-type: application/json" -d '{"tool":"get_user_by_email","arguments":{"email":"alguien@org.org"}}'Matricular usuario:
curl -X POST http://localhost:7410/mcp/tools -H "content-type: application/json" -d '{"tool":"enroll_user","arguments":{"userid":123,"courseid":456,"roleid":5}}'Estructura
src/
index.ts # bootstrap Fastify
mcpServer.ts # registro y ruteo de tools/resources
moodleClient.ts # wrapper REST Moodle con backoff
config.ts # carga de env
utils/
validators.ts # esquemas Zod
error.ts # tipos/ayudantes de error
logging.ts # logger Pino
actions/ # handlers MCP
courses.ts
users.ts
enrollments.ts
assignments.ts
forums.ts
files.ts
quizzes.ts
schemas/ # (espacio para JSON Schemas si los separas)
test/
params.test.ts # tests de flatten/validación
mcp.json # manifest MCPNotas sobre Moodle REST
Endpoint:
{MOODLE_BASE_URL}/webservice/rest/server.phpParámetros obligatorios:
wstoken,wsfunction,moodlewsrestformatCodificación de arrays:
courseids[0]=123&courseids[1]=456(ya soportado porflattenParams).Errores: el cliente normaliza errores HTTP/REST y texto de Moodle.
Docker
docker build -t moodle-mcp .
docker run --env-file .env -p 7410:7410 moodle-mcpLicencia
MIT © 2025
This server cannot be installed
Resources
Looking for Admin?
Admins can modify the Dockerfile, update the server description, and track usage metrics. If you are the server author, to access the admin panel.