get_my_course_grades
Retrieve current grades, enrollment status, and recent performance for all enrolled courses in Canvas.
Instructions
Get your current grades across all enrolled courses.
Returns your current grade, enrollment status, and recent performance for each active course.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- The main handler function for the 'get_my_course_grades' tool. It fetches the user's active courses with total_scores and current_grading_period_scores included, then extracts and formats the computed current grade or final score for each course.@mcp.tool() async def get_my_course_grades() -> str: """Get your current grades across all enrolled courses. Returns your current grade, enrollment status, and recent performance for each active course. """ courses = await fetch_all_paginated_results( "/courses", params={ "enrollment_state": "active", "include[]": ["total_scores", "current_grading_period_scores"], "per_page": 100 } ) if isinstance(courses, dict) and "error" in courses: return f"Error fetching courses: {courses['error']}" if not courses: return "No active course enrollments found." output_lines = ["Your Course Grades:\n"] for course in courses: name = course.get("name", "Unnamed Course") course_code = course.get("course_code", "") # Get enrollment data (grades) enrollments = course.get("enrollments", []) if enrollments: enrollment = enrollments[0] # Student typically has one enrollment per course # Current score current_score = enrollment.get("computed_current_score") final_score = enrollment.get("computed_final_score") current_grade = enrollment.get("computed_current_grade", "N/A") # Format grade info if current_score is not None: grade_info = f"{current_grade} ({current_score:.1f}%)" elif final_score is not None: grade_info = f"{final_score:.1f}%" else: grade_info = "No grade yet" output_lines.append( f"• {course_code}: {name}\n" f" Current Grade: {grade_info}\n" ) else: output_lines.append( f"• {course_code}: {name}\n" f" Current Grade: No enrollment data\n" ) return "\n".join(output_lines)
- src/canvas_mcp/server.py:55-55 (registration)The call to register_student_tools(mcp) in the register_all_tools function, which invokes the registration of student tools including get_my_course_grades.register_student_tools(mcp)
- src/canvas_mcp/tools/__init__.py:11-11 (registration)Import of register_student_tools from student_tools.py in tools/__init__.py, enabling its use in server.py.from .student_tools import register_student_tools