Fire in da houseTop Tip:Paying $100+ per month for Perplexity, MidJourney, Runway, ChatGPT and other tools is crazy - get all your AI tools in one site starting at $15 per month with Galaxy AI Fire in da houseCheck it out free

mcp-canvas-lms

MCP.Pizza Chef: DMontgomery40

The mcp-canvas-lms is a Model Context Protocol (MCP) server designed to integrate with the Canvas Learning Management System (LMS) API. It provides structured, real-time access to Canvas data, allowing developers and AI agents to manage courses, assignments, enrollments, and grades programmatically. Built on Node.js, this server facilitates secure and efficient interaction with Canvas, enabling automation and enhanced workflows within educational environments. It supports environment configuration for API tokens and domains, making it adaptable to various Canvas instances. This MCP server is ideal for developers looking to embed Canvas LMS context into AI models for education technology applications.

Use This MCP server To

Manage Canvas courses programmatically Automate assignment creation and updates Retrieve and update student enrollments Access and modify grades within Canvas Integrate Canvas data into AI-driven workflows Enable real-time Canvas context for AI agents Streamline LMS administrative tasks Build custom educational tools with Canvas API

README

Canvas MCP Server

A Model Context Protocol (MCP) server for interacting with the Canvas API. This server allows you to manage courses, assignments, enrollments, and grades within Canvas.

Prerequisites

  • Node.js: Version 18 or higher
  • Canvas API Token: Obtain from your Canvas account
  • Canvas Domain: Typically canvas.instructure.com

Setup

  1. Clone the Repository

    git clone https://github.com/yourusername/canvas-mcp-server.git
    cd canvas-mcp-server
    
  2. Install Dependencies

    npm install
  3. Configure Environment Variables

Copy the example environment file:

cp .env.example .env

Edit .env and replace the placeholder values with your actual Canvas API token and domain.

Build the Project

npm run build
  1. Run the Server

    npm start

    The server will start and listen for MCP requests via stdio.

Connecting to Claude Desktop

  1. Update Claude Configuration

    Add the MCP server configuration to your claude_desktop_config.json:

  "canvas-mcp-server": {
      "command": "npx",
      "args": ["-y", "canvas-mcp-server"]
    },

Restart Claude Desktop

Quit Claude Desktop completely. Start Claude Desktop again. Navigate to the šŸ”Œ menu to find and connect your Canvas MCP server.

Available Tools (more student focused stuff coming soon)

  • canvas_create_course: Create a new course in Canvas.
  • canvas_update_course: Update an existing course in Canvas.
  • canvas_create_assignment: Create a new assignment in a Canvas course.
  • canvas_update_assignment: Update an existing assignment.
  • canvas_submit_grade: Submit a grade for a student's assignment.
  • canvas_enroll_user: Enroll a user in a course.

Error Handling

Tools return error messages with isError: true to indicate issues. Ensure all required environment variables are set to avoid runtime errors.

Troubleshooting

  • Build Errors:

Check TypeScript version: npx tsc --version Clean and rebuild: rm -rf build/ && npm run build

  • Runtime Errors:

    Check logs for detailed error messages. Ensure environment variables are correctly set.

  • Type Errors:

    Validate types using TypeScript's type checking: npx tsc --noEmit

Contributing

Contributions are welcome! Please open an issue or submit a pull request for any improvements or bug fixes.

License

This project is licensed under the MIT License.


Additional Notes

  • Type Safety: The types.ts file ensures that all interactions with the Canvas API are type-safe, reducing runtime errors and improving code maintainability.

  • Error Handling: The server gracefully handles errors by returning meaningful messages with the isError flag, allowing the client (e.g., Claude Desktop) to understand and react appropriately.

  • Environment Variables: Sensitive information like API tokens are managed through environment variables, enhancing security and flexibility across different environments.

  • Modularity: Separating concerns into different files (types.ts, client.ts, index.ts) makes the codebase easier to navigate and maintain.

Feel free to adjust the file paths and configurations according to your project's specific needs. Let me know if you need further assistance!

mcp-canvas-lms FAQ

How do I configure the Canvas API token for mcp-canvas-lms?
You set your Canvas API token in the .env file by replacing the placeholder with your actual token obtained from your Canvas account.
What Node.js version is required to run the mcp-canvas-lms server?
The server requires Node.js version 18 or higher to ensure compatibility and performance.
How do I start the mcp-canvas-lms server after setup?
After installing dependencies and configuring environment variables, run 'npm start' to launch the server, which listens for MCP requests via stdio.
Can mcp-canvas-lms handle multiple Canvas domains?
Yes, by configuring the Canvas domain in the .env file, you can connect the server to different Canvas instances as needed.
Is the mcp-canvas-lms server compatible with AI models like Claude and Gemini?
Yes, it is designed to work with various LLM providers including OpenAI, Claude, and Gemini by exposing Canvas data through the MCP protocol.
How do I update the mcp-canvas-lms server to the latest version?
Pull the latest changes from the GitHub repository, reinstall dependencies with 'npm install', rebuild with 'npm run build', and restart the server.
What kind of Canvas data can mcp-canvas-lms access?
It can access and manage courses, assignments, enrollments, and grades through the Canvas API.
Does mcp-canvas-lms support secure handling of API tokens?
Yes, API tokens are stored securely in environment variables and never hardcoded in the source code.