mcp-piazza について
mcp-piazza は、コース参加者が AI アシスタントから Piazza の議論やコース情報を検索するための読み取り専用 MCP サーバーです。投稿履歴や添付ファイルも取得できますが、投稿や編集はできません。
主な機能
- 01コースとコース情報の一覧
- 02投稿と未読アクティビティの検索
- 03スレッド全文と投稿履歴の取得
- 04教員メモ・統計・添付ファイルの表示
- 05追跡・試験準備用プロンプト
活用シーン
- 01最近のコース投稿の要約
- 02質問への回答済み確認
- 03試験関連の議論から情報を整理
- 04オフィスアワーと教員情報の確認
MCP 対応
MCP サーバーは、Piazza のコース、投稿、添付ファイルなどを読むためのツール、プロンプト、リソースをクライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx mcp-piazzaPIAZZA_EMAILPiazza account email. Not needed after 'mcp-piazza login'.PIAZZA_PASSWORDシークレットPiazza account password. Not needed after 'mcp-piazza login'.PIAZZA_COOKIE_FILEPath of the saved session file.PIAZZA_ANONYMIZE_STUDENTSReplace student names with pseudonyms.PIAZZA_FENCE_CONTENTMark post text as untrusted data.PIAZZA_MIN_INTERVALMinimum seconds between Piazza requests.PIAZZA_CACHE_TTLSeconds to keep feeds and posts in memory.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
12掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| refresh | boolean | いいえ |
詳細
mcp-piazza
Piazza 用の読み取り専用Model Context Protocol サーバーです。 Claude Code、Claude Desktop、Cursor、VS Code、Windsurf、Zed、Cline、Codex、Gemini CLI、Goose、opencode、JetBrains、LM Studio、Continue など、あらゆる MCP クライアントで動作します。
アシスタントにコースについて質問できます。
- 「今週、Piazzaで見逃した内容は何ですか?」
- 「CSE 12のHW3について、未解決の質問はありますか?」
- 「中間試験の教室について、すでに誰か質問しましたか?」
- 「TAのオフィスアワーはいつですか?」
- 「@142で講師が変更した内容は何ですか?」
このサーバーはデータを読み取るだけです。投稿、編集、賛同、削除はできません。
クイックスタート
-
uvをインストールします。
-
初回のみログインします。このコマンドを実行すると、ブラウザーでログインページが開きます。
uvx mcp-piazza loginこの手順はスキップすることもできます。サーバーにセッションがない場合は、最初のツール呼び出し時に同じページが開き、そのリンクが表示されます。
-
サーバーをクライアントに追加します。サーバーコマンドは、引数に
mcp-piazzaを指定したuvxです。例:claude mcp add --scope user --transport stdio piazza -- uvx mcp-piazza # Claude Code codex mcp add piazza -- uvx mcp-piazza # Codex CLIClaude Desktop、Cursor、VS Code、Windsurf、Zed、Gemini CLI などのクライアントについては、docs/clients.mdを参照してください。
-
「自分のPiazzaコースを一覧表示して」と質問します。
ツール、プロンプト、リソース
| ツール | 用途 |
|---|---|
list_courses | ID、コース番号、学期、役割、アクティブ状態、フォルダーとともに、コースを一覧表示します。 |
get_course_info | コースのページを取得します。説明、シラバス、オフィスアワー、一般情報、メールアドレス付きのスタッフが含まれます。 |
get_unread_counts | アクティブな各コースの未読投稿数を数えます。 |
recent_activity | 指定した時刻(24h、7d、2026-10-01)以降に新しい動きがあった投稿を、すべてのアクティブなコースまたは1つのコースから一覧表示します。 |
list_posts | 投稿の概要を一覧表示します。フィルター:all、unread、following、unresolved、unanswered、mine、starred。folder とページネーションも指定できます。 |
search_posts | 1つのコースまたはすべてのアクティブなコースから、キーワードで投稿を検索します。 |
get_post | 質問、講師の回答、学生の回答、追加の質問、返信、投票データを含むスレッド全体を読み込みます。 |
get_posts | 1回の呼び出しで最大20件のスレッド全体を読み込みます。 |
get_post_history | 投稿のすべてのバージョンと、各バージョン間の差分を表示します。 |
list_instructor_notes | 講師が作成したメモと投票を一覧表示します。 |
get_attachment | 投稿に添付された画像またはファイルを開きます。モデルは画像を認識できます。 |
get_course_stats | コースの統計ページのデータを取得します。 |
すべてのツールでは、コースID、CSE 12 や cse12 のようなコース番号、またはコース名の一部を指定できます。
| プロンプト | 用途 |
|---|---|
catch_up | 指定した時刻以降のすべての投稿を読み、あなたが取るべき対応とともに要約します。 |
before_asking | 質問がすでに投稿され、回答されているかを確認します。 |
exam_prep | 試験やトピックに関するすべての投稿を読み、事実をまとめます。 |
多くのクライアントでは、プロンプトがスラッシュコマンドとして表示されます。
| スキル | 用途 |
|---|---|
piazza-catch-up | スキルを使用するエージェント向けの catch_up の手順です。 |
piazza-exam-prep | exam_prep の手順です。 |
piazza-before-asking | before_asking の手順です。 |
スキルは Claude Code、Cursor、Codex、opencode、その他のエージェントで動作します。サーバーが必要です。インストールするには:
npx skills add jadenpxrk/mcp-piazza
| リソース | 内容 |
|---|---|
piazza://courses | あなたのコース |
piazza://courses/{course_id}/posts/{number} | 1つのスレッド全体 |
パラメーターと出力フィールドについては docs/tools.md を、使用例については docs/workflows.md をご覧ください。
認証
Piazza には公開 API がありません。 このサーバーは piazza-api を使用しており、Piazza のウェブサイトと同じ方法でログインします。
| 方法 | 手順 | 使用する場面 |
|---|---|---|
| ログインページ | mcp-piazza login、または最初のツール呼び出しで表示されるリンクを使用します | ほとんどのユーザー向けです。ログインページでは、以下の3つの方法を選べます。 |
| ブラウザーセッション | mcp-piazza login --browser | Chrome、Arc、Brave、Edge、Firefox、Safari、Chromium、Vivaldi、Opera のいずれかで piazza.com にログインしている場合に使用します。学校の SSO にも対応しています。 |
| パスワード | mcp-piazza login --password | ターミナルでメールアドレスとパスワードを入力する場合に使用します。 |
| セッションクッキー | mcp-piazza login --cookie | ブラウザーの開発者ツールから session_id クッキーをコピーして貼り付ける場合に使用します。 |
| 環境変数 | PIAZZA_EMAIL、PIAZZA_PASSWORD | セッションの有効期限が切れたときに自動でログインする場合に使用します。 |
どの方法でも、セッションクッキーのみがファイルモード 600 で ~/.config/mcp-piazza/cookies.json に保存されます。パスワードは保存されません。
セッションの有効期限が切れると、次のツール呼び出し時にログインページが再び開きます。mcp-piazza logout を実行すると、セッションが削除されます。
Configuration
| Variable | Default | Purpose |
|---|---|---|
PIAZZA_EMAIL | none | 自動ログインに使用するアカウントのメールアドレスです。 |
PIAZZA_PASSWORD | none | 自動ログインに使用するアカウントのパスワードです。 |
PIAZZA_COOKIE_FILE | ~/.config/mcp-piazza/cookies.json | 保存済みセッションのパスです。 |
PIAZZA_ANONYMIZE_STUDENTS | false | 学生の名前を仮名に置き換えます。 |
PIAZZA_FENCE_CONTENT | true | 投稿テキストを信頼できないデータとしてマークします。 |
PIAZZA_KEEP_UNREAD | false | サーバーが未読投稿を読み取った後、再び未読にします。 |
PIAZZA_MIN_INTERVAL | 0.5 | Piazza へのリクエスト間の最小秒数です。 |
PIAZZA_CACHE_TTL | 60 | フィードと投稿をメモリ内に保持する秒数です。0 にするとキャッシュを無効にします。 |
使用例とコマンドラインについては、docs/configuration.md を参照してください。
プライバシーと安全性
- 読み取り専用です。 サーバーには Piazza のデータを変更するツールはありません。書き込み操作は、任意設定の
PIAZZA_KEEP_UNREADによる復元のみです。 - プロンプトインジェクション対策。 投稿テキストは他のコースメンバーが書き込んだものです。サーバーはそのテキストを
<<<UNTRUSTED PIAZZA TEXT ...>>>マーカーで囲み、データとして扱うようモデルに指示します。 - 学生の仮名化。
PIAZZA_ANONYMIZE_STUDENTS=trueの場合、他の学生はStudent 3f2a1cのように表示されます。スタッフの名前はそのままです。自分の投稿はyouと表示されます。 - ローカルのみです。 サーバーはお使いのコンピューター上で動作します。Cookie の送信先は
piazza.comのみです。
モデルとその制限について詳しくは、docs/privacy.md を参照してください。
開発
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
プロジェクトの構成とルールについては、AGENTS.md を参照してください。
制限事項
- Piazza は内部 API をいつでも変更する可能性があります。Piazza の更新後にツールが動作しなくなった場合は、docs/troubleshooting.md を参照してください。
- サーバーが投稿全体を読み取ると、ウェブサイトと同様に、Piazza はその投稿を既読にし、閲覧数を加算します。未読投稿を再び未読にするには、
PIAZZA_KEEP_UNREAD=trueを設定してください。 - コースページのファイルとリンク(Resources タブ)は利用できません。
get_course_infoで確認できるのは、リソースセクションの名前のみです。 - Piazza は投票の形式を公開していません。
get_postは Piazza が送信する形式のまま投票データを返します。 - 講師によっては Statistics ページを非表示にしています。そのようなコースでは、
get_course_statsはエラーを返します。
ライセンス
MIT。このプロジェクトは Piazza とは提携していません。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。