get_rubric_details
Retrieve detailed rubric criteria and scoring information from Canvas courses to understand assessment requirements and grading standards.
Instructions
Get detailed rubric criteria and scoring information.
Args:
course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
rubric_id: The Canvas rubric ID
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| course_identifier | Yes | ||
| rubric_id | Yes |
Implementation Reference
- src/canvas_mcp/tools/rubrics.py:472-547 (handler)The handler function implementing the 'get_rubric_details' tool. Fetches and formats detailed rubric information including title, points, criteria descriptions, and rating levels from the Canvas API endpoint /courses/{course_id}/rubrics/{rubric_id}.@mcp.tool() @validate_params async def get_rubric_details(course_identifier: str | int, rubric_id: str | int) -> str: """Get detailed rubric criteria and scoring information. Args: course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID rubric_id: The Canvas rubric ID """ course_id = await get_course_id(course_identifier) rubric_id_str = str(rubric_id) # Get detailed rubric information response = await make_canvas_request( "get", f"/courses/{course_id}/rubrics/{rubric_id_str}", params={"include[]": ["assessments", "associations"]} ) if "error" in response: return f"Error fetching rubric details: {response['error']}" # Extract rubric details title = response.get("title", "Untitled Rubric") context_code = response.get("context_code", "") context_type = response.get("context_type", "") points_possible = response.get("points_possible", 0) reusable = response.get("reusable", False) read_only = response.get("read_only", False) data = response.get("data", []) course_display = await get_course_code(course_id) or course_identifier result = f"Detailed Rubric Information for Course {course_display}:\n\n" result += f"Title: {title}\n" result += f"Rubric ID: {rubric_id}\n" result += f"Context: {context_type} ({context_code})\n" result += f"Total Points: {points_possible}\n" result += f"Reusable: {'Yes' if reusable else 'No'}\n" result += f"Read Only: {'Yes' if read_only else 'No'}\n\n" # Detailed criteria and ratings if data: result += "Detailed Criteria and Ratings:\n" result += "=" * 50 + "\n" for i, criterion in enumerate(data, 1): criterion_id = criterion.get("id", "N/A") description = criterion.get("description", "No description") long_description = criterion.get("long_description", "") points = criterion.get("points", 0) ratings = criterion.get("ratings", []) result += f"\nCriterion #{i}: {description}\n" result += f"ID: {criterion_id}\n" result += f"Points: {points}\n" if long_description: result += f"Description: {truncate_text(long_description, 200)}\n" if ratings: result += f"Rating Levels ({len(ratings)}):\n" for j, rating in enumerate(ratings): rating_description = rating.get("description", "No description") rating_points = rating.get("points", 0) rating_id = rating.get("id", "N/A") result += f" {j+1}. {rating_description} ({rating_points} pts) [ID: {rating_id}]\n" if rating.get("long_description"): result += f" {truncate_text(rating.get('long_description'), 100)}\n" result += "\n" return result
- src/canvas_mcp/server.py:51-51 (registration)Call to register_rubric_tools which registers the get_rubric_details tool among others in the MCP server startup.register_rubric_tools(mcp)