Google Classroom MCP for students について
Google Classroomを利用する学生向けのオープンソースMCPサーバーで、AIアプリからクラス、課題、成績、教員コメントを参照できます。すべてのツールが読み取り専用で、目標成績の計画や最近の動向の要約にも対応します。
主な機能
- 01未提出、期限超過、近日締切の課題確認
- 02返却済み課題の成績と教員コメントの閲覧
- 03目標成績に必要な点数の計算
- 04告知とクラス教材の確認
- 05新しい成績、告知、課題の要約
活用シーン
- 01各クラスで今週提出する課題の確認
- 02採点済み課題への教員コメントの確認
- 03目標パーセンテージに必要な点数の計画
- 04最近のクラス変更や期限超過課題の把握
MCP 対応
Google Classroomのクラス、課題、成績、告知、教材にアクセスする読み取り専用ツールをMCPクライアントに提供します。提出、編集、削除はできません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
学生向け Google Classroom MCP サーバー
Google Classroomで実際に残っている課題をAIに聞いてみましょう。
これはGoogle Classroom MCPサーバーです。無料のオープンソースMCPサーバーで、Claude、ChatGPT、CursorなどのAIアプリから、Classroomのクラス、課題、締め切り、未提出の課題、返却された課題の成績と教師のコメント、目標成績に到達するために必要な点数、お知らせ、授業の資料、追いつくためのダイジェストを読み取れます。読み取り専用です。提出、編集、削除は一切できません。Googleとは提携していません。
永久に無料です。登録もサブスクリプションも不要です。ログイン情報が送信されるのはGoogleだけです。
今すぐ試す
セットアップ後、次のように質問してみましょう。
- 「まだ提出が必要なものは何ですか?」
- 「期限を過ぎたものはありますか?」
- 「今週、すべてのクラスで締め切りを迎えるものは何ですか?」
- 「課題について先生は何と言っていましたか?」
- 「90点を取るには何点必要ですか?」
- 「昨日から何か新しいことはありましたか?」
回答例
3つ目の質問では、get_upcoming_due_dates が呼び出されます。クラスを読み取り、課題ごとに1行を締め切りが近い順に表示します。回答例は次のとおりです。
- Essay outline (English) due Fri, Oct 23
- Lab write up (Biology) due Fri, Oct 23, 11:59 p.m. UTC
- Problem set 4 (Calculus) due Mon, Oct 26
各行には、課題名、クラス、締め切りが表示されます。すでに提出した課題は表示されません。このツールに days_ahead を7に設定して渡すと、1週間先まで確認できます。Classroomでは締め切りの時刻がUTCで保持され、サーバーはお使いのタイムゾーンで表示します。回答例は学生からよくある質問にも掲載しています。
npxですぐに始める
npxでGoogle Classroom MCPサーバーをインストールし、AIアプリに追加します。npx google-classroom-student-mcp setup を実行すると、環境に設定されている場合は3つのGoogleの値が入力された状態で、以下の設定ブロックが表示されます。使用するアプリを選んでください。
Claude Desktop
これを claude_desktop_config.json に追加します。
{
"mcpServers": {
"classroom": {
"command": "npx",
"args": ["-y", "google-classroom-student-mcp"],
"env": {
"GOOGLE_CLIENT_ID": "your-id",
"GOOGLE_CLIENT_SECRET": "your-secret",
"GOOGLE_REFRESH_TOKEN": "paste-from-login"
}
}
}
}
Claude Code
次のコマンドを実行します。
claude mcp add google-classroom-student-mcp \
-e GOOGLE_CLIENT_ID=your-id \
-e GOOGLE_CLIENT_SECRET=your-secret \
-e GOOGLE_REFRESH_TOKEN=paste-from-login \
-- npx -y google-classroom-student-mcp
または、Claude Desktopと同じJSONブロックをプロジェクトフォルダー内の .mcp.json ファイルに記述するか、claude mcp add-json に渡して実行します。
Cursor
プロジェクトフォルダー内の .cursor/mcp.json、またはどこからでも使えるように ~/.cursor/mcp.json に記述します。
{
"mcpServers": {
"classroom": {
"command": "npx",
"args": ["-y", "google-classroom-student-mcp"],
"env": {
"GOOGLE_CLIENT_ID": "your-id",
"GOOGLE_CLIENT_SECRET": "your-secret",
"GOOGLE_REFRESH_TOKEN": "paste-from-login"
}
}
}
}
その他のMCPアプリでも、同じ mcpServers JSONを使用し、command を npx に、args を ["-y", "google-classroom-student-mcp"] に設定します。
セットアップ(約10分、初回のみ)
Google ではアプリごとに個別の権限を求められるため、自分だけが使う小さなプライベート「アプリ」を作成します。
- Google Cloud コンソールにアクセスして、プロジェクトを作成します。
- そのプロジェクトで Google Classroom API を有効にします(APIs & Services > Library)。
- APIs & Services > OAuth consent screen で、種類を External に設定し、自分の Google アカウントをテストユーザーとして追加します。
- Credentials で、種類が Desktop app の OAuth client ID を作成します。クライアント ID とシークレットをコピーします。
- 初回のサインインを実行します。
GOOGLE_CLIENT_ID=your-id GOOGLE_CLIENT_SECRET=your-secret npx google-classroom-student-mcp login
表示されたリンクを開き、読み取り専用アクセスを許可して、表示された3つの値をコピーします。
-
それらを AI アプリの MCP 設定に追加します。
npx google-classroom-student-mcp setupを実行して、アプリ用のブロックを貼り付けるか、上記のクイックスタートにある形式のいずれかを使用します。 -
AI アプリを再起動して、「今週の課題は何ですか?」と尋ねます。
セットアップが正しく動作するか確認するには、いつでも npx google-classroom-student-mcp doctor を実行できます。
アプリのセットアップなしで簡単にテストするには、Classroom の読み取り専用スコープを指定した OAuth Playground のトークンを
GOOGLE_ACCESS_TOKENに設定します。トークンは約1時間で使えなくなります。
生徒からよくある質問
以下は、生徒からよくある質問と、それぞれに回答するツールです。回答はチャットに表示され、そのまま読めます。
| 質問 | ツール | 回答に含まれる内容 |
|---|---|---|
| 「提出がまだ必要なものは何ですか?」 | get_todo | 未提出の課題すべて。Classroom で開くためのリンク付きです |
| 「期限を過ぎているものは何ですか?」 | get_missing_assignments | 期限が過ぎていて、まだ提出されていない課題です |
| 「すべてのクラスで今週が期限のものは何ですか?」 | get_upcoming_due_dates | 近日中に期限を迎える課題です。期限が近い順に表示されます |
| 「先生は私の課題について何と言っていましたか?」 | get_my_grades | 採点済みの課題に先生が残したコメント、スコア、および Classroom で開くためのリンクです |
| 「90%を取るには何点必要ですか?」 | get_target_grade | 各クラスでその割合に達するために、残っている課題で必要な点数です |
| 「先生たちは最近何を投稿しましたか?」 | get_announcements | すべてのクラスからの最近のお知らせです |
| 「昨日から何か変わりましたか?」 | get_whats_new | 新しいお知らせ、新しい成績、期限超過の課題、次に期限を迎える課題です |
回答の例を以下に示します。
get_todo の回答例
「提出がまだ必要なものは何ですか?」という質問は get_todo に送られます。未提出のものがすべて表示され、それぞれのタイトルの下に Classroom のページが表示されるので、課題自体を開けます。
- Lab safety form (English) due Fri, Oct 9
link: https://classroom.google.com/c/English/course/1/courseWork/w2
- Chapter 3 questions (Biology) due Mon, Oct 19
link: https://classroom.google.com/c/Biology/course/2/courseWork/w4
- Essay outline (English) due Fri, Oct 23
link: https://classroom.google.com/c/English/course/1/courseWork/w1
- Lab write up (Biology) due Fri, Oct 23, 11:59 p.m. UTC
link: https://classroom.google.com/c/Biology/course/2/courseWork/w3
- Problem set 4 (Calculus) due Mon, Oct 26
link: https://classroom.google.com/c/Calculus/course/3/courseWork/w5
すでに提出した課題は除外され、期限のない課題は最後に表示されます。一部のクラスだけを確認するには、course_ids を指定します。
get_missing_assignments の回答例
「期限を過ぎているものは何ですか?」という質問は get_missing_assignments に送られます。期限が過ぎていて、まだ提出されていない課題が、最も新しい期限のものから表示されます。
- Chapter 3 questions (Biology) was due Mon, Oct 19
- Lab safety form (English) was due Fri, Oct 9
get_whats_new の回答例
「昨日から何か変わりましたか?」という質問は get_whats_new に送られます。新しいお知らせ、新しい成績、期限超過の課題、次に期限を迎える課題をまとめたダイジェストが表示されます。この例の時刻は UTC です。
New announcements (last 7 days)
- Biology (Wed, Oct 21, 8:00 a.m. UTC) Field trip permission slip due Friday
- English (Tue, Oct 20, 9:00 a.m. UTC) Bring your textbook
New grades (last 7 days)
- Midterm review (Calculus) graded 88/100 on Tue, Oct 20, 3:00 p.m. UTC
teacher said: Good work on the analysis. Watch the units on question 3.
link: https://classroom.google.com/c/Calculus/course/3/courseWork/w6
Overdue work
- Chapter 3 questions (Biology) was due Mon, Oct 19
- Lab safety form (English) was due Fri, Oct 9
Due next (14 days)
- Essay outline (English) due Fri, Oct 23
- Lab write up (Biology) due Fri, Oct 23, 11:59 p.m. UTC
- Problem set 4 (Calculus) due Mon, Oct 26
さらに過去まで確認するには since_days を、さらに先まで確認するには days_ahead を指定します。
ツール
すべてのツールは読み取り専用です。
| ツール | 機能 |
|---|---|
get_my_courses | 履修中のクラスとその ID |
get_todo | まだ提出していない、割り当て済みの課題すべて |
get_upcoming_due_dates | 期限が近い課題を、期限が近い順に表示 |
get_missing_assignments | 期限を過ぎていて、まだ提出していない課題 |
get_assignments | 期限とステータスを含む、クラスの課題 |
get_my_grades | 各クラスで返却済みの課題について獲得した点数と、教師が残したコメント |
get_target_grade | 目標パーセンテージに達するため、残りの課題で必要な点数 |
get_announcements | 最近のお知らせ |
get_course_materials | クラスに投稿された教材 |
get_whats_new | 新しいお知らせ、新しい成績、期限超過の課題、次の期限をまとめた最新情報 |
同じ一覧は llms.txt にプレーンテキストで記載されています。各ツールの説明と引数が、1 行に 1 つずつ記載されています。このファイルはパッケージに同梱されているため、プレーンテキストファイルを読み取るサイトのインデックスや AI アプリで利用できます。
get_todo、get_assignments、get_announcements、get_course_materials は、各項目のタイトルの下に Classroom のページを表示するため、AI は課題への直接リンクを学生に渡せます。get_course_materials は、教材に添付されている各ファイルの Drive リンクも表示します。Classroom がリンクを送信するのは、公開済みの項目のみです。
Google Classroom にはコース全体の成績がないため、get_my_grades は採点済みの課題のみを合計し、その旨を示します。
get_my_grades と get_whats_new は、課題が返却された際に教師が書いた内容を、点数の下に、その課題の Classroom ページとともに表示します。get_my_grades は、コメントが付いている採点済みの課題をクラスごとに一覧表示します。
get_todo、get_upcoming_due_dates、get_missing_assignments、get_my_grades、get_target_grade、get_whats_new では、コース ID(course_ids)の任意のリストを指定できます。これにより、すべてのクラスではなく、一部のクラスについてのみ尋ねることができます。get_upcoming_due_dates と get_whats_new では、先の期間を調べる日数(days_ahead)も任意で指定できます。get_whats_new では、さかのぼって調べる日数(since_days)も任意で指定でき、デフォルトは 7 日です。get_announcements でもコース ID(course_ids)を指定できます。get_target_grade では、必須の target_percent に 0 から 100 までの値を指定します。これは、目標とするクラスのパーセンテージです。
get_target_grade は、採点済みの課題で獲得した点数と、残りの課題に割り当てられている点数を合計します。次に、target_percent に達するために必要な点数を算出します。まだ採点されておらず、配点のある課題は残りの課題として扱われます。教師がすでに返却していて採点されていない課題は、残りの課題から除外されます。目標達成に必要な点数が残りの課題の配点を超える場合は、その旨と、まだ達成可能な最高パーセンテージを回答します。サーバーが認識するのは各課題の点数のみで、教師が使用する可能性のある重み付けは認識しないため、すべての点数を同じ重みで扱います。
get_whats_new は、最新情報をまとめたダイジェストです。新しいお知らせ、新しい成績と教師が残したコメント、期限超過の課題、次の期限を 1 つの回答に表示します。お知らせが対象期間内に投稿または変更された場合、新しいお知らせとして扱います。新しい成績の日付は、課題に教師のコメントがある場合はそのコメントの日付、ない場合は課題が最後に変更された日付です。コメント自体は成績の下に表示されます。
Google Classroom と Brightspace の MCP
Google Classroom と D2L Brightspace は異なるプラットフォームなので、それぞれ別のサーバーが必要です。このサーバーは Google Classroom を読み取ります。Brightspace MCP は D2L Brightspace を読み取ります。両者を比較すると、次のようになります。
| Google Classroom MCP(このサーバー) | Brightspace MCP | |
|---|---|---|
| プラットフォーム | Google Workspace for Education に含まれる Google Classroom | 大学や短大で広く使われている D2L Brightspace |
| インストール | npx -y google-classroom-student-mcp setup を実行すると、環境に3つの値が設定されていれば、それらが入力済みの設定を出力します。これをアプリに貼り付けます | npx brightspace-d2l-mcp setup を実行すると、設定が自動で書き込まれます |
| サインイン | Google Cloud コンソールで独自の OAuth アプリを作成し、1回だけサインインしてから、クライアント ID、クライアントシークレット、リフレッシュトークンを貼り付けます | 学校を選び、ブラウザーウィンドウで学校のアカウントを使ってサインインします。学校で使われているサインイン方法を利用でき、パスワードが保存されることはありません |
| セットアップ後 | Cloud アプリがテストモードの間、Google はリフレッシュトークンを7日ごとに失効させるため、ときどきログインコマンドを再実行します | サインイン状態は維持され、学校から再度サインインを求められたときだけブラウザーウィンドウが開きます |
| 学校側で必要な対応 | ありません。自分の Google アカウントと Cloud プロジェクトだけで利用できますが、学校の管理者がサードパーティアプリをブロックすることは可能です | ありません。自分の学生アカウントでサインインするため、管理者から API キーを受け取る必要はありません |
| 授業と課題 | 受講中の授業と、各課題の締切日、配点、提出済みかどうか、Classroom で開くためのリンクを表示します | 登録しているコースと、各課題および小テストの実際の提出状況を表示します |
| 成績 | 返却済みの課題で獲得した点数をクラスごとに集計し、残りの課題で必要な点数を示す目標成績ツールも利用できます。Google Classroom には総合成績がないため、割合は採点済みの課題だけを対象とします | コースごとの成績の内訳として、点数、割合、講師のコメントを表示します。残りの課題で必要な点数を示す目標成績ツールも利用できます |
| お知らせ | 最近のお知らせに加え、新しいお知らせ、新しい成績、期限超過の課題、次の締切をまとめたキャッチアップ用ダイジェストを表示します | 最近のお知らせに加え、新たに採点された課題、未読のディスカッション、まだ受けていない小テストも含むキャッチアップ用ダイジェストを表示します |
| コースのファイル | クラスに投稿された教材を表示します。それぞれに開くためのリンクがあり、添付ファイルごとに Drive のリンクも表示されます | コースのモジュール、ファイル、リンク、シラバス、課題に添付されたファイル、ディスカッション、クラス名簿、試験や実習などのカレンダーイベントを表示します。また、選択したフォルダーへのコースファイルの保存や、締切日のカレンダーファイルの作成もできます |
| 読み取り専用 | はい。提出、編集、削除は一切できません | はい。Brightspace から読み取るだけです |
| 価格とライセンス | 永久無料、オープンソース、MIT ライセンス | オープンソース、MIT ライセンスで、自分のコンピューター上で動作します |
どちらのサーバーも読み取り専用なので、課題を代わりに提出することはできません。授業で Google Classroom を使っている場合は、このサーバーをインストールしてください。学校で D2L Brightspace を使っている場合は、代わりに Brightspace MCP をインストールしてください。
brightspace-mcp-server や brightspace-mcp など、ほかの Brightspace サーバーもあります。作者は brightspace-mcp.netlify.app/compare で、それらを並べて比較しています。
プライバシーとセキュリティ
- 認証情報はコンピューター上に保管され、Google にのみ送信されます。
- このプロジェクトから、ほかのサーバーにデータが送信されることはありません。
- 読み取り専用の権限のみを要求します。アクセス権はいつでも myaccount.google.com/permissions から削除できます。
トラブルシューティング
| メッセージ | 対処方法 |
|---|---|
| サインインしていません | 新しいリフレッシュトークンを取得するため、login を再実行してください。 |
| サインインに失敗しました。有効期限切れまたは取り消し済みです | アプリがテストモードの場合、Google は7日後にリフレッシュトークンを期限切れにします。login を再実行してください。 |
| アクセスが拒否されました | 学校の Google 管理者がサードパーティ製アプリをブロックしている可能性があります。管理者に問い合わせるか、個人アカウントを使用してください。 |
| 見つかりません | リクエスト内のコース ID またはアイテム ID を確認してください。 |
| レート制限に達しました | リクエストが多すぎます。1分待ってから再試行してください。 |
| Google がリフレッシュトークンを返しませんでした | 接続済みアプリからこのアプリを削除し、login を再実行してください。 |
開発
npm install
npm run build
npm test
テストは偽の Google サーバーに対して実行されるため、アカウントもネットワークも必要ありません。そのほかのテストでは、この README、llms.txt、glama.json のツール一覧にすべてのツールが記載されていること、llms.txt と glama.json のツールの説明がコードと一致していること、この README と llms.txt の各回答例がツールの実際の出力と一致していること、バージョンが package.json と一致していることを確認します。
--version が出力するバージョンと MCP ハンドシェイクで送信されるバージョンは package.json から取得されます。そのため、バージョンを更新する場合は、ほかの場所ではなくここだけを変更してください。
テストランナーには Node 22.12 以降が必要です。サーバー自体は Node 20 以降で動作します。
無料で使える学生向け MCP サーバー
すべて無料でオープンソースです。アカウントにアクセスする機能は読み取り専用です。全リストは brightspacemcp.com/more-mcps でご覧ください。
このサーバーは、Smithery、Glama、mcp.so のディレクトリにも掲載されています。
| サーバー | 機能 |
|---|---|
| Brightspace MCP | AI 向けの D2L Brightspace です。実際の提出状況を含む締め切り、成績、目標成績計算ツール、コースファイルを扱います。 |
| Canvas MCP | AI 向けの読み取り専用 Canvas LMS です。締め切り、未提出課題、成績、お知らせを扱います。 |
| Moodle MCP | AI 向けの読み取り専用 Moodle です。締め切り、期限超過の課題、成績、お知らせを扱います。 |
| GPA Calculator MCP | AI 向けの GPA、成績換算、期末試験で必要な成績を計算します。オフラインで動作し、アカウントは不要です。 |
| Citations MCP | DOI、ISBN、または入力した詳細情報から、APA、MLA、Chicago 形式の引用を作成します。アカウントは不要です。 |
| Study Planner MCP | 試験勉強のスケジュール、間隔反復の日程、ポモドーロ計画、課題のマイルストーンを作成します。オフラインで動作します。 |
| Paper Finder MCP | OpenAlex を通じて学術論文を検索し、オープンアクセス版や関連研究を見つけます。API キーは不要です。 |
2つの学校向けプラットフォームのどちらを選ぶか迷っていますか?Google Classroom と Brightspace MCP の比較をご覧ください。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。