A Model Context Protocol server providing comprehensive access to Canvas LMS for AI assistants.
Access Canvas LMS functionality through 31 MCP tools:
- Courses: List and view course information
- Assignments: Browse, view details, check submissions, and submit work
- Grades: View grades for individual courses or across all courses
- Messaging: Send and receive messages, manage conversations (read/unread, star, archive, delete)
- Calendar: View events and upcoming deadlines
- To-Do Lists: Track pending tasks and assignments
- Modules: Navigate course content structure
- Announcements: Read course and institutional announcements
- Files: Access and download course materials
- Quizzes: View quizzes and submissions
- Users: Search for classmates and instructors
- Bun runtime
- Canvas LMS account with API access token
- Install dependencies:
bun install-
Get your Canvas API token:
- Log into Canvas
- Navigate to Account → Settings
- Scroll to "Approved Integrations"
- Click "+ New Access Token"
- Generate and copy the token
-
Configure environment variables:
export CANVAS_BASE_URL="https://your-institution.instructure.com"
export CANVAS_ACCESS_TOKEN="your_access_token_here"- Configure your MCP client with the following settings:
{
"mcpServers": {
"canvas": {
"command": "bun",
"args": ["run", "/absolute/path/to/canvas/src/index.ts"],
"env": {
"CANVAS_BASE_URL": "https://your-institution.instructure.com",
"CANVAS_ACCESS_TOKEN": "your_access_token_here"
}
}
}
}After setup, interact with Canvas through your MCP client:
Show me all my current courses
What assignments do I have due soon?
What are my grades in all my classes?
Show me my recent Canvas messages
bun run format # Format code with Prettier
bun run lint # Lint code with ESLint
bun run typecheck # Type check with TypeScript
bun test # Run testsbun run build # Build for production
bun run dev # Run in development modeBuilt with TypeScript and the MCP SDK, this server provides a type-safe interface to the Canvas LMS REST API. All operations use Bearer token authentication and respect Canvas rate limits.
canvas/
├── src/
│ ├── canvas/
│ │ ├── client.ts # Canvas API client
│ │ └── client.test.ts # Client tests
│ └── index.ts # MCP server implementation
├── docs/ # Documentation
├── package.json # Dependencies and scripts
└── tsconfig.json # TypeScript configuration
- Store credentials in environment variables
- Never commit access tokens to version control
- Use token expiration dates
- Rotate tokens regularly
- Follow your institution's API usage policies
This server implements the Canvas LMS REST API v1. For detailed API documentation, visit the Instructure Developer Portal.
This project uses permissive open-source dependencies with no telemetry or tracking.