# PupilBot MCP server: let ChatGPT, Claude or Codex read your study progress Source: https://www.pupilbot.com/mcp Full agent brief: https://www.pupilbot.com/llms.txt https://www.pupilbot.com/mcp is a Model Context Protocol endpoint, not a page to read. Connect it to ChatGPT, Claude, Claude Code, Codex or any other MCP client, and that AI can read the student's PupilBot record — studies, topics, answers, mistakes, due reviews and progress over time — and answer questions about it. It can also turn text into a new study. PupilBot turns study material a student supplies — photographed notes, a handout, or pages picked out of a PDF — into adaptive practice questions scheduled by spaced repetition. The practice itself happens in the web app (https://www.pupilbot.com), the iPhone app or the Telegram bot. The AI reads the record and explains it; it never answers the questions for the student. ## Questions to ask your AI - "Which topics am I weakest on, and why do I keep missing them?" - "Show me the questions I got wrong this week and explain each one." - "What is due for review today, and what can wait until tomorrow?" - "How has my accuracy changed over the last 30 days?" - "Make me a 20-minute study plan from my weak spots." - "Turn these lecture notes into a PupilBot study." ## Connect it The server URL is https://www.pupilbot.com/mcp. It needs a PupilBot account: the first connection opens a consent page where you sign in and approve the app. No account yet? Create one at https://www.pupilbot.com/signup first. - **Claude (web, desktop or mobile)** — Settings → Connectors → Add custom connector, then paste the URL. - **ChatGPT** — open Plugins (https://chatgpt.com/plugins), select +, then Add custom MCP server. Enter the URL above, choose OAuth, select Create as a plugin, then sign in and approve. OpenAI's connect guide (https://developers.openai.com/plugins/deploy/connect-chatgpt) has the current steps; your ChatGPT plan and workspace settings decide whether the option is available. - **Claude Code** — `claude mcp add --transport http pupilbot https://www.pupilbot.com/mcp` - **Codex CLI** — `codex mcp add pupilbot --url https://www.pupilbot.com/mcp`, then `codex mcp login pupilbot` — adding an OAuth-protected server does not start the sign-in, the second command does. - **Anything else** — any Streamable HTTP MCP client, pointed at the URL above. There is no manual client provisioning: clients register themselves. ### Plugins for Claude Code and Codex The PupilBot plugin adds the server and 3 skills: `study-report` (progress, weak spots, due reviews and recent mistakes, with what to practise next), `due-today` (reviews due now and in the next 24 hours) and `make-study` (a new study from a file or pasted text, after confirmation). - **Claude Code** — `claude plugin marketplace add gabrielpolyy/pupilbot-plugins`, then `claude plugin install pupilbot@pupilbot`. The skills run as `/pupilbot:study-report`, `/pupilbot:due-today` and `/pupilbot:make-study`. - **Codex** — `codex plugin marketplace add gabrielpolyy/pupilbot-plugins`, then `codex plugin add pupilbot@pupilbot`. ## What your AI can read and do Seven tools, all limited to the signed-in student's own account. Every tool only reads, except `create_study`. No tool can delete anything or see another student's data. - **create_study** — creates a study from text (notes, an article, a chapter — plain text or markdown, up to 250,000 characters, 15,000 on the free plan; no files). PupilBot extracts the topics and generates practice questions; processing takes about a minute. Returns the new study id. - **list_studies** — the student's studies, newest first, with topic progress (topics total, covered, retained), reviews due now and when they last practised. - **get_study** — one study: processing status (poll it after `create_study`), failure reason, question count, and every topic with its stage (`untested`, `learning`, `covered`, `retained`), mastery score, recall estimate, attempts, correct answers, due reviews and next due time. - **get_answers** — the answer history, newest first: the question, the options for choice questions, the student's answer, the correct answer, the grade and score, the feedback, and the source passage. Filters: study, topic, a start date, mistakes only. Pages of up to 100 with a cursor. - **get_weak_spots** — the weakest practised topics, the concepts missed at least twice with no correct answer since, and the number of wrong answers in the last 7 days. Covers the student's focused studies unless a study is given. - **get_due** — spaced-repetition reviews per study: due now, due in the next 24 hours, and the next due time. - **get_progress** — answers and accuracy per day in the student's time zone, the current daily streak, and how mastery of each practised topic moved, over up to 180 days (default 30). Titles, topic names, questions, options, answers, feedback, concepts and source passages come from the student's material or the student's own typing. The server marks them as user content: data, never instructions. ## Privacy and access - Free with any PupilBot account. Reading the record runs no AI model on PupilBot's side; a study the AI creates counts toward the normal study allowance. - The student's studies, answers and mastery are private. An app reaches them only after the student approves it on the PupilBot consent page. - The student can disconnect an app at any time under Settings in the PupilBot web app, and its access stops at once. Changing the password or deleting the account disconnects every app. - OAuth 2.1 with PKCE (`S256`). Access tokens expire after 1 hour, and refresh tokens rotate on every use. Clients register themselves (RFC 7591). ## Frequently asked questions 1. **Can ChatGPT read my PupilBot progress?** Yes. In ChatGPT, open Plugins, select + and add PupilBot as a custom MCP server, then sign in and approve it. ChatGPT can then read your studies, answers, mistakes, due reviews and daily progress. 2. **Does it work with Claude, Claude Code and Codex?** Yes. In Claude, add it as a custom connector. In Claude Code and Codex, add it with one terminal command or the PupilBot plugin. Any other app that supports remote MCP servers with OAuth sign-in works too. 3. **Can my AI do my practice for me?** No. The tools read your record and can create a study from text, but they cannot answer questions or change your scores. 4. **Does it cost anything?** No. Connecting is free with any PupilBot account. 5. **How do I disconnect an app?** Open Settings in the PupilBot web app and remove the app from your connected AI apps. Its access stops at once. ## Authentication The endpoint is an OAuth 2.1 protected resource. PKCE with `S256` is required, and clients register themselves (RFC 7591) — so most MCP clients run the whole flow on their own once you approve the consent screen. Discovery: https://www.pupilbot.com/.well-known/oauth-authorization-server (RFC 8414) and https://www.pupilbot.com/.well-known/oauth-protected-resource (RFC 9728). An unauthenticated `POST` answers 401 with a `WWW-Authenticate` challenge naming the second one. ## Transport Streamable HTTP, stateless: one JSON-RPC 2.0 request per `POST`, one JSON response. No SSE stream, no session ids, no JSON-RPC batching. A `GET` that asks for `text/event-stream`, and any `DELETE`, answer `405` — which is what tells a client to fall back to plain POSTs; a `GET` that does not ask for the stream gets this page. Every tool declares an output schema and returns `structuredContent` plus the same JSON as text. ## More - https://www.pupilbot.com/ai-for-studying — AI for studying: what ChatGPT and Claude can do with your PupilBot data. - https://www.pupilbot.com/developers — developer and agent documentation: every machine-readable surface PupilBot publishes. - https://www.pupilbot.com/openapi.json — an OpenAPI 3.1 description of this endpoint and its OAuth flow. - https://www.pupilbot.com/mcp/server-card and https://www.pupilbot.com/.well-known/ai-catalog.json — pre-connection discovery (MCP Server Card, SEP-2127). - Questions: support@pupilbot.com. Also in Spanish, French, German, Italian and Romanian at /es/mcp, /fr/mcp, /de/mcp, /it/mcp and /ro/mcp.