📚 Microsoft Education MCP Server について
Microsoft Graph APIを通じてMicrosoft Educationのデータを管理するMCPサーバーです。教育関係者やAIツール連携向けに、クラス、課題、ルーブリック、名簿、提出物、採点を扱います。
主な機能
- 01クラスと名簿の確認
- 02課題の作成・更新と対象生徒の指定
- 03ルーブリックの作成・添付・再利用
- 04提出物と採点結果の確認
- 05MSALによるOAuth認証
活用シーン
- 01コース課題と期限の確認
- 02生徒の成績とルーブリックのフィードバック集約
- 03生徒向け補習課題の作成
- 04保護者面談に向けた成績概要の準備
MCP 対応
MCPクライアント向けにMicrosoft Educationの操作をツールとして公開し、Microsoft Graph APIを通じて実行します。ストリーミングトランスポートとOAuth 2.0認証に対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
📚 Microsoft Education MCP サーバー
⚠️ これは個人プロジェクトです。Microsoft とは提携しておらず、Microsoft による保守も行われていません。
このプロジェクトは、教育分野の Microsoft Graph API と統合するために構築されたカスタム Model Context Protocol(MCP)サーバーです。
VSCode、Copilot Studio、Claude、Microsoft AI Foundry のエージェントが、次の項目を管理できます。
- ✅ Microsoft Education のクラス
- ✅ 課題(作成、更新、対象の生徒の指定)
- ✅ ルーブリック(作成、添付、一覧表示)
- ✅ 生徒と教員(名簿)
- ✅ 提出物と採点
AI を活用したツール、テスト、インテリジェントなプロンプト統合向けに構築されています。
🚀 機能
- 🔐 Microsoft の委任認証(MSAL 経由の OAuth)
- 🧑🏫 クラスと名簿の確認
- 📝 課題の作成、更新、生徒の対象指定
- 🎓 ルーブリックの作成と再利用
- 📤 課題の提出物と結果の表示
- 🧠 VSCode、Copilot Studio、Claude、Microsoft AI Foundry 向けに設計
📂 構成
🔍 主要コンポーネント
-
start-mcp-server-streaming.js- OAuth 2.0 認証レイヤーを使用して、すべてのツールを読み込み、登録します。
- Windows アカウント選択との統合を備えた OAuth 2.0 サーバーを実装します。
- バックエンド API にアクセスするため、MSAL を介して Microsoft Graph の認証を管理します。
- Model Context Protocol SDK とストリーミングトランスポートを使用して、MCP サーバーを起動します。
-
tools/folder- 各ファイルで関連するツールのセットを定義し、サーバーに登録します。
- ツールは、Zod スキーマ検証と Microsoft Graph との統合を用いて、MCP 標準(
server.tool(...))に従います。
-
.env- Microsoft アプリの機密性の高い認証情報と設定を保存します。
- Microsoft Graph API の認証に必要です。
-
Example.env- 共有や共同作業者のオンボーディングに使える安全なテンプレートです。
この構成により、次のことが簡単に行えます。
- 機能の追加や変更(
tools/にファイルを追加するだけです) - ドメインごとにロジックを分離(例:課題とルーブリック)
- クリーンでスケーラブルな MCP 統合のサポート
🏗 Entra ID(Azure AD)でアプリケーションを登録する方法
このプロジェクトで Microsoft Graph API を使用するには、Entra ID でアプリを登録する必要があります。
1. Microsoft Entra 管理センターに移動する
- 次の URL にアクセスします:https://entra.microsoft.com
- 管理者アカウントでサインインします。
2. 新しいアプリケーションを登録する
-
「Applications」→「App registrations」 に移動します。
-
「New registration」 をクリックします。
-
次の項目を入力します。
- Name:
Microsoft Education MCP Server(または任意の名前) - Supported account types:シナリオに応じて選択します(通常は「この組織ディレクトリ内のアカウントのみ」です)。
- Redirect URI:今は空欄のままにします(Azure App Service の作成後に追加します)。
- Name:
-
「Register」 をクリックします。
3. API のアクセス許可を設定する
-
登録後、「API permissions」 に移動します。
-
「Add a permission」→ Microsoft Graph → Delegated permissions をクリックします。
-
次のアクセス許可を追加します(検索/フィルターを使って各項目を見つけてください)。
OpenID のアクセス許可:
offline_accessopenidprofile
EduAssignments:
EduAssignments.ReadWrite
EduRoster:
EduRoster.ReadWrite
User:
User.ReadWrite.All
-
「Add permissions」 をクリックします。
-
次に、「Configured permissions」 で 「Grant admin consent for [your tenant]」 をクリックし、テナント内のすべてのユーザーに対して承認します。
💡 ヒント:「Grant admin consent」ボタンは、管理者アカウントでサインインしている場合にのみ表示されます。この手順により、管理者だけでなく、すべてのユーザーがこれらのアクセス許可を使用できるようになります。
4. クライアントシークレットを生成する
- **「Certificates & secrets」**に移動します
- Client secretsで、**「New client secret」**をクリックします
- Description:任意のラベルを入力します(例:
mcp-server-secret)。後で識別するための名前です。 - Expires:有効期限を選択します(例:6か月または12か月)
- **「Add」**をクリックします
- 「Value」をすぐにコピーします。これが
CLIENT_SECRETです。このページを離れると、再度表示できなくなります!
⚠️ 重要:「Value」列にあるのがシークレットで、「Secret ID」ではありません。安全な場所(パスワードマネージャーやメモ帳など)に保存してください。後で必要になります。
5. これらの値を保存する
アプリ登録の**「Overview」**ページに移動して、以下の値をコピーします。メモ帳に保存してください。Azure のデプロイ時に必要になります。
| 名前 | 確認場所 |
|---|---|
CLIENT_ID | Overview ページのApplication (client) ID |
CLIENT_SECRET | ステップ4でコピーしたValue |
TENANT_ID | Overview ページのDirectory (tenant) ID |
REDIRECT_URI | 下記の Azure デプロイセクションで作成します。今はスキップしてください |
🚀 Azure デプロイガイド
OAuth 2.0 認証を使用して、本番環境向けに MCP サーバーを Azure App Service にデプロイします。
1. 📋 前提条件
- ✅ Azure サブスクリプション
- ✅ Azure アプリ登録(上記で完了)
- ✅ コードを GitHub リポジトリにプッシュ済み
2. 🏗️ Azure App Service を作成する
Azure Portal
- Azure Portalに移動します
- Create a resource → Web App
- 以下を設定します:
- Subscription:サブスクリプション
- Resource Group:新規作成するか、既存のものを使用します(例:
edumcp-resource-group) - Name:
your-app-name(組織に適した名前を選んでください。Azure 内で一意の名前にする必要があります。) - Publish:
Code - Runtime stack:
Node 22 LTS - Operating System:
Linux - Region:ユーザーに最も近いリージョンを選択します
- Linux Plan:Default
- Pricing Plan:Default
- **「Review + create」をクリックし、検証後に「Create」**をクリックします。1、2分でデプロイされます。
3. 🔐 環境変数を設定する
Azure Portal → App Services → [Your App] → Settings → Environment Variablesに移動し、**「+ Add」**をクリックします:
以下の4つの環境変数を追加します(名前 → 値):
| 名前 | 値 |
|---|---|
CLIENT_ID | Entra の Application (client) ID |
TENANT_ID | Entra の Directory (tenant) ID |
CLIENT_SECRET | 先ほど保存したクライアントシークレットの Value |
REDIRECT_URI | https://<YOUR_APP_NAME>.azurewebsites.net/oauth/callback |
<YOUR_APP_NAME>は、ステップ2で選択した App Service 名に置き換えてください(例:edumcp-server-prod)。
4つすべてを追加したら、**「Apply」をクリックし、続けて「Confirm」**をクリックして App Service を再起動します。
4. � Entra ID(Azure AD)にリダイレクト URI を追加する
App Service が作成され、URL がわかったら、アプリ登録に戻ってリダイレクト URI を追加する必要があります。
⚠️ 重要:アプリ登録時にリダイレクト URI の追加をスキップした場合、この手順を完了するまで認証に失敗します。
リダイレクト URI を追加する手順:
- Microsoft Entra Admin Centerに移動します
- **「Entra ID」→「App registrations」**に移動します
- 一覧から登録済みのアプリケーションを選択します
- 左側のサイドバーで**「Authentication」**をクリックします
- **「Platform configurations」で、「Add a platform」**をクリックします
- **「Web」**を選択します
- **「Redirect URIs」**フィールドに、以下を入力します:
https://<YOUR_APP_NAME>.azurewebsites.net/oauth/callback<YOUR_APP_NAME>を実際の Azure App Service 名に置き換えてください(例:edumcp-server-prod)。 - **「Configure」**をクリックして保存します
5. �📦 コードをデプロイする
オプション A:外部 Git(推奨)
⚠️ 注:デプロイする前に、Azure で SCM 基本認証を有効にする必要があります。
App Service → Configuration → General settings → SCM Basic Auth Publishing Credentials → On に進み、"Apply" をクリックします。
続いて、デプロイを行います。
- Azure Portal → App Services → [Your App] → Deployment → Deployment Center
- Source:Manual Deployment → External Git
- Repository:
https://github.com/jesegher/EduMCPServer.git - Branch:
main - Repository Type:Public
- "Save" をクリックします。
オプション B:VS Code 拡張機能
- Azure App Service 拡張機能をインストールします
- プロジェクトを右クリック → Deploy to Web App
- サブスクリプションと App Service を選択します
6. 🎯 MCP クライアントを構成する
本番環境用に MCP クライアントの構成を更新します。
VS Code MCP クライアントの構成:
VS Code の mcp.json(ユーザー設定)に追加します。
{
"servers": {
"EDUMCP Server": {
"url": "https://your-app-name.azurewebsites.net/mcp",
"type": "http"
}
}
}
VS Code は /.well-known/oauth-authorization-server エンドポイントを通じて OAuth 構成を自動的に検出します。
Claude(Anthropic):
Claude の MCP サーバー設定で、次の URL を指定してリモート MCP サーバーを追加します。
https://your-app-name.azurewebsites.net/mcp
Claude は動的クライアント登録と OAuth 2.0 を自動的に使用します。
Microsoft AI Foundry:
AI Foundry プロジェクトで、次のエンドポイントを指定してリモート MCP ツールを追加します。
https://your-app-name.azurewebsites.net/mcp
Foundry は /.well-known/oauth-authorization-server エンドポイントを通じて OAuth 構成を検出します。
7. ✅ デプロイを確認する
-
エンドポイントをテストする:
- ヘルスチェック:
https://your-app-name.azurewebsites.net - OAuth 検出:
https://your-app-name.azurewebsites.net/.well-known/oauth-authorization-server
- ヘルスチェック:
-
Azure Portal → App Service → Log stream でログを確認します
-
MCP クライアントで認証をテストします
8. 🛡️ 本番環境のセキュリティ
- ✅ 機密性の高いシークレットには Key Vault を使用します(任意)
- ✅ App Service → TLS/SSL 設定で HTTPS only を有効にします
- ✅ カスタムドメインを構成します(任意)
- ✅ 監視用に Application Insights を設定します
🧠 シナリオ:成績不振の生徒への補習フロー
これは、データ分析とフォローアップ指導のための、元のプロンプトに基づいた手順をまとめたものです。
📝 元のプロンプト
-
代数のコースで「lineair equation」という課題を探してください。課題名、指示、締め切り日を教えてください。
-
成績不振の生徒全員について、表形式で概要をまとめてください。生徒の名前、私が提供したフィードバック、関連するルーブリックがあればその内容を含めてください。生徒ごとに1行にしてください。ルーブリックは項目ごとに分けてください。
-
ルーブリックのフィードバックを分析し、共通点を見つけてもらえますか。
-
このフィードバックに基づいて、改善のためのアイデアをいくつか挙げてもらえますか。
-
生徒たちにさまざまなパターンを練習させたいです。
-
これを課題とルーブリックにまとめてください。
-
この情報を使って、生徒たち向けの新しい課題の下書きを作成してください……完了まで2週間の猶予を設けてください。
各プロンプトは、より大きな自動化または AI 支援教育ワークフローの一つの段階として機能します。
- 対象となる課題の取得
- ルーブリックに沿ったフィードバックの分析
- 生徒の取り組みに見られるパターンの特定
- 学習への介入策の提案
- 生徒に合わせた補習課題の作成と割り当て
🖥️ シナリオ:Copilot Studio で保護者面談の準備をする
プロンプト: 保護者面談に備えて、Al Frederickson の成績全体の概要を教えてもらえますか?
Copilot Studio での可視化
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。