- Canvas MCP Server
Canvas MCP Server
Canvas MCP Server
A Model Context Protocol (MCP) server for interacting with the Canvas LMS API. This server provides tools for managing courses, users, content, and assessments in Canvas.
Features
- Authentication: Secure authentication with Canvas API tokens
- Course Management: Get course information, list courses, update course settings
- User Management: Get user information, list course users, manage enrollments
- Content Management: Create and manage pages, modules, and module items
- Assessment Management: Create and manage assignments, grade submissions, create announcements
- Quiz Management: Create and manage quizzes, quiz questions, and grade quiz submissions
Prerequisites
- Node.js 16 or higher
- A Canvas LMS instance
- Canvas API token with appropriate permissions
Installation
-
Clone the repository:
git clone https://github.com/yourusername/canvas-mcp-server.git cd canvas-mcp-server -
Install dependencies:
npm install -
Create a
.envfile based on the.env.examplefile:cp .env.example .env -
Edit the
.envfile with your Canvas API token and URL:CANVAS_API_TOKEN=your_canvas_api_token_here CANVAS_API_URL=https://your-institution.instructure.com/api/v1 MCP_SERVER_NAME=canvas-mcp -
Build the project:
npm run build
Usage
Running the Server
npm start
Configuring with Claude for Desktop
To use this MCP server with Claude for Desktop, add the following to your Claude for Desktop configuration file:
{
"mcpServers": {
"canvas-mcp": {
"command": "node",
"args": [
"/ABSOLUTE/PATH/TO/canvas-mcp-server/dist/index.js"
]
}
}
}
Replace /ABSOLUTE/PATH/TO/ with the actual path to your canvas-mcp-server directory.
Configuring with Anything LLM
To use this MCP server with Anything LLM, add the following to your Anything LLM MCP configuration:
- Navigate to Settings > MCP in your Anything LLM interface
- Add a new MCP server with the following configuration:
{
"name": "canvas-mcp",
"command": "node",
"args": [
"/ABSOLUTE/PATH/TO/canvas-mcp-server/dist/index.js"
]
}
Replace /ABSOLUTE/PATH/TO/ with the actual path to your canvas-mcp-server directory.
For more information, see the Anything LLM MCP documentation.
Available Tools
Course Management
get_course: Get information about a Canvas courselist_courses: List Canvas courses for the current userupdate_course: Update Canvas course settingsget_course_modules: Get modules for a Canvas courseget_course_assignments: Get assignments for a Canvas course
User Management
get_user: Get information about a Canvas userget_self: Get information about the current Canvas userlist_course_users: List users enrolled in a Canvas courseenroll_user: Enroll a user in a Canvas courseremove_enrollment: Remove a user enrollment from a Canvas coursesend_message: Send a message to a Canvas user
Content Management
get_course_pages: Get pages for a Canvas courseget_page_content: Get content of a Canvas pagecreate_or_update_page: Create or update a Canvas pagedelete_page: Delete a Canvas pagecreate_module: Create a new module in a Canvas courseadd_module_item: Add an item to a module in a Canvas course
Assessment Management
create_assignment: Create a new assignment in a Canvas courseupdate_assignment: Update an existing assignment in a Canvas coursegrade_submission: Grade a student submission for an assignmentget_submissions: Get student submissions for an assignmentcreate_announcement: Create a new announcement in a Canvas course
Quiz Management
list_quizzes: List quizzes in a Canvas courseget_quiz: Get details of a specific quizcreate_quiz: Create a new quiz in a Canvas courseupdate_quiz: Update an existing quiz in a Canvas coursedelete_quiz: Delete a quiz from a Canvas courseget_quiz_questions: Get questions for a specific quizcreate_quiz_question: Create a new question for a quizupdate_quiz_question: Update an existing quiz questiondelete_quiz_question: Delete a question from a quizget_quiz_submissions: Get submissions for a specific quizgrade_quiz_submission: Grade a quiz submission
Development
Project Structure
canvas-mcp-server/
├── src/
│ ├── index.ts # Main entry point
│ ├── auth/ # Authentication handling
│ ├── api/ # Canvas API client
│ │ └── client.ts # API client with pagination and rate limiting
│ ├── tools/ # MCP tool implementations
│ │ ├── courses.ts # Course-related tools
│ │ ├── users.ts # User-related tools
│ │ ├── content.ts # Content-related tools
│ │ ├── assessments.ts # Assessment-related tools
│ │ └── quizzes.ts # Quiz-related tools
│ └── utils/
│ ├── logging.ts # Logging utilities
│ └── error.ts # Error handling utilities
├── dist/ # Compiled JavaScript files
├── .env # Environment variables
└── package.json # Project dependencies
Running in Development Mode
npm run dev
License
MIT