enauczanie-mcp
Provides read-only access to a student's account on a Moodle instance (eNauczanie PG, Gdańsk University of Technology). Tools cover courses (listing courses, browsing the course contents tree with dates, completion and access restrictions, fetching module descriptions, downloading files), homework (deadlines across all courses, assignments and their submission/grade/feedback status), final grades and per-course grade items, forum discussions and posts (including announcements), quiz reviews of finished attempts and H5P exercise text, plus recent changes and notifications.
Click on "Deploy 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., "@enauczanie-mcpwhat do I have due in the next two weeks?"
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.
enauczanie-mcp
Local MCP server that lets Claude Code read a student's account on eNauczanie PG (the Moodle platform of Gdańsk University of Technology) with the student's own web service token. Everything is read-only: the server never submits, posts, starts quiz attempts or marks anything as read.
Tools:
Courses:
list_courses,get_course_contents(tree with dates, completion and access restrictions),get_module_text(full description, page body or assignment instructions),download_file.Homework:
list_deadlines(all courses),list_assignments,get_assignment_status(submission, grade, teacher feedback).Grades:
get_grades(final grades, or the grade items of one course).Forums:
get_forum_discussions(announcements are forums of typenews),get_discussion_posts.Exercises:
get_quiz_review(finished attempts with chosen and correct answers),get_h5p_content(text of H5P exercises).What is new:
get_recent_changes,get_notifications.
Requirements
Python 3.10 or newer, Linux with
xdg-mimefor the automatic token capture (other systems work with the manual step below).Claude Code with MCP support.
An eNauczanie account. Login is CAS-only (Moja PG), so the token comes from Moodle's mobile-app launch flow instead of a password.
Related MCP server: Moodle Student MCP
Install
git clone https://github.com/Zambrzyckii/enauczanie-mcp.git
cd enauczanie-mcp
python3 -m venv .venv && .venv/bin/pip install -e .On Windows the venv keeps its programs in .venv\Scripts instead of .venv/bin, so use
.venv\Scripts\pip here. When registering the server, replace "$(pwd)/.venv/bin/python"
with the full path to .venv\Scripts\python.exe.
Token
One-time: register the handler for moodlemobile:// links (it writes a .desktop entry
pointing at this checkout).
python3 get_token.py --install-handlerThen, whenever the token expires or the academic year changes:
python3 get_token.pyOpen the printed URL in your browser, log in, accept the prompt to open the link with
"Moodle Token Handler". The token lands in .env (MOODLE_URL, MOODLE_TOKEN, file
mode 600) and a summary in token_result.txt.
Without xdg (macOS, Windows, WSL): open the printed URL, log in, copy the
moodlemobile://token=... address the browser tries to open and run
python3 get_token.py 'moodlemobile://token=...'.
The instance is per academic year. For a new year set MOODLE_URL (for example
https://enauczanie.pg.edu.pl/2026) in the environment before running get_token.py.
Register in Claude Code
claude mcp add enauczanie -s user -- "$(pwd)/.venv/bin/python" -m enauczanie_mcpStart a new Claude Code session and ask, for example, what is due in the next two weeks, for the grades of a course, for the latest announcements or for a review of a finished quiz.
Prebuilt image
Each release publishes an image to GHCR and attaches a wheel and an sdist. Both hold only the
server, so the token still comes from get_token.py in a clone. Mount the download folder at
the same path as on the host, so the paths that download_file returns open outside the
container.
mkdir -p ~/enauczanie-downloads
claude mcp add enauczanie -s user -- docker run -i --rm --env-file "$(pwd)/.env" \
--user "$(id -u):$(id -g)" \
-e ENAUCZANIE_DOWNLOAD_DIR="$HOME/enauczanie-downloads" \
-v "$HOME/enauczanie-downloads:$HOME/enauczanie-downloads" \
ghcr.io/zambrzyckii/enauczanie-mcp:0.1.0How it works
Claude Code starts the server as a child process and talks to it over stdio. Each tool makes
one or more calls to Moodle's REST web service (/webservice/rest/server.php), turns HTML into
plain text and cuts long texts and lists, so a course tree or a forum thread fits the model's
context.
Path | Role |
| tool definitions and the instructions sent to the model |
| REST calls, concurrent calls and checked file downloads |
| reads |
| HTML to text, the course tree and size limits |
| shape Moodle's answers for each group of tools |
| reads the text out of a downloaded H5P package |
| gets the token through the mobile-app login flow |
There are no automated tests.
Security
The token is stored only in
.env, which is gitignored together withtoken_result.txt,functions.jsonanddownloads/. Never commit or share it; it gives read access to your whole account.The server sends the token only to the configured
MOODLE_URLand never puts it in a tool result or error message. File downloads accept onlypluginfile.phpURLs of that instance.Downloaded files land in
downloads/<course-slug>/<contextid>/..., mirroring Moodle's pluginfile path. Delete a file to re-download it.ENAUCZANIE_DOWNLOAD_DIRoverrides the location.Text returned by the tools was written by teachers and students. The server tells the model to treat it as content, not as instructions.
License
MIT, see LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
- platform7nOAuthtech.p7n
Connect Claude to your Platform7n workspaces — chat, links, and tasks. One-click OAuth.
Read-only access to your own crypto portfolio across 11+ exchanges and 20+ chains: holdings, full history, FIFO cost basis and P&L, fees and income. Ask Claude or ChatGPT about your portfolio; the connector can never trade, move funds or act as a login.
GA4, Google Ads and Search Console in Claude. Read-only OAuth, multi-account for agencies.
Give Claude only the Google Drive files you choose. Every action logged.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceProvides 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.10 npm18MIT
- AlicenseAqualityBmaintenanceEnables read-only querying of Moodle as a student, including courses, assignments, grades, forums, and files, using a personal web services token.11397 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables Claude to interact with Moodle via the official REST API for read-only tasks like listing courses, materials, assignments, submissions, and grades. Uses token-based authentication and emphasizes safe, no-write operations.2MIT
- AlicenseBqualityCmaintenanceEnables Claude to read courses, assignments, grades, announcements, files, and modules from Quercus (Canvas LMS) at the University of Toronto or any Canvas-based institution, using read-only access via a personal token.11MIT