AI assistance for helping students
Pawtograder can hand your own AI assistant the context it needs to help you diagnose a student’s problem. The AI buttons in the staff UI build a structured prompt and copy it to your clipboard. You paste that prompt into an assistant connected to Pawtograder’s Model Context Protocol (MCP) server, and the assistant fetches the help request, submission, test output, and assignment spec for itself.What the copied prompt contains
For a help request or a discussion thread, the prompt is instructions plus identifiers — the class ID, the resource ID, and the submission and assignment IDs when they are known. It does not contain the student’s question, code, or test output. Those only reach your assistant if the assistant can call the MCP server, which means an assistant with no MCP connection has almost nothing to work with. The prompt also tells the assistant how to answer: a diagnosis that cites specific code and test output, two draft replies (one Socratic, one direct), and a verification checklist. That is a request in the prompt, not a guarantee about what you get back — read the result critically before sending anything to a student. For a failing test, a build error, or a common error pattern, the prompt embeds the error output directly (truncated at 4,000 characters for a single test or build failure) along with the same tool guidance.Setting up
You need to be an instructor or grader in at least one course. The API Tokens dialog is hidden from students entirely, and the token endpoint rejects anyone else with “MCP tokens are only available to instructors and graders”.1
Install an MCP-capable assistant
Claude Desktop is what the in-product instructions assume; download it from
claude.ai/download. Any client that can connect to
a remote MCP server over HTTP with a bearer token works.
2
Create an API token
Open the user menu (your avatar, top right) and click API Tokens. In
Create New Token:
- Enter a Token Name — the placeholder suggests things like “Claude Desktop” or “VS Code”.
- Choose a Token Type. The three buttons are MCP (AI Assistants), CLI (Command Line), and MCP + CLI. Pick MCP (AI Assistants) or MCP + CLI; a CLI-only token is rejected by the MCP server.
- Click Create Token.
mcp_,
whichever type you chose, and is valid for 90 days.3
Configure your assistant
Scroll to How to Use in the same dialog. Under MCP Client Configuration
(Claude Desktop) is a JSON block for your deployment with the server URL
already filled in. Copy the URL from there rather than typing it out.Pawtograder’s MCP server accepts one form of credential: a bearer
Claude Desktop is not such a client. Its configuration file describes servers it
launches on your machine, and its support for remote servers lives in
Settings → Connectors, which takes a URL and then runs whatever sign-in flow
the server offers.
Pawtograder’s offers none — only the token you just created. So point Claude
Desktop at a small local bridge, The token goes in
Authorization header carrying your token, sent on every request. A client that
lets you set headers on a remote MCP server takes the block as printed, with
your token in place of mcp_YOUR_TOKEN_HERE:mcp-remote, and let it carry the header:claude_desktop_config.json
env rather than straight into args because some clients,
Claude Desktop on Windows among them, mangle a space inside an argument — which
is also why Authorization:${PAWTOGRADER_TOKEN} has no space after the colon.
npx fetches mcp-remote on first use, so there is nothing to install
beforehand beyond Node.js.Claude Desktop reads its configuration from
~/Library/Application Support/Claude/claude_desktop_config.json on macOS and
%APPDATA%\Claude\claude_desktop_config.json on Windows.4
Restart and verify
Quit and reopen your assistant.
pawtograder should appear in its list of MCP
servers, offering the tools listed below.If you click an AI button before you have a token, Pawtograder opens a dialog
titled Set Up AI Help with Claude Desktop instead of copying anything. Close
it and follow the API Tokens dialog and the configuration above instead,
which is the supported route. This is a known issue with an open report against Pawtograder, and a fix is on the way.
Where the AI buttons are
All of them are hidden from students. The AI Analyze button covers up to ten
of the affected submissions and states in the prompt how many students hit the
pattern, so the assistant can judge whether it is a student mistake or a problem
with the test or the spec.
Only the help-request and discussion buttons check whether you have a token. The
submission-error and AI Analyze buttons copy the prompt regardless, so an
assistant with no MCP connection will fail to fetch anything after you paste.
Feedback
Right after a copy, a small panel asks How was the AI assistance? with thumbs up, thumbs down, and an optional comment box. It appears before you have had a chance to use the prompt, so it is really asking about the context Pawtograder gave you. The rating is recorded against the course and the resource you copied from.Available MCP tools
The server exposes 16 read-only tools. See MCP Server for the implementation and how to add more. Contextget_help_request— the help request with its full conversation historyget_discussion_thread— the thread with its repliesget_assignment— title, description, handout URL, due date, and points
get_submission— submission metadata and summarylist_submission_files— the file list, without contentsget_submission_files— file contents, filtered by glob patternlist_submission_tests— every test result, with an option to list only failuresget_test_output— full output for one testget_submission_build_output— compilation and build errorsget_submissions_for_student— every submission a student has made for an assignment
list_grader_files/get_grader_files— the grader/solution repositorylist_handout_files/get_handout_files— the template/handout repository
search_help_requests— related help requestssearch_discussion_threads— related threads
get_assignment returns the assignment’s handout URL, but the assignment forms
have no field for setting it, so it comes back empty unless an administrator
populates it directly. Point your assistant at the handout yourself if it needs
the written specification. This is a known issue with an open report against Pawtograder, and a fix is on the way.Privacy and access control
- Staff only. Token creation and every tool call require an instructor or grader role, checked on the server, and the API Tokens menu is hidden while you preview the course as a student.
- Same visibility as the web app. The assistant reads your course as you, with your own permissions: it sees exactly what you can see in the web app and nothing more. No tool has elevated access.
- No account data. No tool returns platform account records or a student’s profile-privacy setting.
- Revocable. Tokens are long-lived signed tokens; revocation is checked on every request, so a revoked token stops working immediately.
- Auditable. Each token records a last-used timestamp.
Managing your tokens
The API Tokens dialog lists your tokens under Your Tokens with columns Name, Type, Status, Created, Expires, and Last Used. Type reads MCP, CLI, or MCP + CLI; status reads Active, Expired, or Revoked; a token you have never used shows Never. To revoke one, click the trash icon on its row. Revoked and expired tokens keep their row but lose the button.The same dialog also issues tokens for the Pawtograder command-line tool and
shows its install and login commands. See CLI for what the CLI can
do.
Using it well
Good candidates for AI assistance:- A bug that spans several layers and resists a quick read
- A failure pattern several students have hit at once
- Drafting a long, well-structured explanation you would otherwise write by hand
- Questions you can answer in one line
- Course policy, which the assistant does not know
- Accommodations or anything sensitive about an individual student
Troubleshooting
pawtograder does not appear in my assistant
- Confirm the configuration file is valid JSON.
- Confirm the URL is the one from the API Tokens dialog — the API host, not the web address.
- Confirm the token has not expired; tokens last 90 days.
- Restart the assistant completely after editing its configuration.
- If you are going through the
mcp-remotebridge, run the samenpxcommand in a terminal. It will tell you whether Node.js is missing or the server rejected the header.
”Access denied” or “Invalid or expired API token”
- Confirm your token’s Type is MCP or MCP + CLI. A CLI token has no MCP scopes and is rejected.
- Confirm the token is still Active in Your Tokens, not Expired or Revoked.
- Confirm you still have an instructor or grader role in the course you are asking about.
The assistant cannot see any course data
- Check that the
Authorizationheader value starts withBearer mcp_, keeping theBearerprefix if you moved the value into an environment variable. - Check that you are asking about the right class ID; every tool call is scoped to one class, and you only reach classes where you are staff.
- Remember that the copied prompt carries no student content. If the assistant is guessing, its MCP connection is not working.