Skip to main content
Glama
README.md
# ПГЭК Moodle MCP

MCP-сервер для Moodle Полоцкого государственного экономического колледжа:
каталог курсов, учебные материалы, задания, тесты, форумы — прямо из AI-ассистента.

- Сервер: `http://82.209.208.36:8080/moodle` (настраивается через `MOODLE_URL`)
- Стек: Python 3.10+, FastMCP (`mcp>=1.0,<2`), httpx, BeautifulSoup
- Версия: 0.1.0 · Лицензия: MIT

## Установка

```bash
py -m pip install -r requirements.txt
copy .env.example .env
# впиши MOODLE_SESSION (кука MoodleSession из браузера после входа на Moodle)
py server.py
```

## Подключение к Opencode / Claude Desktop

Скопируй `opencode.example.json` в `opencode.json` (для Opencode)
и впиши абсолютный путь к `server.py`. Либо добавь блок в свой MCP-конфиг:

```json
{
  "mcp": {
    "pgek-moodle": {
      "type": "local",
      "command": ["py", "C:\\path\\to\\pgek-moodle-mcp\\server.py"],
      "enabled": true
    }
  }
}
```

Настройки читаются из `.env` (загружается автоматически).

## Tools (14)

| Tool | Доступ | Что делает |
|---|---|---|
| `moodle_status` | — | URL, наличие токена/сессии, режим |
| `moodle_categories` | public | Категории: ПОИТ, БУАиК, право, логистика, IT-Кузница... |
| `moodle_courses_in_category` | public | Курсы категории, пагинация |
| `moodle_course_info` | public | Описание курса + преподаватели |
| `moodle_search` | public | Поиск по каталогу |
| `moodle_whoami` | session | Кто залогинен |
| `moodle_my_courses` | session/token | Мои курсы |
| `moodle_course_contents` | session | Разделы → модули всех типов (`by_type`, флаги hidden/restricted, тексты меток) |
| `moodle_module` | session | Деталка модуля: файлы, обсуждения форума, дедлайны задания, главы книги, внешняя цель ссылки |
| `moodle_module_by_url` | session | Любой внутренний URL: глава книги, обсуждение, `pluginfile.php` |
| `moodle_course_access` | session | Доступ к чужому курсу: full/denied + кому написать |
| `moodle_login` | — | Получить `MOODLE_TOKEN` по логину/паролю |
| `moodle_set_session` | — | Установить `MoodleSession` (мультиюзер) |
| `moodle_rest` | token | Прямой вызов Moodle WebService API |

Типовой флоу: `moodle_course_access` → `moodle_course_contents` → `moodle_module` / `moodle_module_by_url`.

## Важно про доступ

- Каталог (категории, описания, преподаватели) виден всем специальностям без логина.
- Материалы Moodle отдаёт только зачисленным. У чужих курсов нет самозаписи
  и гостевого доступа — `moodle_course_access` честно покажет границу.
- Один сервер — любые группы: студент ставит свою куку через `moodle_set_session`.

## Безопасность

- `.env` с `MOODLE_SESSION`/`MOODLE_TOKEN` — только локально, в git не коммитится.
- Сессия протухает: обнови куку из DevTools → Application → Cookies → `MoodleSession`.
- Не публикуй куку и токен — это твой вход в Moodle.