Skip to main content
Glama

Canvas MCP Server V2.0

# Canvas MCP Server v2.2.0 > A comprehensive Model Context Protocol (MCP) server for Canvas LMS with complete student, instructor, and account administration functionality ## 🚀 What's New in v2.2.0 - **🔧 FIXED**: Course creation "page not found" error (missing `account_id` parameter) - **👨‍💼 Account Management**: Complete account-level administration tools - **📊 Reports & Analytics**: Generate and access Canvas account reports - **👥 User Management**: Create and manage users at the account level - **🏢 Multi-Account Support**: Handle account hierarchies and sub-accounts - **✅ API Compliance**: All endpoints now follow proper Canvas API patterns ## 🎯 Key Features ### 🎓 For Students - **Course Management**: Access all courses, syllabi, and course materials - **Assignment Workflow**: View, submit (text/URL/files), and track assignments - **Communication**: Participate in discussions, read announcements, send messages - **Progress Tracking**: Monitor grades, module completion, and calendar events - **Quizzes**: Take quizzes, view results and feedback - **File Access**: Browse and download course files and resources ### 👨‍🏫 For Instructors - **Course Creation**: Create and manage course structure *(now with proper account support)* - **Grading**: Grade submissions, provide feedback, manage rubrics - **User Management**: Enroll students, manage permissions - **Content Management**: Create assignments, quizzes, discussions ### 👨‍💼 For Account Administrators (NEW!) - **Account Management**: Manage institutional Canvas accounts - **User Administration**: Create and manage users across accounts - **Course Oversight**: List and manage all courses within accounts - **Reporting**: Generate enrollment, grade, and activity reports - **Sub-Account Management**: Handle account hierarchies and structures ### 🛠️ Technical Excellence - **Robust API**: Automatic retries, pagination, comprehensive error handling - **Cloud Ready**: Docker containers, Kubernetes manifests, health checks - **Well Tested**: Unit tests, integration tests, mocking, coverage reports - **Type Safe**: Full TypeScript implementation with strict types - **50+ Tools**: Comprehensive coverage of Canvas LMS functionality ## Quick Start ### Option 1: Claude Desktop Integration (Recommended MCP Setup) Add to `claude_desktop_config.json`: ```json { "mcpServers": { "canvas-mcp-server": { "command": "npx", "args": ["-y", "canvas-mcp-server"], "env": { "CANVAS_API_TOKEN": "your_token_here", "CANVAS_DOMAIN": "your_school.instructure.com" } } } } ``` ### Option 2: NPM Package ```bash # Install globally npm install -g canvas-mcp-server # Configure export CANVAS_API_TOKEN="your_token_here" export CANVAS_DOMAIN="your_school.instructure.com" # Run canvas-mcp-server ``` ### Option 3: Docker ```bash docker run -d \ --name canvas-mcp \ -e CANVAS_API_TOKEN="your_token" \ -e CANVAS_DOMAIN="school.instructure.com" \ ghcr.io/dmontgomery40/mcp-canvas-lms:latest ``` ## 💼 Account Admin Workflow Examples ### Create a New Course (FIXED!) ``` "Create a new course called 'Advanced Biology' in account 123" ``` **Now properly creates courses with required account_id parameter** ### Manage Users ``` "Create a new student user John Doe with email john.doe@school.edu in our main account" ``` **Creates user accounts with proper pseudonym and enrollment setup** ### Generate Reports ``` "Generate an enrollment report for account 456 for the current term" ``` **Initiates Canvas reporting system for institutional analytics** ### List Account Courses ``` "Show me all published Computer Science courses in our Engineering account" ``` **Advanced filtering and searching across account course catalogs** ## 🎓 Student Workflow Examples ### Check Today's Assignments ``` "What assignments do I have due this week?" ``` **Lists upcoming assignments with due dates, points, and submission status** ### Submit an Assignment ``` "Help me submit my essay for English 101 Assignment 3" ``` **Guides through text submission with formatting options** ### Check Grades ``` "What's my current grade in Biology?" ``` **Shows current scores, grades, and assignment feedback** ### Participate in Discussions ``` "Show me the latest discussion posts in my Philosophy class" ``` **Displays recent discussion topics and enables posting responses** ### Track Progress ``` "What modules do I need to complete in Math 200?" ``` **Shows module completion status and next items to complete** ## Getting Canvas API Token 1. **Log into Canvas** → Account → Settings 2. **Scroll to "Approved Integrations"** 3. **Click "+ New Access Token"** 4. **Enter description**: "Claude MCP Integration" 5. **Copy the generated token** Save securely! ⚠️ **Account Admin Note**: For account-level operations, ensure your API token has administrative privileges. ## Production Deployment ### Docker Compose ```bash git clone https://github.com/DMontgomery40/mcp-canvas-lms.git cd mcp-canvas-lms cp .env.example .env # Edit .env with your Canvas credentials docker-compose up -d ``` ### Kubernetes ```bash kubectl create secret generic canvas-mcp-secrets \ --from-literal=CANVAS_API_TOKEN="your_token" \ --from-literal=CANVAS_DOMAIN="school.instructure.com" kubectl apply -f k8s/ ``` ### Health Monitoring ```bash # Check application health curl http://localhost:3000/health # Or use the built-in health check npm run health-check ``` ## Development ```bash # Setup development environment git clone https://github.com/DMontgomery40/mcp-canvas-lms.git cd mcp-canvas-lms npm install # Start development with hot reload npm run dev:watch # Run tests npm run test npm run coverage # Code quality npm run lint npm run type-check ``` ## 📚 Available Tools (50+ Tools) <details> <summary><strong>🎓 Core Student Tools (Click to expand)</strong></summary> - `canvas_health_check` - Check API connectivity - `canvas_list_courses` - List all your courses - `canvas_get_course` - Get detailed course info - `canvas_list_assignments` - List course assignments - `canvas_get_assignment` - Get assignment details - `canvas_submit_assignment` - Submit assignment work - `canvas_get_submission` - Check submission status - `canvas_list_modules` - List course modules - `canvas_get_module` - Get module details - `canvas_list_module_items` - List items in a module - `canvas_mark_module_item_complete` - Mark items complete - `canvas_list_discussion_topics` - List discussion topics - `canvas_get_discussion_topic` - Get discussion details - `canvas_post_to_discussion` - Post to discussions - `canvas_list_announcements` - List course announcements - `canvas_get_user_grades` - Get your grades - `canvas_get_course_grades` - Get course-specific grades - `canvas_get_dashboard` - Get dashboard info - `canvas_get_dashboard_cards` - Get course cards - `canvas_get_upcoming_assignments` - Get due dates - `canvas_list_calendar_events` - List calendar events - `canvas_list_files` - List course files - `canvas_get_file` - Get file details - `canvas_list_folders` - List course folders - `canvas_list_pages` - List course pages - `canvas_get_page` - Get page content - `canvas_list_conversations` - List messages - `canvas_get_conversation` - Get conversation details - `canvas_create_conversation` - Send messages - `canvas_list_notifications` - List notifications - `canvas_get_syllabus` - Get course syllabus - `canvas_get_user_profile` - Get user profile - `canvas_update_user_profile` - Update profile </details> <details> <summary><strong>👨‍🏫 Instructor Tools (Click to expand)</strong></summary> - `canvas_create_course` - Create new courses *(FIXED: now requires account_id)* - `canvas_update_course` - Update course settings - `canvas_create_assignment` - Create assignments - `canvas_update_assignment` - Update assignments - `canvas_list_assignment_groups` - List assignment groups - `canvas_submit_grade` - Grade submissions - `canvas_enroll_user` - Enroll students - `canvas_list_quizzes` - List course quizzes - `canvas_get_quiz` - Get quiz details - `canvas_create_quiz` - Create quizzes - `canvas_start_quiz_attempt` - Start quiz attempts - `canvas_list_rubrics` - List course rubrics - `canvas_get_rubric` - Get rubric details </details> <details> <summary><strong>👨‍💼 Account Management Tools (NEW!)</strong></summary> - `canvas_get_account` - Get account details - `canvas_list_account_courses` - List courses in an account - `canvas_list_account_users` - List users in an account - `canvas_create_user` - Create new users in accounts - `canvas_list_sub_accounts` - List sub-accounts - `canvas_get_account_reports` - List available reports - `canvas_create_account_report` - Generate account reports </details> ## 🔧 Breaking Changes in v2.2.0 ### Course Creation Fix **BEFORE (Broken):** ```javascript { "tool": "canvas_create_course", "arguments": { "name": "My Course" // ❌ Missing account_id - caused "page not found" } } ``` **AFTER (Fixed):** ```javascript { "tool": "canvas_create_course", "arguments": { "account_id": 123, // ✅ Required account_id "name": "My Course", "course_code": "CS-101" } } ``` ## 🌟 Example Claude Conversations **Student**: *"I need to check my upcoming assignments and submit my English essay"* **Claude**: *I'll help you check your upcoming assignments and then assist with submitting your English essay. Let me start by getting your upcoming assignments...* [Claude uses `canvas_get_upcoming_assignments` then helps with `canvas_submit_assignment`] --- **Instructor**: *"Create a new Advanced Physics course in the Science department and enroll my teaching assistant"* **Claude**: *I'll help you create the Advanced Physics course in your Science department account and then enroll your TA...* [Claude uses `canvas_create_course` with proper account_id, then `canvas_enroll_user`] --- **Administrator**: *"Generate an enrollment report for all Computer Science courses this semester"* **Claude**: *I'll generate a comprehensive enrollment report for your CS courses...* [Claude uses `canvas_list_account_courses` with filters, then `canvas_create_account_report`] ## 🔍 Troubleshooting **Common Issues:** - ❌ **401 Unauthorized**: Check your API token and permissions - ❌ **404 Not Found**: Verify course/assignment IDs and access rights - ❌ **"Page not found" on course creation**: Update to v2.2.0 for account_id fix - ❌ **Timeout**: Increase `CANVAS_TIMEOUT` or check network connectivity **Debug Mode:** ```bash export LOG_LEVEL=debug npm start ``` **Health Check:** ```bash npm run health-check ``` ## 🤝 Contributing We welcome contributions! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines. ### Quick Contribution Setup ```bash git clone https://github.com/DMontgomery40/mcp-canvas-lms.git cd mcp-canvas-lms npm install npm run dev:watch # Make changes, add tests, submit PR ``` ## 📈 Roadmap - **v2.3**: Enhanced reporting, bulk operations, advanced search - **v2.4**: Mobile support, offline capability, analytics dashboard - **v3.0**: Multi-tenant, GraphQL API, AI-powered insights ## 🙋 Support & Community - 🐛 **Bug Reports**: [GitHub Issues](https://github.com/DMontgomery40/mcp-canvas-lms/issues) - 💬 **Questions**: [GitHub Discussions](https://github.com/DMontgomery40/mcp-canvas-lms/discussions) - 📖 **Documentation**: [Wiki](https://github.com/DMontgomery40/mcp-canvas-lms/wiki) ## 📄 License MIT License - see [LICENSE](LICENSE) file for details. --- <div align="center"> <strong>Canvas MCP Server v2.2.0</strong><br> <em>Empowering students, educators, and administrators with seamless Canvas integration</em><br><br> ⭐ **Star this repo if it helps you!** ⭐ </div>

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/DMontgomery40/mcp-canvas-lms'

If you have feedback or need assistance with the MCP directory API, please join our Discord server