MCP server for easy access to education data through your Canvas LMS instance.
Canvas LMS MCP server exists for a simple reason — assistants are far more useful when they can act on Canvas LMS directly instead of describing what you should do. MCP server for easy access to education data through your Canvas LMS instance.
A minimal Canvas LMS MCP (Machine Conversation Protocol) server for easy access to education data through your Canvas LMS instance. This server provides a bridge between AI systems (like Cursor) and Canvas Learning Management System.
Once Canvas LMS is connected, these are the calls the assistant has available:
Prerequisites — The Prerequisites tool exposed by this serverCourses — The Courses tool exposed by this serverlist_courses — Parameters: - page (optional, default=1): Page number (1-indexed) - items_per_page (optional, default=10): Number of items per pageget_course — Parameters: - course_id (required): Course ID - include (optional): List of additional data to includeget_course_syllabus — The get_course_syllabus tool exposed by this serverget_course_modules — Parameters: - course_id (required): Course ID - include (optional): List of additional data to include - per_page (optional, default=100): Number ofget_module_items — Parameters: - course_id (required): Course ID - module_id (required): Module IDAssignments — The Assignments tool exposed by this serverlist_assignments — Parameters: - course_id (required): Course ID - bucket (required): Filter by "past", "overdue", "undated", "ungraded", "unsubmitted", "upcoming", orget_assignment — Parameters: - course_id (required): Course ID - assignment_id (required): Assignment IDlist_assignment_groups — List assignment groups for a course (shows grade weighting/categories)Pages — The Pages tool exposed by this server@smithery/cli on npm is all you need. Most clients run it directly, so configuration is a few lines and a restart.
You will need 2 environment variables: CANVAS_API_TOKEN, CANVAS_BASE_URL. The server will not start without them, which is usually why the tools fail to appear on a first run. Keep credentials in your client's env block or a secrets manager rather than in a file you might commit.
uv package manager (recommended)Plenty of planning and project tracking servers cover similar ground. The differences that matter in practice are scope of access and how much setup stands between you and a working tool call. Canvas LMS's toolset — Prerequisites, Courses, list_courses and 11 more — is a fair guide to whether it matches your workflow.
We check each listing at SyncDev against the project's documentation before it goes live — if something here drifts out of date, it is a bug worth reporting.
| Tool | What it does |
|---|---|
| Prerequisites | The Prerequisites tool exposed by this server. |
| Courses | The Courses tool exposed by this server. |
| list_courses | Parameters: - page (optional, default=1): Page number (1-indexed) - items_per_page (optional, default=10): Number of items per page |
| get_course | Parameters: - course_id (required): Course ID - include (optional): List of additional data to include |
| get_course_syllabus | The get_course_syllabus tool exposed by this server. |
| get_course_modules | Parameters: - course_id (required): Course ID - include (optional): List of additional data to include - per_page (optional, default=100): Number of items per page |
| get_module_items | Parameters: - course_id (required): Course ID - module_id (required): Module ID |
| Assignments | The Assignments tool exposed by this server. |
| list_assignments | Parameters: - course_id (required): Course ID - bucket (required): Filter by "past", "overdue", "undated", "ungraded", "unsubmitted", "upcoming", or "future" - order_by (required): Order by "due_at", "position", or "name |
| get_assignment | Parameters: - course_id (required): Course ID - assignment_id (required): Assignment ID |
| list_assignment_groups | List assignment groups for a course (shows grade weighting/categories). |
| Pages | The Pages tool exposed by this server. |
| get_page | Parameters: - course_id (required): Course ID - page_slug (required): Page URL slug (e.g., "syllabus", "course-handbook") |
| Submissions | The Submissions tool exposed by this server. |
{
"mcpServers": {
"canvas": {
"command": "uvx",
"args": ["canvas-lms-mcp"],
"env": {
"CANVAS_API_TOKEN": "your_canvas_api_token",
"CANVAS_BASE_URL": "https://your-institution.instructure.com"
}
}
}
}Configuration as documented by the project. Restart the client after saving.
uv package manager (recommended)| Variable | Description | Required |
|---|---|---|
| CANVAS_API_TOKEN | Credential the server authenticates with. | Yes |
| CANVAS_BASE_URL | Endpoint or connection string the server talks to. | Yes |
Your workspace, on speaking terms with AI — search, read and write Notion pages and databases.
Issue tracking at the speed of conversation — Linear's official hosted server with OAuth and zero install.
Search and read your Drive — Docs, Sheets and files become context your assistant can actually use.
Your assistant inside the workspace — read channels, search history, post messages and tame the noise.
Metabase ships its own MCP endpoint — search your BI content, build and run queries, and save questions and dashboards without leaving the chat.
Stop letting your assistant hallucinate n8n node parameters — this server hands it the real schemas, templates and validation.