English | 繁體中文 | 简体中文 | 日本語 | Español | Deutsch | Português | Français
[](https://github.com/G36maid/moodle-mcp/actions/workflows/ci.yml) [](https://codecov.io/gh/G36maid/moodle-mcp) [](https://github.com/G36maid/moodle-mcp/releases/latest) [](https://crates.io/crates/moodle-mcp) [](../LICENSE) [](https://www.rust-lang.org) [](https://modelcontextprotocol.io) [](https://github.com/G36maid/moodle-mcp/actions/workflows/release.yml) Um servidor [Model Context Protocol](https://modelcontextprotocol.io) que permite que agentes LLM **usem um Moodle LMS real** — ler cursos, buscar os PDFs das tarefas, escrever código, fazer upload e submeter — por meio de um único binário estático. Construído em Rust sobre o SDK oficial do MCP ([`rmcp`](https://crates.io/crates/rmcp)). Verificado na prática com Moodle 3.7, 4.5 e 5.2; projetado para **3.7 → 5.x**. ## ✅ Por que o moodle-mcp Um chatbot genérico não tem como entrar no seu Moodle, então toda tarefa de estudo continua manual — cinco abas do navegador só para responder *"o que vence esta semana?"*, PDFs reenviados à mão, fóruns e notas copiados e colados uma página por vez. O moodle-mcp autentica o agente como você. São 20 ferramentas tipadas cobrindo toda a jornada do estudante, e o agente as encadeia sozinho — sem nunca abrir um navegador: - **Tudo incluso** — conversão de documentos, HTML → Markdown, uma CLI de autenticação e uma rota de escape opcional, tudo em um binário só: sem plugins, sem scripts auxiliares, sem um segundo runtime - **Nativo para agentes** — as ferramentas recebem e retornam caminhos de arquivos locais em vez de base64; todo resultado embute os IDs para a próxima chamada; os erros são em linguagem simples e sugerem a correção - **Seguro por padrão** — as ferramentas de escrita pedem sua confirmação antes, os envios permanecem como rascunho até você dizer; resolver questionários é algo propositalmente não oferecido - **Adaptável a versões** — verificado no Moodle 3.7 e projetado para o 4.x/5.x; as diferenças de resposta entre versões são absorvidas automaticamente - **Um binário estático** — sem dependências de execução ## 🚀 Início rápido Requer uma conta em um Moodle 3.7 → 5.x, em um site que permita o serviço web do aplicativo móvel (a maioria permite — veja os [pré-requisitos](https://moodle.ntnu.cc/docs/getting-started.html#prerequisites)). ```bash # 1. Install cargo install moodle-mcp # or grab a prebuilt binary — no Rust needed # 2. Log in once — prints MOODLE_URL and MOODLE_TOKEN moodle-mcp auth # 3. Connect your client (Claude Code shown; Codex/OpenCode/pi below) claude mcp add moodle \ --env MOODLE_URL=https://moodle.example.com \ --env MOODLE_TOKEN=your-token \ -- /path/to/moodle-mcp # 4. Open a chat and ask: # "What's due in the next two weeks? Plan my studying around it." ``` Ou cole isto no seu agente e deixe que ele faça todos os passos (ele abrirá `moodle-mcp auth` no próprio terminal — digite suas credenciais ali, não no chat): ```text Set up moodle-mcp (github.com/G36maid/moodle-mcp): read docs/src/installation.md and docs/src/configuration.md from the repo's main branch first. Then install the binary for my platform, run `moodle-mcp auth` in the terminal so I can type my school credentials when it prompts, and register the server in your own MCP config using the snippet for your harness. Never store or repeat my credentials; ask before anything global. ``` Binários pré-compilados, login via SSO, trechos de configuração para cada cliente e a referência completa de variáveis de ambiente: [Instalação](https://moodle.ntnu.cc/docs/installation.html) · [Primeiros passos](https://moodle.ntnu.cc/docs/getting-started.html) · [Configuração](https://moodle.ntnu.cc/docs/configuration.html) ## 💬 O que o agente pode fazer Tudo isso funciona sem nenhuma configuração adicional — o agente descobre as ferramentas pelas descrições e as encadeia sozinho: | Você diz | O agente encadeia | |---|---| | *"Termine meu trabalho 1 de Segurança da Informação: leia as instruções e o PDF em anexo, resolva os problemas e envie como rascunho."* | `get_assignment` (brief + attachments) → `fetch_file` (PDF → markdown, math included) → solves it → writes the answer file → `upload_file` → `submit_assignment` → `get_assignment` (verify submitted ✓) | | *"Com base nos prazos futuros e no material das disciplinas, monte um plano de estudos completo para as próximas duas semanas."* | `get_schedule` (all deadlines) → `get_course_overview` per course → day-by-day plan balanced against due dates | | *"Perdi o que aconteceu em Comunicação de Dados esta semana — me atualize, incluindo o fórum de avisos."* | `get_notifications` + `get_forum_discussions` → `get_discussion_posts` → synthesized weekly digest | | *"Me prepare para o teste de Engenharia de Software: o que o professor postou a respeito?"* | `get_course_overview` (quiz entry) → `get_assignment` (requirements) → related forum threads | ## 🔄 Como o agente funciona As ferramentas espelham a forma como você navega no Moodle — a saída de cada nível embute os IDs para o próximo: ```mermaid flowchart TD Q["💬 prompt (intent only)"] --> LC["list_courses(search?)