r1ckyIn/canvas-ed-mcp
If you are the rightful owner of canvas-ed-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
An MCP server supporting both Canvas REST API and Ed Discussion API for accessing University of Sydney learning platforms.
Canvas + Ed Discussion MCP Server
An MCP server supporting both Canvas REST API and Ed Discussion API for accessing University of Sydney learning platforms.
Features
Canvas Features
- canvas_list_courses - Get Canvas course list
- canvas_get_course - Get course details
- canvas_list_announcements - Get course announcements
- canvas_list_assignments - Get assignment list
Ed Discussion Features
- ed_get_user_info - Get Ed user information (verify token)
- ed_list_courses - Get Ed course list
- ed_list_threads - Get discussion thread list
- ed_get_thread - Get thread details and replies
- ed_search_threads - Search threads
Installation
1. Install Dependencies
pip install mcp httpx pydantic
2. Configure Claude Desktop
Edit the Claude Desktop configuration file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Add the following configuration:
{
"mcpServers": {
"canvas-ed-mcp": {
"command": "python",
"args": [
"/your/full/path/canvas_ed_mcp.py"
],
"env": {
"CANVAS_API_TOKEN": "your_Canvas_API_Token",
"ED_API_TOKEN": "your_Ed_API_Token"
}
}
}
}
3. Restart Claude Desktop
Usage Examples
Canvas Operations
List all my Canvas courses
Get announcements for course ID 12345
View my assignment list
Ed Discussion Operations
List my Ed Discussion courses
Get the latest discussion threads for Ed course ID 12345
Search for threads about "assignment" in Ed course
Get detailed content and replies for Ed thread ID 67890
API Token Information
Canvas API Token
- Source: Canvas → Account → Settings → Approved Integrations → + New Access Token
- Valid until: March 18, 2026
Ed Discussion API Token
- Source: Ed Discussion → Settings → API
- Note: Ed API is an unofficial beta version, endpoints may change
Workflow Examples
View All Course Discussions
- First get Ed course list:
ed_list_courses - Note the Ed course ID of the course you're interested in
- Get threads for that course:
ed_list_threads(using course ID) - View specific thread details:
ed_get_thread(using thread ID)
Check Assignment Due Dates
- Get Canvas course list:
canvas_list_courses - Get course assignments:
canvas_list_assignments(using Canvas course ID)
Troubleshooting
Ed API Errors
401 Authentication Failed
- Check if Ed API token is correct
- Confirm token hasn't expired
404 Resource Not Found
- Ed course ID and Canvas course ID are different
- Use
ed_list_coursesto get the correct Ed course ID
Canvas API Errors
404 Resource Not Found
- Check if Canvas course ID is correct
- Confirm you have permission to access the course
Technical Notes
Ed API Endpoints
Ed Discussion API is unofficial and based on reverse engineering. Main endpoints:
GET /api/user- Get user information and course listGET /api/courses/{id}/threads- Get course threadsGET /api/threads/{id}- Get thread details
Data Format
Ed Discussion uses a special XML format to store thread content. The MCP server automatically parses this into plain text.
Project Files
canvas-ed-mcp/
├── canvas_ed_mcp.py # Full MCP server (Canvas + Ed)
├── canvas_api_mcp.py # Canvas-only version
├── requirements.txt # Python dependencies
├── claude_desktop_config_full.json # Full configuration example
└── README.md # This document
Security Reminder
- DO NOT commit API tokens to version control systems
- DO NOT share your tokens with others
- Tokens are equivalent to your account password
License
For educational purposes only. Ed API is an unofficial beta version, use at your own risk.