Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PIAZZA_EMAILNoAccount email for automatic login.
PIAZZA_PASSWORDNoAccount password for automatic login.
PIAZZA_CACHE_TTLNoSeconds to keep feeds and posts in memory. 0 turns off the cache.60
PIAZZA_COOKIE_FILENoPath of the saved session.~/.config/piazza-mcp/cookies.json
PIAZZA_KEEP_UNREADNoMark unread posts unread again after the server reads them.false
PIAZZA_MIN_INTERVALNoMinimum seconds between Piazza requests.0.5
PIAZZA_FENCE_CONTENTNoMark post text as untrusted data.true
PIAZZA_ANONYMIZE_STUDENTSNoReplace student names with pseudonyms.false

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": true
}
resources
{
  "subscribe": false,
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_coursesA

List the user's Piazza courses with ID, course number, term, role, active status, and post folders.

Other tools accept the ID, the course number, or part of the name. Set refresh=true to reload from Piazza.

get_course_infoA

Get the course page: description, syllabus, office hours, general information, dates, and the staff list with names, roles and emails. Use it to find who teaches the course or when office hours are.

get_unread_countsA

Count the posts with unread content in each course. Sends one request per course.

By default only active courses are counted. Courses with no unread posts are left out.

get_course_statsB

Get the data from the course Statistics page. Some instructors hide this page from students.

list_postsA

List post summaries for a course, most recent activity first.

filter: "unread" = posts with content the user has not read. "following" = posts the user follows. "unresolved" = unanswered questions and posts with unresolved followups. "unanswered" = questions with no answer. "mine" = the user's own posts that show their name. "starred" = posts the user starred. folder: only posts in this folder, for example "hw1". list_courses shows the folder names. Summaries have a short snippet only. Call get_post or get_posts for full threads.

search_postsA

Search posts by keywords, like the Piazza search box, in one course or in all active courses.

Use it before the user asks a new question, to find duplicates. Returns post summaries grouped by course.

get_postB

Read one full thread: the question or note, both answers, and followups with replies.

number is the post number that Piazza shows as @123.

get_postsB

Read up to 20 full threads from one course in one call. A post that cannot be read has an "error" field.

get_post_historyA

Show every version of a post, oldest first, with author and time.

With diff=true, version 1 has the full text and each later version has only a diff from the version before. Use it to see what an instructor changed in an announcement or a question.

recent_activityB

List posts with new activity since a time, in all active courses or in one course.

since: a relative age such as 24h, 7d or 2w, or an ISO date such as 2026-10-01. The default is 7d. Use this tool for questions such as "what did I miss this week". Courses without activity are left out.

list_instructor_notesB

List notes and polls written by instructors, such as announcements and logistics, most recent first.

get_attachmentA

Open a file or image that a post links to, such as an [image: ...] link or a piazza.com upload link.

Images come back as images that the model can see. Text files come back as text. Other files, such as PDFs, come back as an embedded file if the client supports it. The maximum size is 10 MB.

Prompts

Interactive templates invoked by user choice

NameDescription
catch_upSummarize what happened on Piazza since a time, across all active courses.
before_askingCheck whether a question was already asked and answered in a course.
exam_prepCollect what instructors and students said about an exam or topic.

Resources

Contextual data attached and managed by the client

NameDescription
coursesThe user's Piazza courses.

TDQS

A3.7/5.0

Scored across 12 tools

Disambiguation4/5

Most tools have distinct purposes (e.g., get_course_stats vs get_course_info vs list_courses), but there is potential overlap between get_post and get_posts, and between list_posts and recent_activity; however, descriptions clarify their differences. The main ambiguity is that get_posts can read multiple threads, which might be confused with get_post or list_posts, but it's minor because of clear guidance.

Naming Consistency5/5

All tool names follow a consistent snake_case pattern with verb_noun structure (e.g., get_course_stats, list_courses, get_post_history). No deviations or mixed conventions are present.

Tool Count5/5

12 tools is well-scoped for a Piazza client, covering courses, posts, search, activity, and attachments without being excessive or too thin. Each tool appears to earn its place.

Completeness4/5

The tool surface covers many key operations: listing courses/posts, searching, reading threads, getting attachments, and instructor notes. However, obvious gaps exist: there is no tool to create or reply to posts, and no way to mark posts as read/unread or star/unstar, which are common Piazza actions. These gaps are minor but could limit agent workflows.

Maintenance

ActivityMaintained
ResponsivenessNo issues