mcpField
M
mcp-piazza

mcp-piazza

ローカル
github.com/jadenpxrk科学・教育22 週間前に更新

mcp-piazza について

mcp-piazza は、コース参加者が AI アシスタントから Piazza の議論やコース情報を検索するための読み取り専用 MCP サーバーです。投稿履歴や添付ファイルも取得できますが、投稿や編集はできません。

主な機能

  1. 01コースとコース情報の一覧
  2. 02投稿と未読アクティビティの検索
  3. 03スレッド全文と投稿履歴の取得
  4. 04教員メモ・統計・添付ファイルの表示
  5. 05追跡・試験準備用プロンプト

活用シーン

  1. 01最近のコース投稿の要約
  2. 02質問への回答済み確認
  3. 03試験関連の議論から情報を整理
  4. 04オフィスアワーと教員情報の確認

MCP 対応

MCP サーバーは、Piazza のコース、投稿、添付ファイルなどを読むためのツール、プロンプト、リソースをクライアントに提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"jadenpxrk-mcp-piazza": {
"command": "uvx",
"args": [
"mcp-piazza"
],
"env": {
"PIAZZA_EMAIL": "<PIAZZA_EMAIL>",
"PIAZZA_PASSWORD": "<PIAZZA_PASSWORD>",
"PIAZZA_COOKIE_FILE": "<PIAZZA_COOKIE_FILE>",
"PIAZZA_ANONYMIZE_STUDENTS": "<PIAZZA_ANONYMIZE_STUDENTS>",
"PIAZZA_FENCE_CONTENT": "<PIAZZA_FENCE_CONTENT>",
"PIAZZA_MIN_INTERVAL": "<PIAZZA_MIN_INTERVAL>",
"PIAZZA_CACHE_TTL": "<PIAZZA_CACHE_TTL>"
}
}
}
}
起動コマンドuvx mcp-piazza
設定が必要な環境変数
PIAZZA_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 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypimcp-piazza0.1.0

ツール

12

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
refreshbooleanいいえ

詳細

mcp-piazza

CI PyPI Python OpenSSF Scorecard License: MIT

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で講師が変更した内容は何ですか?」

このサーバーはデータを読み取るだけです。投稿、編集、賛同、削除はできません。

クイックスタート

  1. uvをインストールします。

  2. 初回のみログインします。このコマンドを実行すると、ブラウザーでログインページが開きます。

    uvx mcp-piazza login
    

    この手順はスキップすることもできます。サーバーにセッションがない場合は、最初のツール呼び出し時に同じページが開き、そのリンクが表示されます。

  3. サーバーをクライアントに追加します。サーバーコマンドは、引数に mcp-piazza を指定した uvx です。例:

    claude mcp add --scope user --transport stdio piazza -- uvx mcp-piazza   # Claude Code
    codex mcp add piazza -- uvx mcp-piazza                                   # Codex CLI
    

    Claude Desktop、Cursor、VS Code、Windsurf、Zed、Gemini CLI などのクライアントについては、docs/clients.mdを参照してください。

  4. 「自分のPiazzaコースを一覧表示して」と質問します。

ツール、プロンプト、リソース

ツール用途
list_coursesID、コース番号、学期、役割、アクティブ状態、フォルダーとともに、コースを一覧表示します。
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_posts1つのコースまたはすべてのアクティブなコースから、キーワードで投稿を検索します。
get_post質問、講師の回答、学生の回答、追加の質問、返信、投票データを含むスレッド全体を読み込みます。
get_posts1回の呼び出しで最大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-prepexam_prep の手順です。
piazza-before-askingbefore_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 --browserChrome、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

VariableDefaultPurpose
PIAZZA_EMAILnone自動ログインに使用するアカウントのメールアドレスです。
PIAZZA_PASSWORDnone自動ログインに使用するアカウントのパスワードです。
PIAZZA_COOKIE_FILE~/.config/mcp-piazza/cookies.json保存済みセッションのパスです。
PIAZZA_ANONYMIZE_STUDENTSfalse学生の名前を仮名に置き換えます。
PIAZZA_FENCE_CONTENTtrue投稿テキストを信頼できないデータとしてマークします。
PIAZZA_KEEP_UNREADfalseサーバーが未読投稿を読み取った後、再び未読にします。
PIAZZA_MIN_INTERVAL0.5Piazza へのリクエスト間の最小秒数です。
PIAZZA_CACHE_TTL60フィードと投稿をメモリ内に保持する秒数です。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 とは提携していません。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。