Moodle MCP server
Moodle in any MCP client, through Memtro: Moodle does not publish this server. Memtro's Moodle connector reads Moodle through its API with the credentials you connect, and one endpoint hands those tools, every other system you connect and Memtro's memory tools to Claude Code, Cursor, Claude Desktop or anything else that speaks Streamable HTTP, as you.
What the model can do
Moodle on your institution's own site: courses with enrolment counts, a course's sections and activities with their dates, assignments and their due dates, course announcements, forums, groups, and a course's people by name and role. Can post announcements and forum discussions, reply, lock or delete posts, send messages, add calendar events, enrol and unenrol users, create and edit courses, add group members and grant assignment extensions. Never reads grades, submissions or messages.
Reads
moodle_coursesCourses on Moodle: name, short name, category, start and end dates, whether visible, and…moodle_course_contentsA Moodle course's sections (weeks or topics) in order, with the activities in each (assignments, quizzes, pages, files, forums) and their dates…moodle_assignmentsAssignments in one or more Moodle courses, by due date: name, when submissions open, the due date, the cut-off and grading due dates…moodle_announcementsAnnouncements in a Moodle course (its news forum), newest first: subject, the text cut short, when posted and how many replies.moodle_forumsThe forums of a Moodle course: id, name and type ("news" is the course announcements forum).moodle_course_peoplePeople enrolled in a Moodle course: user id, full name and role names only, for naming who to message, enrol, unenrol, group or give an extension.moodle_course_groupsThe groups of a Moodle course: id and name, for moodle_add_group_members or a group calendar event.
Acts, when you ask
These change something in Moodle. The model is told to use them only when you ask for exactly that, and each one is granted by name: per team on a shared connection, by the owner on a personal one.
moodle_post_forum_discussionStarts a discussion in a Moodle forum as the token's user; in a course's announcements (news) forum this is an announcement to the whole course.moodle_reply_forum_postReplies to a Moodle forum post as the token's user (post_id may be a discussion's first post: moodle_announcements gives first_post_id).moodle_delete_forum_postPermanently deletes a Moodle forum post as the token's user; deleting a discussion's first post deletes the whole discussion with every reply.moodle_set_discussion_lockLocks a Moodle forum discussion so nobody can reply, or unlocks it, as the token's user.moodle_send_messageSends a private Moodle message from the token's user to each named user (user ids from moodle_course_people, at most 20; each gets their own copy).moodle_create_calendar_eventAdds one event to a Moodle calendar as the token's user: the user's own (type user), a course's…moodle_enrol_userEnrols one Moodle user in a course with a role, through manual enrolment, as the token's user (manual enrolment must be enabled in the course).moodle_unenrol_userRemoves one user's manual enrolment from a Moodle course as the token's user.moodle_update_courseChanges a Moodle course's full name, short name, summary, start or end date, or whether students can see it, as the token's user.moodle_create_courseCreates a Moodle course in a category as the token's user, hidden from students unless visible is true.moodle_add_group_membersAdds users (at most 20, by user id) to one Moodle course group, as the token's user.moodle_grant_assignment_extensionGives named users (at most 20, by user id) a later due date on one Moodle assignment, as the token's user.
Connect it
First connect Moodle on Dashboard → Connections, then add Memtro to your client once. The Moodle tools appear alongside the tools of everything else you have connected; nothing is configured per connector.
Claude Code
The Memtro plugin registers the server and a skill for when to use it; the tools are then available in every session.
claude plugin marketplace add memtro-org/claude-memtro
claude plugin install memtro@memtro --config api_key=sk-memtro-...Cursor
Add the server to .cursor/mcp.json in the project, or to the global file under ~/.cursor/.
{
"mcpServers": {
"memtro": {
"url": "https://platform.memtro.com/api/mcp",
"headers": {
"Authorization": "Bearer sk-memtro-..."
}
}
}
}Claude Desktop
Create a personal API key on Dashboard → Profile → API keys. In Claude Desktop add an MCP server of type HTTP with URL https://platform.memtro.com/api/mcp and the header Authorization: Bearer sk-memtro-…
OpenCode
A remote server in opencode.json.
{
"mcp": {
"memtro": {
"type": "remote",
"url": "https://platform.memtro.com/api/mcp",
"headers": {
"Authorization": "Bearer sk-memtro-..."
}
}
}
}Pi
One command: pi mcp add memtro --url https://platform.memtro.com/api/mcp --bearer-token-env-var MEMTRO_API_KEY. Tools arrive as mcp__memtro__*. The pi-memtro extension registers it for you, alongside Memtro as the model.
Any other client
Add an MCP server of type HTTP (Streamable HTTP, stateless) at https://platform.memtro.com/api/mcp with the header Authorization: Bearer sk-memtro-.... Codex, Zed, Windsurf, Cline and the SDKs all take a remote server this way.
Who may use it
The key identifies the person, and the server offers that person the tools they may use everywhere else in Memtro. A shared Moodle connection is used by the teams an administrator granted it to, tool by tool, on the Permissions page; a personal connection is used by its owner alone, and its tools that act stay off until the owner allows them. See Teams and permissions and Connectors.
Ask it like this
- › Which assignments are due in Biology this week?
- › How many are enrolled on Biology 101?
- › What is in week 3 of Chemistry 201?
- › What did we tell Biology students this week?
- › Give Sarah Chen and Tom Baker a week's extension on the Biology lab report.
Questions
- Is this an official Moodle MCP server?
- No. It is Memtro's MCP server with Memtro's Moodle connector behind it: the connector reads Moodle through its API with the credentials you connect on Dashboard → Connections, and Moodle publishes nothing here. The same endpoint carries every other system you connect and Memtro's memory tools.
- What does it cost?
- Nothing on top of Memtro. One price per organisation by its number of users, from $50 a month for up to 10 users after a 7-day free trial, with every connector, the MCP server, jobs and memory included. You bring your own model keys.
- Can it change anything in Moodle?
- Only when you ask, and only what it has been granted: post an announcement or start a forum discussion; reply to a forum post; delete a forum post or discussion; lock or unlock a forum discussion; send a Moodle message to a user; add an event to a course, group or the token user's calendar; enrol a user in a course with a role; unenrol a user from a course; change a course's name, summary, dates or visibility; create a course in a category; add a user to a course group; give named users an assignment extension. Every other tool reads, searches or lists. An administrator grants each acting tool by name per team, and a personal connection acts only after its owner allows it.
- Which clients work?
- Any MCP client that speaks Streamable HTTP: Claude Code, Cursor, Claude Desktop, OpenCode, Codex, Zed, Windsurf, Cline and the Anthropic and OpenAI SDKs. There is no local process to run; the server is remote and authenticated with your key.