
Moodle MCP: сроки, задания, оценки и файлы курса для агента
Подключает агента к Moodle через Web Service API по личному токену: курсы, задания и дедлайны, тесты, оценки и файлы курса. Для преподавателя есть вариант с проверкой работ и отзывами.
Один файл на Python без зависимостей и только чтение: сводка за неделю, несданные задания с днями до срока, состояние тестов, файлы курса и скачивание недели.
Как подключить
Что сделать до подключения
Python 3.8 или новее, пакеты ставить не нужно
Moodle 3.x или 4.x с включёнными Web Services и протоколом REST
Скачать server.py; вместо переменных можно положить рядом config.json с url и token
MOODLE_TOKENMoodle → аватар → Preferences → Account → Security → Manage access keys → Create, сервис Moodle mobile web service
Конфиг для вашего клиента
Команда в терминале, в папке проекта. Флаг --scope user подключит сервер для всех проектов. Подробно о Claude Code
claude mcp add --env 'MOODLE_URL=https://<ваш Moodle>' --env 'MOODLE_TOKEN=<ваш токен>' --transport stdio moodle \
-- python '<путь к Moodle-MCP>/server.py'Проверка: claude mcp list показывает статус рядом с каждым сервером: ✔ Connected, ! Needs authentication или ✘ Failed to connect. Внутри сессии то же видно по команде /mcp.
Файл ~/.codex/config.toml или .codex/config.toml в доверенном проекте. Можно и командой codex mcp add. Подробно о Codex
[mcp_servers.moodle]
command = "python"
args = ["<путь к Moodle-MCP>/server.py"]
[mcp_servers.moodle.env]
MOODLE_URL = "https://<ваш Moodle>"
MOODLE_TOKEN = "<ваш токен>"Проверка: В интерфейсе codex введите /mcp: появится список активных серверов. Из терминала то же покажет codex mcp list.
Файл ~/.cursor/mcp.json для всех проектов или .cursor/mcp.json в папке проекта. Подробно о Cursor
{
"mcpServers": {
"moodle": {
"command": "python",
"args": ["<путь к Moodle-MCP>/server.py"],
"env": {
"MOODLE_URL": "https://<ваш Moodle>",
"MOODLE_TOKEN": "<ваш токен>"
}
}
}
}Проверка: Откройте Customize в боковой панели: там список серверов с переключателями. Ошибки подключения смотрите в панели Output (Cmd+Shift+U), пункт MCP Logs в выпадающем списке.
Файл .mcp.json в корне проекта или ~/.copilot/mcp-config.json для всех проектов. Подробно о VS Code
{
"mcpServers": {
"moodle": {
"type": "stdio",
"command": "python",
"args": ["<путь к Moodle-MCP>/server.py"],
"env": {
"MOODLE_URL": "https://<ваш Moodle>",
"MOODLE_TOKEN": "<ваш токен>"
}
}
}
}Проверка: Попросите Copilot выполнить безобидную задачу через сервер и раскройте вызов инструмента в чате. Одна запись в конфиге подключение не подтверждает.
Файл ~/.qwen/settings.json или .qwen/settings.json в проекте. Подробно о Qwen Code
{
"mcpServers": {
"moodle": {
"command": "python",
"args": ["<путь к Moodle-MCP>/server.py"],
"env": {
"MOODLE_URL": "https://<ваш Moodle>",
"MOODLE_TOKEN": "<ваш токен>"
}
}
}
}Проверка: Запустите qwen и введите /mcp: откроется окно управления серверами. Из терминала статус покажет qwen mcp list.
Файл ~/.gemini/settings.json или .gemini/settings.json в проекте. Подробно о Gemini CLI
{
"mcpServers": {
"moodle": {
"command": "python",
"args": ["<путь к Moodle-MCP>/server.py"],
"env": {
"MOODLE_URL": "https://<ваш Moodle>",
"MOODLE_TOKEN": "<ваш токен>"
}
}
}
}Проверка: gemini mcp list показывает каждый сервер, его настройки и статус Connected или Disconnected. В сессии /mcp выводит CONNECTED, CONNECTING или DISCONNECTED и список инструментов.
Файл opencode.json в папке проекта или ~/.config/opencode/opencode.json. Подробно о OpenCode
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"servers": {
"moodle": {
"type": "local",
"command": ["python", "<путь к Moodle-MCP>/server.py"],
"environment": {
"MOODLE_URL": "https://<ваш Moodle>",
"MOODLE_TOKEN": "<ваш токен>"
}
}
}
}
}Проверка: opencode mcp list показывает состояние каждого сервера, подключённый выглядит как ✓ context7 connected. Внутри OpenCode то же видно в /mcps.
Настройки → Разработчик → Изменить конфиг: файл claude_desktop_config.json. После правки перезапустите приложение. Подробно о Claude Desktop
{
"mcpServers": {
"moodle": {
"command": "python",
"args": ["<путь к Moodle-MCP>/server.py"],
"env": {
"MOODLE_URL": "https://<ваш Moodle>",
"MOODLE_TOKEN": "<ваш токен>"
}
}
}
}Проверка: Нажмите «Add files, connectors, and more /» в левом нижнем углу поля ввода, наведите на Connectors и откройте Manage connectors. Выберите сервер, чтобы увидеть его инструменты.
Вкладка Program → Install → Edit mcp.json. Подробно о LM Studio
{
"mcpServers": {
"moodle": {
"command": "python",
"args": ["<путь к Moodle-MCP>/server.py"],
"env": {
"MOODLE_URL": "https://<ваш Moodle>",
"MOODLE_TOKEN": "<ваш токен>"
}
}
}
}Проверка: Попросите модель в чате выполнить задачу через инструмент сервера. Через API сервер из mcp.json вызывают по id в integrations, например mcp/playwright.
Инструменты сервера
moodle_weekly_digestсводит новое, сроки и долги за неделюmoodle_pending_assignmentsпоказывает несданные задания и срокиmoodle_quiz_statusпоказывает попытки и баллы тестовmoodle_recent_updatesпоказывает новое за N днейmoodle_list_coursesперечисляет курсыmoodle_course_filesперечисляет файлы курсаmoodle_download_weekскачивает файлы неделиmoodle_site_infoпроверяет токен и доступные функцииmoodle_setup_guideобъясняет, как получить токенmoodle_config_statusпроверяет настройку сервера31 инструмент для студента: оценки и прогресс, поиск по материалам, разбор задания на шаги и план, скачивание файлов курса, самозапись на курс; запуск через uvx.
Как подключить
Что сделать до подключения
uv с командой uvx
MOODLE_TOKENоткройте https://<ваш Moodle>/user/managetoken.php и возьмите токен со службой Moodle mobile web service
Конфиг для вашего клиента
Команда в терминале, в папке проекта. Флаг --scope user подключит сервер для всех проектов. Подробно о Claude Code
claude mcp add --env 'MOODLE_URL=https://<ваш Moodle>/webservice/rest/server.php' --env 'MOODLE_TOKEN=<ваш токен>' --transport stdio moodle-mcp \
-- uvx moodle-mcpПроверка: claude mcp list показывает статус рядом с каждым сервером: ✔ Connected, ! Needs authentication или ✘ Failed to connect. Внутри сессии то же видно по команде /mcp.
Файл ~/.codex/config.toml или .codex/config.toml в доверенном проекте. Можно и командой codex mcp add. Подробно о Codex
[mcp_servers.moodle-mcp]
command = "uvx"
args = ["moodle-mcp"]
[mcp_servers.moodle-mcp.env]
MOODLE_URL = "https://<ваш Moodle>/webservice/rest/server.php"
MOODLE_TOKEN = "<ваш токен>"Проверка: В интерфейсе codex введите /mcp: появится список активных серверов. Из терминала то же покажет codex mcp list.
Файл ~/.cursor/mcp.json для всех проектов или .cursor/mcp.json в папке проекта. Подробно о Cursor
{
"mcpServers": {
"moodle-mcp": {
"command": "uvx",
"args": ["moodle-mcp"],
"env": {
"MOODLE_URL": "https://<ваш Moodle>/webservice/rest/server.php",
"MOODLE_TOKEN": "<ваш токен>"
}
}
}
}Проверка: Откройте Customize в боковой панели: там список серверов с переключателями. Ошибки подключения смотрите в панели Output (Cmd+Shift+U), пункт MCP Logs в выпадающем списке.
Файл .mcp.json в корне проекта или ~/.copilot/mcp-config.json для всех проектов. Подробно о VS Code
{
"mcpServers": {
"moodle-mcp": {
"type": "stdio",
"command": "uvx",
"args": ["moodle-mcp"],
"env": {
"MOODLE_URL": "https://<ваш Moodle>/webservice/rest/server.php",
"MOODLE_TOKEN": "<ваш токен>"
}
}
}
}Проверка: Попросите Copilot выполнить безобидную задачу через сервер и раскройте вызов инструмента в чате. Одна запись в конфиге подключение не подтверждает.
Файл ~/.qwen/settings.json или .qwen/settings.json в проекте. Подробно о Qwen Code
{
"mcpServers": {
"moodle-mcp": {
"command": "uvx",
"args": ["moodle-mcp"],
"env": {
"MOODLE_URL": "https://<ваш Moodle>/webservice/rest/server.php",
"MOODLE_TOKEN": "<ваш токен>"
}
}
}
}Проверка: Запустите qwen и введите /mcp: откроется окно управления серверами. Из терминала статус покажет qwen mcp list.
Файл ~/.gemini/settings.json или .gemini/settings.json в проекте. Подробно о Gemini CLI
{
"mcpServers": {
"moodle-mcp": {
"command": "uvx",
"args": ["moodle-mcp"],
"env": {
"MOODLE_URL": "https://<ваш Moodle>/webservice/rest/server.php",
"MOODLE_TOKEN": "<ваш токен>"
}
}
}
}Проверка: gemini mcp list показывает каждый сервер, его настройки и статус Connected или Disconnected. В сессии /mcp выводит CONNECTED, CONNECTING или DISCONNECTED и список инструментов.
Файл opencode.json в папке проекта или ~/.config/opencode/opencode.json. Подробно о OpenCode
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"servers": {
"moodle-mcp": {
"type": "local",
"command": ["uvx", "moodle-mcp"],
"environment": {
"MOODLE_URL": "https://<ваш Moodle>/webservice/rest/server.php",
"MOODLE_TOKEN": "<ваш токен>"
}
}
}
}
}Проверка: opencode mcp list показывает состояние каждого сервера, подключённый выглядит как ✓ context7 connected. Внутри OpenCode то же видно в /mcps.
Настройки → Разработчик → Изменить конфиг: файл claude_desktop_config.json. После правки перезапустите приложение. Подробно о Claude Desktop
{
"mcpServers": {
"moodle-mcp": {
"command": "uvx",
"args": ["moodle-mcp"],
"env": {
"MOODLE_URL": "https://<ваш Moodle>/webservice/rest/server.php",
"MOODLE_TOKEN": "<ваш токен>"
}
}
}
}Проверка: Нажмите «Add files, connectors, and more /» в левом нижнем углу поля ввода, наведите на Connectors и откройте Manage connectors. Выберите сервер, чтобы увидеть его инструменты.
Вкладка Program → Install → Edit mcp.json. Подробно о LM Studio
{
"mcpServers": {
"moodle-mcp": {
"command": "uvx",
"args": ["moodle-mcp"],
"env": {
"MOODLE_URL": "https://<ваш Moodle>/webservice/rest/server.php",
"MOODLE_TOKEN": "<ваш токен>"
}
}
}
}Проверка: Попросите модель в чате выполнить задачу через инструмент сервера. Через API сервер из mcp.json вызывают по id в integrations, например mcp/playwright.
Инструменты сервера
get_my_coursesперечисляет мои курсыget_course_contentпоказывает разделы и модули курсаsearch_course_materialsищет по материалам курсовget_upcoming_deadlinesпоказывает ближайшие срокиget_overdue_assignmentsпоказывает просроченные заданияget_assignment_statusпоказывает статус сдачи и оценкуextract_assignment_requirementsвыделяет требования заданияdecompose_taskразбивает задание на подзадачиcreate_implementation_planстроит план выполненияget_gradesпоказывает оценкиget_course_progressпоказывает прогресс по курсуget_study_loadпоказывает нагрузку по неделямdaily_briefingдаёт сводку на деньdownload_course_filesскачивает все файлы курсаsearch_coursesищет курсы в каталогеself_enrol_courseзаписывает на курсask_moodleотвечает на вопрос по данным MoodleПоказано 17 из 31.
Для преподавателя одного курса: список студентов, сданные работы и попытки тестов, выставление оценок и комментариев.
Как подключить
Что сделать до подключения
Node.js 14 или новее
Склонировать репозиторий, выполнить npm install и npm run build
MOODLE_API_TOKENадминистратор: Site Administration → Plugins → Web Services → Manage tokens → новый токен с правами на управление курсом
Конфиг для вашего клиента
Команда в терминале, в папке проекта. Флаг --scope user подключит сервер для всех проектов. Подробно о Claude Code
claude mcp add --env 'MOODLE_API_URL=https://<ваш Moodle>/webservice/rest/server.php' --env 'MOODLE_API_TOKEN=<токен API>' --env 'MOODLE_COURSE_ID=<ID курса>' --transport stdio moodle-mcp-server \
-- node '<путь к moodle-mcp-server>/build/index.js'Проверка: claude mcp list показывает статус рядом с каждым сервером: ✔ Connected, ! Needs authentication или ✘ Failed to connect. Внутри сессии то же видно по команде /mcp.
Файл ~/.codex/config.toml или .codex/config.toml в доверенном проекте. Можно и командой codex mcp add. Подробно о Codex
[mcp_servers.moodle-mcp-server]
command = "node"
args = ["<путь к moodle-mcp-server>/build/index.js"]
[mcp_servers.moodle-mcp-server.env]
MOODLE_API_URL = "https://<ваш Moodle>/webservice/rest/server.php"
MOODLE_API_TOKEN = "<токен API>"
MOODLE_COURSE_ID = "<ID курса>"Проверка: В интерфейсе codex введите /mcp: появится список активных серверов. Из терминала то же покажет codex mcp list.
Файл ~/.cursor/mcp.json для всех проектов или .cursor/mcp.json в папке проекта. Подробно о Cursor
{
"mcpServers": {
"moodle-mcp-server": {
"command": "node",
"args": ["<путь к moodle-mcp-server>/build/index.js"],
"env": {
"MOODLE_API_URL": "https://<ваш Moodle>/webservice/rest/server.php",
"MOODLE_API_TOKEN": "<токен API>",
"MOODLE_COURSE_ID": "<ID курса>"
}
}
}
}Проверка: Откройте Customize в боковой панели: там список серверов с переключателями. Ошибки подключения смотрите в панели Output (Cmd+Shift+U), пункт MCP Logs в выпадающем списке.
Файл .mcp.json в корне проекта или ~/.copilot/mcp-config.json для всех проектов. Подробно о VS Code
{
"mcpServers": {
"moodle-mcp-server": {
"type": "stdio",
"command": "node",
"args": ["<путь к moodle-mcp-server>/build/index.js"],
"env": {
"MOODLE_API_URL": "https://<ваш Moodle>/webservice/rest/server.php",
"MOODLE_API_TOKEN": "<токен API>",
"MOODLE_COURSE_ID": "<ID курса>"
}
}
}
}Проверка: Попросите Copilot выполнить безобидную задачу через сервер и раскройте вызов инструмента в чате. Одна запись в конфиге подключение не подтверждает.
Файл ~/.qwen/settings.json или .qwen/settings.json в проекте. Подробно о Qwen Code
{
"mcpServers": {
"moodle-mcp-server": {
"command": "node",
"args": ["<путь к moodle-mcp-server>/build/index.js"],
"env": {
"MOODLE_API_URL": "https://<ваш Moodle>/webservice/rest/server.php",
"MOODLE_API_TOKEN": "<токен API>",
"MOODLE_COURSE_ID": "<ID курса>"
}
}
}
}Проверка: Запустите qwen и введите /mcp: откроется окно управления серверами. Из терминала статус покажет qwen mcp list.
Файл ~/.gemini/settings.json или .gemini/settings.json в проекте. Подробно о Gemini CLI
{
"mcpServers": {
"moodle-mcp-server": {
"command": "node",
"args": ["<путь к moodle-mcp-server>/build/index.js"],
"env": {
"MOODLE_API_URL": "https://<ваш Moodle>/webservice/rest/server.php",
"MOODLE_API_TOKEN": "<токен API>",
"MOODLE_COURSE_ID": "<ID курса>"
}
}
}
}Проверка: gemini mcp list показывает каждый сервер, его настройки и статус Connected или Disconnected. В сессии /mcp выводит CONNECTED, CONNECTING или DISCONNECTED и список инструментов.
Файл opencode.json в папке проекта или ~/.config/opencode/opencode.json. Подробно о OpenCode
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"servers": {
"moodle-mcp-server": {
"type": "local",
"command": ["node", "<путь к moodle-mcp-server>/build/index.js"],
"environment": {
"MOODLE_API_URL": "https://<ваш Moodle>/webservice/rest/server.php",
"MOODLE_API_TOKEN": "<токен API>",
"MOODLE_COURSE_ID": "<ID курса>"
}
}
}
}
}Проверка: opencode mcp list показывает состояние каждого сервера, подключённый выглядит как ✓ context7 connected. Внутри OpenCode то же видно в /mcps.
Настройки → Разработчик → Изменить конфиг: файл claude_desktop_config.json. После правки перезапустите приложение. Подробно о Claude Desktop
{
"mcpServers": {
"moodle-mcp-server": {
"command": "node",
"args": ["<путь к moodle-mcp-server>/build/index.js"],
"env": {
"MOODLE_API_URL": "https://<ваш Moodle>/webservice/rest/server.php",
"MOODLE_API_TOKEN": "<токен API>",
"MOODLE_COURSE_ID": "<ID курса>"
}
}
}
}Проверка: Нажмите «Add files, connectors, and more /» в левом нижнем углу поля ввода, наведите на Connectors и откройте Manage connectors. Выберите сервер, чтобы увидеть его инструменты.
Вкладка Program → Install → Edit mcp.json. Подробно о LM Studio
{
"mcpServers": {
"moodle-mcp-server": {
"command": "node",
"args": ["<путь к moodle-mcp-server>/build/index.js"],
"env": {
"MOODLE_API_URL": "https://<ваш Moodle>/webservice/rest/server.php",
"MOODLE_API_TOKEN": "<токен API>",
"MOODLE_COURSE_ID": "<ID курса>"
}
}
}
}Проверка: Попросите модель в чате выполнить задачу через инструмент сервера. Через API сервер из mcp.json вызывают по id в integrations, например mcp/playwright.
Инструменты сервера
get_coursesчитает сведения о курсахlist_studentsперечисляет студентов курсаget_assignmentsперечисляет заданияget_student_submissionsсмотрит работы студентаprovide_assignment_feedbackставит оценку и комментарийget_quizzesперечисляет тестыget_quiz_attemptsсмотрит попытки тестаprovide_quiz_feedbackкомментирует попытку тестаЧто попросить агента
Для каких задач
Ограничения
На сайте Moodle должны быть включены Web Services и протокол REST, а у аккаунта — право webservice/rest:use
Faixiang не видит сроки Turnitin: у этого модуля нет поля срока сдачи
loyaniu умеет записывать на курс, а peancor ставит оценки: оба меняют данные в Moodle
Moodle MCP Server от peancor последний раз обновлялся в феврале 2026 года и нужен токен администратора с правами на курс
Если не работает
get_token.py отвечает invalidlogin
Ошибка 502 или обрыв соединения во время вызова
Инструменты возвращают пустые списки
Сроков тестов нет в moodle_weekly_digest
Кракозябры в терминале Windows
Какую реализацию выбрать
| Реализация | Кто делает | Звёзды | Запуск | Ключ | Инструменты | Обновлён |
|---|---|---|---|---|---|---|
| Moodle-MCP (Faixiang) | Faixiang | 205 | локально | токен | 10 | 1 ноября 2026 |
| Moodle-MCP (loyaniu) | loyaniu | 57 | локально | токен | 31 | 6 ноября 2026 |
| Moodle MCP Server (peancor) | peancor | 45 | локально | токен | 8 | 22 февраля 2026 |