diff --git a/developers/mcp-server.mdx b/developers/mcp-server.mdx new file mode 100644 index 0000000..f247c1b --- /dev/null +++ b/developers/mcp-server.mdx @@ -0,0 +1,86 @@ +--- +title: "MCP Server for AI Assistance" +description: "Configure and use the Model Context Protocol server to provide AI-powered assistance for course staff" +icon: "brain-circuit" +--- + +# MCP Server for AI Assistance + +Pawtograder includes a Model Context Protocol (MCP) server that enables AI assistants to help course staff support students who are struggling with errors in their programming assignments. + +## Overview + +The MCP server provides AI assistants with secure, authenticated access to: + +- Help requests and discussion threads +- Student submissions and test results +- Build output and error messages +- Assignment context and requirements + +This allows course staff to leverage AI tools to quickly understand student issues and provide more effective assistance. + +## Authentication + +The MCP server uses Supabase OAuth authentication to ensure secure access. Only instructors and graders have access to the MCP server tools. + + +The MCP server never exposes sensitive user data such as the users table or private profile information. All data access is scoped to course-related information only. + + +## Available Tools + +The MCP server provides the following tools for AI assistants: + +### Help Request Tools + +- **Fetch help requests**: Retrieve active and historical help requests +- **View help request details**: Access full context including chat history and student information +- **Get discussion threads**: Access discussion board posts and replies + +### Submission Tools + +- **Fetch submissions**: Retrieve student submissions for assignments +- **View test results**: Access autograder test output and results +- **Get build output**: View compilation and build logs + +### Assignment Context + +- **Assignment details**: Access assignment descriptions and requirements +- **Handout URL**: Retrieve assignment handout links for full context + +## Configuration + +To enable AI assistance for your course: + +1. Ensure the MCP server is configured with Supabase OAuth credentials +2. Add the `handout_url` field to assignments in the assignments table to provide assignment context +3. Course staff will see an "AI Help" button in help request chats and discussion threads + +## Using AI Assistance + +When viewing a help request or discussion thread, course staff can click the "AI Help" button to: + +1. Generate MCP context for the current conversation +2. Use any MCP-compatible AI client to analyze the situation +3. Get AI-powered insights and suggestions for helping the student + +The AI assistant has access to all relevant context about the student's submission, test failures, and the assignment requirements. + +## Privacy and Security + +The MCP server is designed with privacy in mind: + +- Only instructors and graders can access MCP tools +- Student personal information is protected +- All access is logged and auditable +- Data access is scoped to course-related information only + +## MCP-Compatible Clients + +The MCP server works with any MCP-compatible AI client, including: + +- Claude Desktop +- Custom MCP clients +- Other AI assistants that support the Model Context Protocol + +Refer to your AI client's documentation for instructions on connecting to an MCP server. diff --git a/docs.json b/docs.json index a30ace3..b009556 100644 --- a/docs.json +++ b/docs.json @@ -87,7 +87,7 @@ }, { "group": "Feature Documentation", - "pages": ["developers/surveys", "developers/polls"] + "pages": ["developers/surveys", "developers/polls", "developers/mcp-server"] } ] } diff --git a/staff/assignments/autograding.mdx b/staff/assignments/autograding.mdx index dde886a..094fd0c 100644 --- a/staff/assignments/autograding.mdx +++ b/staff/assignments/autograding.mdx @@ -16,6 +16,40 @@ The autograder system uses an "overlay grader" architecture that allows flexible *Detailed documentation coming soon.* +## Test Insights and Error Analysis + +Pawtograder provides powerful tools to help instructors understand and respond to common student errors: + +### Error Explorer + +The error explorer groups similar test failures together, allowing you to: + +- View all students affected by a particular error pattern +- Copy affected students' email addresses for bulk communication +- Launch regrading workflows directly from error groups +- Identify systemic issues in assignments or test cases + +### Regrade Workflow + +When you need to regrade submissions, you can: + +1. Launch regrade from the error explorer +2. Preselect affected submissions on the autograder page +3. Choose specific commits or enter a manual SHA in the regrade dialog +4. Auto-promote the new submission if desired + +This streamlined workflow makes it easy to respond to discovered issues or updated test cases. + +## Empty Submission Detection + +The autograder automatically detects empty submissions to help identify students who may need assistance. Empty submissions are flagged when: + +- No meaningful code changes are present +- Only starter code or template files exist +- The submission contains no substantive work + +This feature helps instructors quickly identify students who may be struggling to get started on an assignment. + ## Quickstart: Java and Python Build system integration guides for common programming languages. diff --git a/staff/assignments/grading-assignments.mdx b/staff/assignments/grading-assignments.mdx index d667820..41b8369 100644 --- a/staff/assignments/grading-assignments.mdx +++ b/staff/assignments/grading-assignments.mdx @@ -37,3 +37,14 @@ You can choose to reuse existing grading assignments (e.g. if you want to assign Lastly, you can choose to enforce that graders are **not** assigned to the same submission as they were on a prior assignment or rubric. This feature is useful to assign meta-graders, where the meta-grader is a different grader than the one who graded the submission. You will be able to preview the assignments before creating them, and can manually tweak them through the drag-and-drop interface. + +## Grading Status Dashboard + +The grading status dashboard provides instructors with a comprehensive overview of grading progress across all assignments. This dashboard helps you: + +- Monitor which assignments have pending grading tasks +- Track completion rates for each grader +- Identify bottlenecks in the grading workflow +- View grading assignments by staff member or by assignment + +Access the grading status dashboard from the course navigation to get a real-time view of all grading activities and ensure timely completion of grading tasks. diff --git a/staff/assignments/handgrading.mdx b/staff/assignments/handgrading.mdx index 3c0f74c..da5a88c 100644 --- a/staff/assignments/handgrading.mdx +++ b/staff/assignments/handgrading.mdx @@ -10,6 +10,10 @@ Instructors can define multiple handgrading rubrics for each assignment, althoug Once all required rubric checks are done, the grader can click the "Complete Review" button to confirm that they have completed grading. This does **not** release the review to the student, but indicates to the instructor that it **could** be released (at the instructor's discretion). + +TAs can edit or delete rubric scores even after completing a review, allowing for corrections and adjustments as needed. + + ## Grading Submissions That You Have Been Assigned When you have submissions assigned to grade, you will see a summary of them on the assignment's landing page. diff --git a/staff/office-hours/intro.mdx b/staff/office-hours/intro.mdx index 43b2311..a7317ad 100644 --- a/staff/office-hours/intro.mdx +++ b/staff/office-hours/intro.mdx @@ -69,6 +69,29 @@ This ensures students never miss updates, even while browsing the discussion boa A help request can be marked as "Resolved" by either a staff member or a student. +## Student Notifications + +Students receive multiple types of notifications to stay informed about their help requests: + +- **Browser Notifications**: Desktop notifications when staff responds or starts helping +- **Title Bar Updates**: Browser tab title shows status updates +- **Sound Alerts**: Optional audio notifications for important events +- **Favicon Badge**: Visual indicator in browser tabs + +Students can test notifications and adjust settings from the help request interface. + +## AI Assistance for Staff + +Course staff can use AI assistance tools to help support students who are struggling with errors in their programming assignments. The AI Help button appears in help request chats and discussion threads, providing staff with AI-powered insights based on: + +- Student submissions and test results +- Build output and error messages +- Assignment context and requirements + + +AI assistance requires configuration of the Model Context Protocol (MCP) server with Supabase OAuth authentication. Only instructors and graders have access to AI assistance tools. + + ## Feedback and Analytics After a help request is completed, the student can provide feedback on the help provided. This feedback is visible to instructors only and can be used to: diff --git a/students/assignments/create-submission.mdx b/students/assignments/create-submission.mdx index 09500b4..30b10ed 100644 --- a/students/assignments/create-submission.mdx +++ b/students/assignments/create-submission.mdx @@ -25,4 +25,9 @@ The "Files" tab shows the files that your instructor configured for the submissi Files tab displaying submitted code files +The file viewer supports: +- **Binary files**: Images, PDFs, and other binary files are now supported in submissions +- **Markdown preview**: Markdown files (.md) are rendered with formatting for easier reading +- **Code syntax highlighting**: Source code files display with appropriate syntax highlighting + These pages also have a link to the specific GitHub commit that was used to create the submission, and a link to download that complete repository as a zip file. diff --git a/students/discussion-board.mdx b/students/discussion-board.mdx index ec37e9b..d52a77d 100644 --- a/students/discussion-board.mdx +++ b/students/discussion-board.mdx @@ -70,6 +70,10 @@ Click the **+ New Post** button in the top right to create a new discussion thre 3. **Select identity**: Post with your real name or pseudonym 4. **Mark as question or note**: Questions indicate you need an answer; notes are for sharing information + +You can drag and drop images directly into the discussion board editor to upload them. This works for both new posts and replies. + + ## Engaging with Posts Each post displays helpful metadata: diff --git a/students/office-hours.mdx b/students/office-hours.mdx index 9e6e241..eff709a 100644 --- a/students/office-hours.mdx +++ b/students/office-hours.mdx @@ -86,6 +86,19 @@ Once you submit a help request: Your active help request follows you around the site! You'll see status updates and video call notifications even while browsing the discussion board or other pages. +## Notifications + +Pawtograder provides multiple notification options to keep you informed about your help request: + +- **Browser Notifications**: Desktop notifications when staff responds or starts helping +- **Title Bar Updates**: Your browser tab title shows status updates +- **Sound Alerts**: Optional audio notifications for important events +- **Favicon Badge**: Visual indicator in your browser tab + + +You may need to grant browser notification permissions when prompted. You can test notifications and adjust settings from the help request interface. + + ## Help Request Status Your help request will show different statuses: @@ -94,4 +107,12 @@ Your help request will show different statuses: - **In Progress**: A staff member is actively helping you - **Resolved**: Your request has been marked as complete -After receiving help, you can provide feedback on the assistance you received. This feedback is visible only to instructors and helps improve the office hours experience. +## Resolving Your Request + +When you're finished receiving help, you can resolve your help request by selecting a resolution status: + +- **Resolved - Got help**: Your question was answered successfully +- **Resolved - No longer needed**: You figured it out on your own or no longer need help +- **Resolved - Other**: Other reasons for closing the request + +You can resolve your request from the floating banner or the main chat view. After receiving help, you can provide feedback on the assistance you received. This feedback is visible only to instructors and helps improve the office hours experience.