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
- Clone the repository:
git clone https://github.com/yourusername/school-mcp.git
cd school-mcp
- Install the package:
pip install -e .
- 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:
- Copy the environment template:
cp .env.template .env
# Edit .env with your credentials
- 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 Gradescopeadd_to_reminders
: Add assignments to macOS Reminderslist_courses
: List all available Canvas coursesdownload_course_files
: Download files from a Canvas courseset_download_path
: Configure where downloaded files are savedget_download_path_info
: Check the current download location
Configuration
The server tries to find configuration in this order:
- Environment variables
.env
file in the current directory- Existing
config.json
file in the home directory
License
MIT