tool_get_assignment_details
Retrieve assignment details including name, dates, submission status, and grade from Gradescope courses for tracking academic progress.
Instructions
Get detailed information about a specific assignment.
Returns the assignment name, dates, submission status, and grade.
Args:
course_id: The Gradescope course ID.
assignment_id: The assignment ID (found via get_assignments).Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| course_id | Yes | ||
| assignment_id | Yes |
Implementation Reference
- src/gradescope_mcp/server.py:91-100 (handler)The MCP tool registration for "tool_get_assignment_details".
def tool_get_assignment_details(course_id: str, assignment_id: str) -> str: """Get detailed information about a specific assignment. Returns the assignment name, dates, submission status, and grade. Args: course_id: The Gradescope course ID. assignment_id: The assignment ID (found via get_assignments). """ return get_assignment_details(course_id, assignment_id) - The actual implementation of the get_assignment_details logic.
def get_assignment_details(course_id: str, assignment_id: str) -> str: """Get detailed information about a specific assignment. Args: course_id: The Gradescope course ID. assignment_id: The assignment ID. """ if not course_id or not assignment_id: return "Error: both course_id and assignment_id are required." try: conn = get_connection() assignments = conn.account.get_assignments(course_id) except AuthError as e: return f"Authentication error: {e}" except Exception as e: return f"Error fetching assignment details: {e}" # Find the specific assignment target = None for a in assignments: if str(a.assignment_id) == str(assignment_id): target = a break if target is None: return f"Assignment `{assignment_id}` not found in course `{course_id}`." lines = [ f"## Assignment Details\n", f"- **Name:** {target.name}", f"- **Assignment ID:** `{target.assignment_id}`", f"- **Release Date:** {_format_datetime(target.release_date)}", f"- **Due Date:** {_format_datetime(target.due_date)}", f"- **Late Due Date:** {_format_datetime(target.late_due_date)}", f"- **Submission Status:** {target.submissions_status or 'N/A'}", f"- **Grade:** {target.grade or 'N/A'} / {target.max_grade or 'N/A'}", ] return "\n".join(lines)