Back to skills
SkillHub ClubShip Full StackFull StackBackend

canvas-api

Imported from https://github.com/a-ariff/ariff-claude-plugins.

Packaged view

This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.

Stars
3
Hot score
80
Updated
March 20, 2026
Overall rating
C3.0
Composite score
3.0
Best-practice grade
B75.1

Install command

npx @skill-hub/cli install a-ariff-ariff-claude-plugins-canvas-api

Repository

a-ariff/ariff-claude-plugins

Skill path: plugins/canvas-api/skills/canvas-api

Imported from https://github.com/a-ariff/ariff-claude-plugins.

Open repository

Best for

Primary workflow: Ship Full Stack.

Technical facets: Full Stack, Backend.

Target audience: everyone.

License: Unknown.

Original source

Catalog source: SkillHub Club.

Repository owner: a-ariff.

This is still a mirrored public skill entry. Review the repository before installing into production workflows.

What it helps with

  • Install canvas-api into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
  • Review https://github.com/a-ariff/ariff-claude-plugins before adding canvas-api to shared team environments
  • Use canvas-api for development workflows

Works across

Claude CodeCodex CLIGemini CLIOpenCode

Favorites: 0.

Sub-skills: 0.

Aggregator: No.

Original source / Raw SKILL.md

---
name: canvas-api
description: Canvas API Connection Skill
---

# Canvas API Connection Skill

Complete guide to connecting and using Canvas LMS API for Whitecliffe courses.

## Quick Reference

| Item | Value |
|------|-------|
| **User ID** | 2396 |
| **User Name** | Mohamed Abdul Latiff (Ariff) |
| **Canvas URL** | https://learn.mywhitecliffe.com |
| **MCP Server** | canvas-mcp-sse.ariff.dev |

## Current Courses (2025)

| Course | ID | Code |
|--------|-----|------|
| Applied Project | 2366 | IT8107 |
| Cybersecurity Architecture | 2368 | IT8109 |

## Connection Methods

### Method 1: Canvas MCP (Recommended)

The Canvas MCP server is already configured and provides 12 tools:

**Course Tools:**
- `get_courses` - List all enrolled courses
- `get_modules` - Get course modules

**Assignment Tools:**
- `get_assignments` - List assignments for a course
- `get_upcoming_assignments` - Next 7 days deadlines

**Grade Tools:**
- `get_grades` - Current grades for a course
- `get_submissions` - Submission details

**Discussion Tools:**
- `get_discussion_topics` - List discussions
- `get_announcements` - Course announcements

**Quiz Tools:**
- `get_quizzes` - List quizzes

#### Example Usage

```python
# Get all courses
mcp__canvas-mcp__get_courses()

# Get assignments for IT8107
mcp__canvas-mcp__get_assignments(course_id=2366)

# Check grades
mcp__canvas-mcp__get_grades(course_id=2366)

# Get upcoming deadlines
mcp__canvas-mcp__get_upcoming_assignments()
```

### Method 2: Direct API

For custom integrations or when MCP is unavailable:

**Base URL:** `https://learn.mywhitecliffe.com/api/v1`

**Authentication:**
```bash
# Store token securely (never commit!)
export CANVAS_TOKEN="your-token-here"

# API request
curl -H "Authorization: Bearer $CANVAS_TOKEN" \
     "https://learn.mywhitecliffe.com/api/v1/courses"
```

**Common Endpoints:**

| Endpoint | Description |
|----------|-------------|
| `/courses` | List courses |
| `/courses/:id/assignments` | Course assignments |
| `/courses/:id/grades` | Course grades |
| `/courses/:id/modules` | Course modules |
| `/users/self/upcoming_events` | Upcoming events |

### Method 3: Python SDK

```python
from canvasapi import Canvas

API_URL = "https://learn.mywhitecliffe.com"
API_KEY = os.environ.get("CANVAS_TOKEN")

canvas = Canvas(API_URL, API_KEY)
user = canvas.get_current_user()
courses = user.get_courses(enrollment_state='active')
```

## Setup Instructions

### Adding Canvas MCP to Claude

Already configured in `mcp-config.json`:

```json
{
  "mcpServers": {
    "canvas-mcp": {
      "type": "sse",
      "url": "https://canvas-mcp-sse.ariff.dev/sse"
    }
  }
}
```

### Getting API Token

1. Log in to https://learn.mywhitecliffe.com
2. Go to Account → Settings
3. Scroll to "Approved Integrations"
4. Click "+ New Access Token"
5. Set expiry (recommended: end of semester)
6. Copy token immediately (shown only once)

### Storing Token Securely

**macOS Keychain:**
```bash
security add-generic-password -a "$USER" -s "canvas-api" -w "YOUR_TOKEN"
```

**Environment variable:**
```bash
# Add to ~/.zshrc
export CANVAS_TOKEN="$(security find-generic-password -a "$USER" -s "canvas-api" -w)"
```

## Important Notes

⚠️ **Always verify with MCP tools** - Don't assume course/assignment details

⚠️ **Token security** - Never commit tokens to git

⚠️ **Rate limits** - Canvas has API rate limits, batch requests when possible

⚠️ **Course IDs change** - Each semester has new course IDs

## Troubleshooting

**"Unauthorized" errors:**
- Token expired - generate new one
- Token revoked - check Canvas settings

**MCP not responding:**
- Check https://canvas-mcp-sse.ariff.dev/health
- Verify mcp-config.json syntax

**Missing courses:**
- Check enrollment status
- Some courses may be unpublished