Connect Claude Desktop to your Canvas LMS data through a Chrome extension and native messaging host.
The extension runs in your browser, fetches data via Canvas API, and forwards it to the native host which communicates with Claude Desktop using the MCP protocol.
canvas-mcp-server/
├── extension/ # Chrome extension
│ ├── manifest.json
│ ├── background.js # Service worker
│ ├── content.js # Canvas API integration
│ └── popup.* # Extension UI
└── native-host/ # MCP server
├── host.js # Main server
├── install.sh # Unix installer
└── install.bat # Windows installer
- Access courses, assignments, and submissions
- View calendar events and upcoming deadlines
- Browse course modules and analytics
- Auto-detect Canvas instance URLs
- Real-time data synchronization
-
Install Claude Desktop integration:
- Download:
canvas-mcp-server-native-host.dxt - Open Claude Desktop → Extensions
- Drag the
.dxtfile into the extensions area - Done!
- Download:
-
Install Chrome Extension:
- Download: Latest Extension Release
- Extract
canvas-mcp-server-extension-v*.zip - Open Chrome →
chrome://extensions/ - Enable "Developer mode"
- Click "Load unpacked" → select extracted folder
-
Configure:
- Click the extension icon in Chrome
- Enter your Canvas URL or click "Auto-Detect"
- Click "Refresh Canvas Data"
-
Test:
- Ask Claude Desktop: "What are my Canvas courses?"
git clone https://github.com/jonasneves/canvas-mcp-server.git
cd canvas-mcp-server
# Install native host
cd native-host
npm install
./install.sh # or install.bat on Windows
# Load extension from ./extension folder
# Follow Chrome extension steps above- Node.js 16 or higher
- Chrome or Edge browser
- Claude Desktop
- Active Canvas LMS account
Dashboard & Planning
list_courses- Get all active courseslist_all_assignments- Get all assignments with submission status across all courseslist_upcoming_events- Get upcoming assignments and eventslist_calendar_events- Get calendar events within a date rangeget_missing_submissions- Get all missing/unsubmitted assignments across coursesget_todo_items- Get Canvas to-do list (unsubmitted, unread items)get_planner_items- Get upcoming planner items including quizzes and student to-dos
Grades & Assignments
get_course_assignments- Get assignments for a specific courseget_assignment_details- Get detailed assignment info including rubricsget_assignment_groups- Get grade weights by group (e.g. Homework 20%, Exams 50%)get_course_grades- Get current and final grades; omitcourse_idfor all coursesget_user_submissions- Get all submissions for a course
Course Content
list_course_modules- Get course modules and itemsget_course_announcements- Get recent instructor announcementsget_course_discussions- Get discussion topics for a courseget_course_pages- Get wiki pages and syllabusget_course_files- Get files uploaded to a courseget_course_analytics- Get page views, participations, tardiness (if enabled)
User
get_user_profile- Get profile info: name, email, bio, pronouns, timezone
Extension not syncing:
- Verify you're logged into Canvas in Chrome
- Check Canvas URL configuration in extension
- Inspect extension console:
chrome://extensions/→ Details → Inspect views
Claude Desktop not connecting:
- Check logs:
~/canvas-mcp-host.log(macOS/Linux) or%USERPROFILE%\canvas-mcp-host.log(Windows) - Restart Claude Desktop after configuration changes
- Verify native host installation ran successfully
Canvas API rate limiting:
- Extension caches data to minimize requests
- If rate limited, wait a few minutes before syncing
Analytics unavailable:
- The
get_course_analyticstool requires your Canvas instance to have analytics enabled
- HTTP server only listens on localhost (127.0.0.1)
- No credentials stored; uses browser's Canvas session
- All data stays local on your machine
Contributions welcome! Please open an issue before submitting major changes.
MIT
