Context7
Feeds AI the latest docs for libraries and frameworks before it answers, so code it writes does not use outdated, removed functions.
Description from the maker (original English)
Read-only Piazza access: activity, search, unread posts, full threads, and course info
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
PIAZZA_EMAIL, PIAZZA_PASSWORD, PIAZZA_COOKIE_FILE, PIAZZA_ANONYMIZE_STUDENTS, PIAZZA_FENCE_CONTENT, PIAZZA_MIN_INTERVAL, PIAZZA_CACHE_TTLValues marked secret are keys to your account. Never share them or paste them into a chat.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"piazza": {
"command": "uvx",
"args": [
"mcp-piazza"
],
"env": {
"PIAZZA_EMAIL": "your-value",
"PIAZZA_PASSWORD": "your-value",
"PIAZZA_COOKIE_FILE": "your-value",
"PIAZZA_ANONYMIZE_STUDENTS": "your-value",
"PIAZZA_FENCE_CONTENT": "your-value",
"PIAZZA_MIN_INTERVAL": "your-value",
"PIAZZA_CACHE_TTL": "your-value"
}
}
}
}Run this in your terminal
claude mcp add piazza --env PIAZZA_EMAIL=your-value --env PIAZZA_PASSWORD=your-value --env PIAZZA_COOKIE_FILE=your-value --env PIAZZA_ANONYMIZE_STUDENTS=your-value --env PIAZZA_FENCE_CONTENT=your-value --env PIAZZA_MIN_INTERVAL=your-value --env PIAZZA_CACHE_TTL=your-value -- uvx mcp-piazzaFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"piazza": {
"command": "uvx",
"args": [
"mcp-piazza"
],
"env": {
"PIAZZA_EMAIL": "your-value",
"PIAZZA_PASSWORD": "your-value",
"PIAZZA_COOKIE_FILE": "your-value",
"PIAZZA_ANONYMIZE_STUDENTS": "your-value",
"PIAZZA_FENCE_CONTENT": "your-value",
"PIAZZA_MIN_INTERVAL": "your-value",
"PIAZZA_CACHE_TTL": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"piazza": {
"type": "stdio",
"command": "uvx",
"args": [
"mcp-piazza"
],
"env": {
"PIAZZA_EMAIL": "your-value",
"PIAZZA_PASSWORD": "your-value",
"PIAZZA_COOKIE_FILE": "your-value",
"PIAZZA_ANONYMIZE_STUDENTS": "your-value",
"PIAZZA_FENCE_CONTENT": "your-value",
"PIAZZA_MIN_INTERVAL": "your-value",
"PIAZZA_CACHE_TTL": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
PIAZZA_EMAIL envPIAZZA_COOKIE_FILE envPIAZZA_ANONYMIZE_STUDENTS envPIAZZA_FENCE_CONTENT envPIAZZA_MIN_INTERVAL envPIAZZA_CACHE_TTL envThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 8, 2026
The registry name was verified with the GitHub account jadenpxrk, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
You need to fill in: PIAZZA_PASSWORD
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (0.1.0) reached the registry 24 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Python (uv) on your computer.
In the same category: Context7, Codebase Memory, Exa
Servers in the same category from other makers, sorted by stars.
Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Feeds AI the latest docs for libraries and frameworks before it answers, so code it writes does not use outdated, removed functions.
Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.
Connect AI agents to Exa for web search, content fetching, and multi-step research.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
A read-only Model Context Protocol server for Piazza. It works with every MCP client: Claude Code, Claude Desktop, Cursor, VS Code, Windsurf, Zed, Cline, Codex, Gemini CLI, Goose, opencode, JetBrains, LM Studio, Continue, and others.
Ask your assistant about your courses:
The server only reads data. It cannot post, edit, endorse, or delete.
uvx mcp-piazza login
You can also skip this step. If the server has no session, the first tool call opens the same page and shows its link.
uvx with the argument mcp-piazza. For example: claude mcp add --scope user --transport stdio piazza -- uvx mcp-piazza # Claude Code
codex mcp add piazza -- uvx mcp-piazza # Codex CLI
See docs/clients.md for Claude Desktop, Cursor, VS Code, Windsurf, Zed, Gemini CLI, and other clients.
| Tool | Purpose |
|---|---|
list_courses | List your courses with ID, course number, term, role, active status, and folders. |
get_course_info | Get the course page: description, syllabus, office hours, general information, and staff with emails. |
get_unread_counts | Count unread posts in each active course. |
recent_activity | List posts with new activity since a time (24h, 7d, 2026-10-01), in all active courses or one course. |
list_posts | List post summaries. Filters: all, unread, following, unresolved, unanswered, mine, starred. Optional folder and paging. |
search_posts | Search posts by keywords in one course or in all active courses. |
get_post | Read one full thread: question, instructor answer, student answer, followups, replies, and poll data. |
get_posts | Read up to 20 full threads in one call. |
get_post_history | Show every version of a post, with a diff between versions. |
list_instructor_notes | List notes and polls written by instructors. |
get_attachment | Open an image or file from a post. The model can see images. |
get_course_stats | Get the data from the course Statistics page. |
Every tool accepts a course ID, a course number such as CSE 12 or cse12, or part of the course name.
| Prompt | Purpose |
|---|---|
catch_up | Read all posts since a time and summarize them, with actions for you. |
before_asking | Find out if a question was already asked and answered. |
exam_prep | Read all posts about an exam or topic and collect the facts. |
Many clients show prompts as slash commands.
| Skill | Purpose |
|---|---|
piazza-catch-up | The catch_up steps, for agents that use skills. |
piazza-exam-prep | The exam_prep steps. |
piazza-before-asking | The before_asking steps. |
Skills work in Claude Code, Cursor, Codex, opencode, and other agents. They need the server. To install them:
npx skills add jadenpxrk/mcp-piazza
| Resource | Content |
|---|---|
piazza://courses | Your courses |
piazza://courses/{course_id}/posts/{number} | One full thread |
See docs/tools.md for parameters and output fields, and docs/workflows.md for examples.
Piazza has no public API. This server uses piazza-api, which logs in as the Piazza website does.
| Method | How | Use it when |
|---|---|---|
| Login page | mcp-piazza login, or the link from the first tool call | Most people. The page offers the three methods below. |
| Browser session | mcp-piazza login --browser | You are logged in to piazza.com in Chrome, Arc, Brave, Edge, Firefox, Safari, Chromium, Vivaldi, or Opera. This works with school SSO. |
| Password | mcp-piazza login --password | You want to type your email and password in the terminal. |
| Session cookie | mcp-piazza login --cookie | You want to paste the session_id cookie from the browser developer tools. |
| Environment variables | PIAZZA_EMAIL, PIAZZA_PASSWORD | You want automatic login when the session expires. |
All methods save only the session cookies to ~/.config/mcp-piazza/cookies.json with file mode 600. They do not save your password. When the session expires, the next tool call opens the login page again. mcp-piazza logout deletes the session.
| Variable | Default | Purpose |
|---|---|---|
PIAZZA_EMAIL | none | Account email for automatic login. |
PIAZZA_PASSWORD | none | Account password for automatic login. |
PIAZZA_COOKIE_FILE | ~/.config/mcp-piazza/cookies.json | Path of the saved session. |
PIAZZA_ANONYMIZE_STUDENTS | false | Replace student names with pseudonyms. |
PIAZZA_FENCE_CONTENT | true | Mark post text as untrusted data. |
PIAZZA_KEEP_UNREAD | false | Mark unread posts unread again after the server reads them. |
PIAZZA_MIN_INTERVAL | 0.5 | Minimum seconds between Piazza requests. |
PIAZZA_CACHE_TTL | 60 | Seconds to keep feeds and posts in memory. 0 turns off the cache. |
See docs/configuration.md for examples and the command line.
PIAZZA_KEEP_UNREAD restore.<< >> markers, and the server instructions tell the model to treat it as data.PIAZZA_ANONYMIZE_STUDENTS=true, other students show as Student 3f2a1c. Staff keep their names. Your own posts show as you.piazza.com.See docs/privacy.md for the full model and its limits.
uv sync
uv run pytest # offline tests, no Piazza account needed uv run ruff check src tests uv run ruff format src tests uv run mypy src
See AGENTS.md for the project layout and rules.
PIAZZA_KEEP_UNREAD=true to mark unread posts unread again.get_course_info shows the names of the resource sections only.get_post returns the poll data as Piazza sends it.get_course_stats returns an error.MIT. This project is not affiliated with Piazza.