Canvas LMS MCP server
Canvas LMS in any MCP client, through Memtro: Canvas LMS does not publish this server. Memtro's Canvas LMS connector reads Canvas LMS 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
Canvas LMS on your institution's own Canvas site: courses with term, teachers and student counts, a course's people by name, modules, assignments and their due dates, and announcements. Can post announcements, send and reply to inbox messages, create, edit and delete assignments, create and edit discussions and reply in them, create pages and modules, add module items, add calendar events, and enrol or remove a user. Never reads grades, submissions or messages.
Reads
canvas_coursesCourses on Canvas that the connection's account belongs to: name, code, term, dates, teachers and how many students are enrolled…canvas_modulesThe modules of a Canvas course in order, with their items (pages, assignments, quizzes, files, links) and whether each is published.canvas_assignmentsAssignments in a Canvas course, ordered by due date: name, due, unlock and lock dates, points possible, submission types, whether published and…canvas_announcementsAnnouncements posted in one or more Canvas courses over a date range (default: the last 14 days): title, the text cut short, who posted it and when.canvas_course_peoplePeople in a Canvas course by name, with their Canvas user id, for naming the recipients of a message or the user to enrol.
Acts, when you ask
These change something in Canvas LMS. 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.
canvas_create_draft_discussionCreates a DRAFT discussion topic in a Canvas course: unpublished…canvas_post_announcementPosts an announcement to a Canvas course as the service account.canvas_send_messageSends a Canvas inbox message from the service account to named users (Canvas user ids from canvas_course_people, at most 50).canvas_reply_to_conversationReplies in an existing Canvas inbox conversation as the service account.canvas_create_assignmentCreates an assignment in a Canvas course as the service account.canvas_update_assignmentChanges a Canvas assignment's name, description, dates, points or published state as the service account.canvas_delete_assignmentDeletes a Canvas assignment as the service account.canvas_update_discussionEdits a Canvas discussion or announcement as the service account: its title or text, when it posts or locks, whether it is pinned…canvas_post_discussion_replyPosts a reply in a Canvas discussion as the service account.canvas_create_calendar_eventAdds an event to a Canvas calendar as the service account: a course's (everyone in the course sees it), a group's, or a user's own.canvas_create_pageCreates a page in a Canvas course as the service account.canvas_create_moduleCreates a module in a Canvas course as the service account.canvas_update_moduleRenames, moves, schedules, publishes or unpublishes a Canvas module as the service account.canvas_add_module_itemAdds an item to a Canvas module as the service account: an existing assignment, quiz, discussion, file or page, a sub-heading, or an external link.canvas_enroll_userEnrols a Canvas user in a course in a role, as the service account (which needs permission to manage enrolments).canvas_remove_enrollmentEnds a Canvas course enrolment (the enrolment id, not the user id) as the service account.
Connect it
First connect Canvas LMS on Dashboard → Connections, then add Memtro to your client once. The Canvas LMS 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 Canvas LMS 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
- › What is due in Biology 101 this week?
- › How many students are on Biology 101?
- › Which modules are still unpublished in Chemistry 201?
- › Draft a discussion topic for week 3 of Biology 101 on the lab results.
- › Post an announcement to Biology 101 that Thursday's lab moves to room 4.
Questions
- Is this an official Canvas LMS MCP server?
- No. It is Memtro's MCP server with Memtro's Canvas LMS connector behind it: the connector reads Canvas LMS through its API with the credentials you connect on Dashboard → Connections, and Canvas LMS 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 Canvas LMS?
- Only when you ask, and only what it has been granted: create a draft (unpublished) discussion topic in a course; post an announcement to a course; send an inbox message to named users; reply in an inbox conversation; create an assignment; change an assignment's name, dates, points, description or published state; delete an assignment; edit, publish or unpublish a discussion or announcement; reply in a discussion; add an event to a course, group or user calendar; create a course page; create a module; rename, reorder, publish or unpublish a module; add an item to a module; enrol a user in a course; conclude, deactivate or delete an enrolment. 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.