School Tools (Canvas & Gradescope) MCP server

Integrates with Canvas and Gradescope to help students track assignment deadlines, add them to macOS Reminders, and manage course materials across multiple learning platforms.
Back to servers
Provider
gh-54yyyu
Release date
Mar 22, 2025
Language
Python
Stats
4 stars

School MCP is a Model Context Protocol (MCP) server that helps students manage their academic workflow by integrating with Canvas and Gradescope. It provides tools for tracking assignment deadlines, managing course files, and syncing academic information with macOS applications.

Features

  • Assignment Deadlines: Fetch and display upcoming deadlines from Canvas and Gradescope
  • Calendar Integration: Add deadlines to macOS Calendar or Reminders using AppleScript
  • File Management: Download course materials from Canvas

Installation

Via Smithery

The easiest way to install School MCP for Claude Desktop is via Smithery:

npx -y @smithery/cli install @54yyyu/school-mcp --client claude

Manual Installation

  1. Clone the repository:
git clone https://github.com/yourusername/school-mcp.git
cd school-mcp
  1. Install the package:
pip install -e .
  1. Set up your environment variables using either the setup helper or manual configuration.

Configuration

Using the Setup Helper

The recommended way to configure School MCP is using the setup helper:

python setup_helper.py

This utility will:

  • Locate your Claude Desktop configuration file
  • Create a .env file if needed
  • Configure the MCP server with proper paths
  • Add your environment variables to the Claude Desktop configuration

Manual Configuration

If you prefer manual setup:

  1. Copy the environment template:
cp .env.template .env
  1. Edit the .env file to include your credentials and settings

The server looks for configuration in the following order:

  1. Environment variables
  2. .env file in the current directory
  3. Existing config.json file in the home directory

Running the Server

Start the MCP server using one of these methods:

python -m school_mcp

Or use the convenience script:

./run_server.py

Available Tools

Getting Deadlines

Fetch upcoming assignment deadlines from Canvas and Gradescope:

get_deadlines

Managing Calendar Items

Add assignments to macOS Reminders:

add_to_reminders

Course Management

List all available Canvas courses:

list_courses

File Operations

Download files from a Canvas course:

download_course_files

Configure the download location:

set_download_path

Check the current download location:

get_download_path_info

How to add this MCP server to Cursor

There are two ways to add an MCP server to Cursor. The most common way is to add the server globally in the ~/.cursor/mcp.json file so that it is available in all of your projects.

If you only need the server in a single project, you can add it to the project instead by creating or adding it to the .cursor/mcp.json file.

Adding an MCP server to Cursor globally

To add a global MCP server go to Cursor Settings > MCP and click "Add new global MCP server".

When you click that button the ~/.cursor/mcp.json file will be opened and you can add your server like this:

{
    "mcpServers": {
        "cursor-rules-mcp": {
            "command": "npx",
            "args": [
                "-y",
                "cursor-rules-mcp"
            ]
        }
    }
}

Adding an MCP server to a project

To add an MCP server to a project you can create a new .cursor/mcp.json file or add it to the existing one. This will look exactly the same as the global MCP server example above.

How to use the MCP server

Once the server is installed, you might need to head back to Settings > MCP and click the refresh button.

The Cursor agent will then be able to see the available tools the added MCP server has available and will call them when it needs to.

You can also explictly ask the agent to use the tool by mentioning the tool name and describing what the function does.

Want to 10x your AI skills?

Get a free account and learn to code + market your apps using AI (with or without vibes!).

Nah, maybe later