Sponsored by Deepsite.site

Canvas MCP Server v2.0

Created By
DMontgomery40a year ago
Version 2.0 - 37 tools available - an MCP server for interacting with the Canvas LMS API. This server allows you to manage courses, assignments, enrollments, and grades within Canvas.
Content

Canvas MCP Server v2.0

A comprehensive Model Context Protocol (MCP) server for Canvas LMS with complete student and instructor functionality

What's New in v2.0

  • Complete Student Experience: 40+ tools covering all student workflows
  • Remote Ready: Docker, Kubernetes, and cloud deployment support
  • Fully Tested: Comprehensive test suite with 90%+ coverage
  • Production Grade: Robust error handling, retry logic, health monitoring
  • Modern Stack: TypeScript, async/await, automatic pagination
  • Real-time: Dashboard updates, upcoming assignments, calendar integration

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
  • Grading: Grade submissions, provide feedback, manage rubrics
  • User Management: Enroll students, manage permissions
  • Content Management: Create assignments, quizzes, discussions

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

Quick Start

Add to claude_desktop_config.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

# 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

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

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!

Production Deployment

Docker Compose

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

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

# Check application health
curl http://localhost:3000/health

# Or use the built-in health check
npm run health-check

Development

# 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

Core Student Tools (Click to expand)
  • 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_mark_module_item_complete - Mark items complete
  • canvas_list_discussions - List discussion topics
  • canvas_post_to_discussion - Post to discussions
  • canvas_list_announcements - List course announcements
  • canvas_get_user_grades - Get your grades
  • canvas_get_dashboard - Get dashboard info
  • canvas_get_upcoming_assignments - Get due dates
  • canvas_list_calendar_events - List calendar events
  • canvas_list_files - List course files
  • canvas_list_pages - List course pages
  • canvas_get_page - Get page content
  • canvas_list_conversations - List messages
  • canvas_create_conversation - Send messages
👨‍🏫 Instructor Tools (Click to expand)
  • canvas_create_course - Create new courses
  • canvas_update_course - Update course settings
  • canvas_create_assignment - Create assignments
  • canvas_update_assignment - Update assignments
  • canvas_submit_grade - Grade submissions
  • canvas_enroll_user - Enroll students
  • canvas_create_quiz - Create quizzes
  • canvas_update_quiz - Update quizzes

🌟 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]


Student: "What's my current grade in Biology and what assignments am I missing?"

Claude: I'll check your Biology grades and identify any missing assignments...

[Claude uses canvas_get_course_grades and canvas_list_assignments with submission status]

🔍 Troubleshooting

Common Issues:

  • 401 Unauthorized: Check your API token and permissions
  • 404 Not Found: Verify course/assignment IDs and access rights
  • Timeout: Increase CANVAS_TIMEOUT or check network connectivity

Debug Mode:

export LOG_LEVEL=debug
npm start

Health Check:

npm run health-check

🤝 Contributing

We welcome contributions! See CONTRIBUTING.md for guidelines.

Quick Contribution Setup

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.1: Real-time notifications, bulk operations, advanced search
  • v2.2: Mobile support, offline capability, analytics dashboard
  • v3.0: Multi-tenant, GraphQL API, AI-powered insights

🙋 Support & Community

📄 License

MIT License - see LICENSE file for details.


Canvas MCP Server v2.0
Empowering students and educators with seamless Canvas integration

Star this repo if it helps you!

Recommend Servers
TraeBuild with Free GPT-4.1 & Claude 3.7. Fully MCP-Ready.
WindsurfThe new purpose-built IDE to harness magic
Jina AI MCP ToolsA Model Context Protocol (MCP) server that integrates with Jina AI Search Foundation APIs.
CursorThe AI Code Editor
TimeA Model Context Protocol server that provides time and timezone conversion capabilities. This server enables LLMs to get current time information and perform timezone conversions using IANA timezone names, with automatic system timezone detection.
Baidu Map百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Amap Maps高德地图官方 MCP Server
Zhipu Web SearchZhipu Web Search MCP Server is a search engine specifically designed for large models. It integrates four search engines, allowing users to flexibly compare and switch between them. Building upon the web crawling and ranking capabilities of traditional search engines, it enhances intent recognition capabilities, returning results more suitable for large model processing (such as webpage titles, URLs, summaries, site names, site icons, etc.). This helps AI applications achieve "dynamic knowledge acquisition" and "precise scenario adaptation" capabilities.
Context7Context7 MCP Server -- Up-to-date code documentation for LLMs and AI code editors
MCP AdvisorMCP Advisor & Installation - Use the right MCP server for your needs
EdgeOne Pages MCPAn MCP service designed for deploying HTML content to EdgeOne Pages and obtaining an accessible public URL.
AiimagemultistyleA Model Context Protocol (MCP) server for image generation and manipulation using fal.ai's Stable Diffusion model.
Visual Studio Code - Open Source ("Code - OSS")Visual Studio Code
ChatWiseThe second fastest AI chatbot™
BlenderBlenderMCP connects Blender to Claude AI through the Model Context Protocol (MCP), allowing Claude to directly interact with and control Blender. This integration enables prompt assisted 3D modeling, scene creation, and manipulation.
Howtocook Mcp基于Anduin2017 / HowToCook (程序员在家做饭指南)的mcp server,帮你推荐菜谱、规划膳食,解决“今天吃什么“的世纪难题; Based on Anduin2017/HowToCook (Programmer's Guide to Cooking at Home), MCP Server helps you recommend recipes, plan meals, and solve the century old problem of "what to eat today"
MiniMax MCPOfficial MiniMax Model Context Protocol (MCP) server that enables interaction with powerful Text to Speech, image generation and video generation APIs.
Playwright McpPlaywright MCP server
DeepChatYour AI Partner on Desktop
Tavily Mcp
Serper MCP ServerA Serper MCP Server