canvas-accessibility-auditor

Accessibility audit and remediation for Canvas LMS courses. Scans content for WCAG-oriented issues, generates prioritized reports, guides fixes, and verifies remediation. Use when asked to "audit accessibility", "check WCAG", "fix accessibility issues", or "run accessibility review".

vishalsachdev/canvas-mcp117 installsMITSynced Aug 22

Works with

Claude CodeCursorCodex CLIGitHub CopilotGemini CLI
---
name: canvas-accessibility-auditor
description: Accessibility audit and remediation for Canvas LMS courses. Scans content for WCAG-oriented issues, generates prioritized reports, guides fixes, and verifies remediation. Use when asked to "audit accessibility", "check WCAG", "fix accessibility issues", or "run accessibility review".
license: MIT
---

# Canvas Accessibility Auditor

Full accessibility audit cycle for Learning Designers: scan course content, generate a prioritized report, guide remediation of fixable issues, re-scan to verify fixes, and produce an accessibility review summary.

## Prerequisites

- **Canvas MCP server** must be running and connected.
- Authenticated user must have **instructor, TA, or designer role** in the target course.
- For UFIXIT integration: the course must have a UFIXIT report page (generated by your institution's accessibility tool).

## Steps

### 1. Identify Target Course

Ask the user which course to audit. Accept a course code, Canvas ID, or course name.

If not specified, prompt:

> Which course would you like to audit for accessibility?

### 2. Scan Course Content

Run two scans in parallel if possible:

**Scan A -- Direct content scan:**
```
scan_course_content_accessibility(course_identifier, "pages,assignments")
```

This checks all page and assignment HTML for:
- Images missing alt text (WCAG 1.1.1, Level A)
- Empty headings (WCAG 2.4.6, Level AA)
- Tables missing headers (WCAG 1.3.1, Level A)
- Non-descriptive link text like "click here" (WCAG 2.4.4, Level A)

**Scan B -- UFIXIT report (if available):**
```
fetch_ufixit_report(course_identifier)
```

If the UFIXIT page exists, parse it:
```
parse_ufixit_violations(report_json)
```

### 3. Generate Prioritized Report

Combine results from both scans. Call `format_accessibility_summary` if using UFIXIT data.

Present issues sorted by priority:

```
## Accessibility Audit: [Course Name]

### Summary
- Content scanned: 20 pages, 15 assignments
- Total issues: 12
- Auto-fixable: 8 | Manual review needed: 4

### Level A Violations (must fix)
1. **Missing alt text** -- 5 images across 3 pages
   - Page "Week 1 Overview": 2 images
   - Page "Lab Instructions": 2 images
   - Assignment "Final Project": 1 image

2. **Tables missing headers** -- 2 tables
   - Page "Grade Scale": 1 table
   - Page "Schedule": 1 table

3. **Non-descriptive links** -- 3 instances of "click here"
   - Page "Resources": 2 links
   - Page "Week 3 Overview": 1 link

### Level AA Violations (should fix)
4. **Empty headings** -- 2 empty heading elements
   - Page "Week 5 Notes": 1 empty h3
   - Page "Midterm Review": 1 empty h2

### Manual Review Required
- Color contrast: Cannot be checked automatically (requires visual inspection)
- Video captions: Cannot be verified via API (check in Canvas media player)
- PDF accessibility: Cannot be parsed via API (use Adobe Acrobat checker)
```

### 4. Guided Remediation

For each auto-fixable issue, walk the user through the fix:

**For missing alt text:**
1. Call `get_page_content(course_identifier, page_url)` to retrieve the HTML
2. Identify the `<img>` tags without alt attributes
3. Ask the user for alt text descriptions (or suggest based on surrounding context)
4. Call `edit_page_content(course_identifier, page_url, new_content)` with corrected HTML

**For non-descriptive links:**
1. Retrieve the page content
2. Show the current link: `<a href="...">click here</a>`
3. Suggest descriptive replacement: `<a href="...">Download the syllabus (PDF)</a>`
4. Apply fix after user approval

**For empty headings:**
1. Retrieve the page content
2. Show the empty heading
3. Ask: "Remove this heading, or add text to it?"
4. Apply the chosen fix

**For tables missing headers:**
1. Retrieve the page content
2. Show the table structure
3. Ask: "Which row/column should be headers?"
4. Convert `<td>` to `<th>` elements and apply

Always ask for user confirmation before modifying any page.

### 5. Re-scan Modified Pages

After remediation, re-run the scan on modified pages only:

```
scan_course_content_accessibility(course_identifier, "pages")
```

Report: "Fixed 8/12 issues. 4 remaining require manual review."

### 6. Generate Accessibility Review Summary

Produce a final summary suitable for stakeholder reporting:

```
## Accessibility Review Summary

**Course:** [Course Name]
**Audit Date:** [date]
**Auditor:** AI-assisted audit via Canvas MCP

### Results
- Total content items scanned: 35
- Automated issues found: 12
- Issues remediated: 8
- Issues requiring manual review: 4
- Automated WCAG-oriented checks: Partial pass (manual review items remain)

### Remediation Actions Taken
- Added alt text to 5 images
- Fixed 3 non-descriptive links
- Removed 2 empty headings

### Outstanding Items
- Color contrast review needed (pages with colored text)
- Video caption verification (embedded videos)
- PDF accessibility check (uploaded PDFs)

### Recommendation
Course content meets automated WCAG 2.1 Level A criteria after remediation.
Manual review of color contrast and multimedia is recommended before publishing.
```

## MCP Tools Used

| Tool | Purpose |
|------|---------|
| `scan_course_content_accessibility` | Scan pages and assignments for WCAG issues |
| `fetch_ufixit_report` | Retrieve institutional UFIXIT report |
| `parse_ufixit_violations` | Extract structured violations from report |
| `format_accessibility_summary` | Format violations into readable report |
| `get_page_content` | Retrieve page HTML for remediation |
| `edit_page_content` | Apply accessibility fixes to pages |
| `list_courses` | Find available courses |

## Example

**User:** "Run accessibility audit for CS 101"

**Agent:** Scans all content, generates the prioritized report.

**User:** "Fix the missing alt text issues"

**Agent:** Retrieves each affected page, asks for alt text descriptions, applies fixes, re-scans.

## Limitations

- **Cannot check:** Color contrast, video captions, PDF accessibility, audio descriptions, keyboard navigation
- **These are flagged** as "manual review required" in every report
- **Remediation is per-page:** Each fix requires a full page content read and write cycle
- **No undo:** Page edits via the API do not create Canvas revision history -- back up pages before bulk fixes

## Notes

- Pairs well with `canvas-course-qc` for comprehensive pre-semester review.
- Run after major content updates or course imports.
- UFIXIT integration depends on your institution having UDOIT/UFIXIT installed.

More Accessibility skills

← All Accessibility skills

Check your AI visibility

One URL in, a 0–100 score and the exact fixes out.

RUN THE CHECK

Browse all the tools

15 tools across six categories
13 of them never send your data anywhere

Free · No signup · No trial clock

SEE THE DIRECTORY