A side-by-side look at the Canvas MCP and Moodle MCP Server Aql MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Canvas MCP for education work as a local process; choose Moodle MCP Server Aql for education as a local process. You can also run both side by side in one mcpServers block.
CANVAS_BASE_URL, CANVAS_TOKEN, CANVAS_DUMP_DIR.list_courses, list_assignments, list_modules.MOODLE_URL, MOODLE_TOKEN.list_courses, get_course, list_course_users.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Education | Education |
| Quality signal | 59/100 · Good | 56/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | API key required | Not declared |
| Pricing | Free | Not declared |
| Required env vars | CANVAS_BASE_URLCANVAS_TOKENCANVAS_DUMP_DIR | MOODLE_URLMOODLE_TOKEN |
| Verified owner | Community listing | Community listing |
| GitHub stars | 4 | 1 |
| Directory activity | 4 views 0 installs 0 upvotes | 0 views 0 installs 0 upvotes |
| Tools | 10 | 10 |
| Full listing | View Canvas MCP | View Moodle MCP Server Aql |
list_courseslist_assignmentslist_moduleslist_announcementsget_pageget_file_infoget_gradesplanner_itemsupcoming_eventstodolist_coursesFull course catalog with category drill-downget_courseDetail view for any courselist_course_usersEnrolled users with roles and access data (now supports course name search with interactive selection)list_assignmentsAll assignments with due dateslist_categoriesFull hierarchy with exact parent resolutionget_site_infoInstance overview — site name, version, course countget_userDetail view for a Moodle userlist_user_coursesCourses for a specific usersearch_usersUser search by standard Moodle identity fieldssearch_courses_by_nameSearch for courses by name with partial matching and interactive selectionPaste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"admin978-canvas-mcp": {
"command": "uvx",
"args": [
"canvas-local-mcp"
],
"env": {
"CANVAS_BASE_URL": "YOUR_CANVAS_BASE_URL_HERE",
"CANVAS_TOKEN": "YOUR_CANVAS_TOKEN_HERE",
"CANVAS_DUMP_DIR": "YOUR_CANVAS_DUMP_DIR_HERE"
}
}
}
}
{
"mcpServers": {
"moodle-mcp-server-aql": {
"command": "npx",
"args": [
"-y",
"moodle-mcp-server-aql"
],
"env": {
"MOODLE_URL": "YOUR_MOODLE_URL_HERE",
"MOODLE_TOKEN": "YOUR_MOODLE_TOKEN_HERE"
}
}
}
}