School MCP logo

School MCP

by 54yyyu

School MCP is a Model Context Protocol (MCP) server designed for academic tools. It integrates with platforms like Canvas and Gradescope to streamline academic workflows.

View on GitHub

Last updated: N/A

School MCP

A Model Context Protocol (MCP) server for academic tools, integrating with Canvas and Gradescope platforms.

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

Quickstart

Installation

Installing via Smithery

To install School MCP for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install @54yyyu/school-mcp --client claude
  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 by either:
    • Using the included setup helper (recommended)
    • Creating a .env file manually

Using the Setup Helper

Run the setup helper to configure Claude Desktop automatically:

python setup_helper.py

The setup helper will:

  • Find 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 Setup

If you prefer to set up manually:

  1. Copy the environment template:
cp .env.template .env
# Edit .env with your credentials
  1. Configure Claude Desktop by following the Claude Desktop Integration Guide.

Running the server

Run directly:

python -m school_mcp

Or use the convenience script:

./run_server.py

Tools

  • get_deadlines: Fetch upcoming assignment deadlines from Canvas and Gradescope
  • add_to_reminders: Add assignments to macOS Reminders
  • list_courses: List all available Canvas courses
  • download_course_files: Download files from a Canvas course
  • set_download_path: Configure where downloaded files are saved
  • get_download_path_info: Check the current download location

Configuration

The server tries to find configuration in this order:

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

License

MIT