关于 📚 Microsoft Education MCP Server
这是一个通过 Microsoft Graph API 管理 Microsoft Education 数据的 MCP 服务,面向教育工作者及 AI 工具集成场景。它支持课程、作业、评分量规、名册和提交记录等操作。
主要功能
- 01浏览课程与师生名册
- 02创建和更新作业并指定学生
- 03创建、关联和复用评分量规
- 04查看作业提交与评分结果
- 05通过 MSAL 进行 OAuth 身份验证
适用场景
- 01查看课程作业及截止日期
- 02汇总学生表现与评分反馈
- 03为学生创建补救练习作业
- 04准备家长教师会议的学生表现概览
MCP 相关
该 MCP 服务将 Microsoft Education 功能作为工具提供给 MCP 客户端,并通过 Microsoft Graph API 执行操作。支持流式传输及 OAuth 2.0 身份验证。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
📚 Microsoft Education MCP 服务
⚠️ 这是一个个人项目,与 Microsoft 无关,也不由 Microsoft 维护。
此项目是一个自定义的 Model Context Protocol(MCP)服务,旨在与 Microsoft Graph API 的教育功能集成。
它使 VSCode、Copilot Studio、Claude 和 Microsoft AI Foundry Agent 能够管理:
- ✅ 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 服务。
- 通过 MSAL 管理 Microsoft Graph 身份验证,以访问后端 API。
- 使用 Model Context Protocol SDK 和流式传输方式启动 MCP 服务。
-
tools/文件夹- 每个文件定义一组相关工具,并将其注册到服务中。
- 工具遵循 MCP 标准(
server.tool(...)),并使用 Zod 架构验证和 Microsoft Graph 集成。
-
.env- 存储敏感的 Microsoft 应用凭据和配置。
- Microsoft Graph API 身份验证所必需。
-
Example.env- 用于分享或帮助协作者入门的安全模板。
此布局便于:
- 添加或修改功能(只需在
tools/中添加文件) - 按领域分离逻辑(例如,作业与评分标准)
- 支持整洁且可扩展的 MCP 集成
🏗 如何在 Entra ID(Azure AD)中注册应用程序
要在此项目中使用 Microsoft Graph API,需要在 Entra ID 中注册应用:
1. 前往 Microsoft Entra 管理中心
- 访问:https://entra.microsoft.com
- 使用管理员账户登录。
2. 注册新应用程序
-
前往 “Applications” → “App registrations”
-
点击 “New registration”
-
填写:
- 名称:
Microsoft Education MCP Server(或使用你偏好的名称) - 支持的账户类型:根据你的场景选择(通常为“仅此组织目录中的账户”)
- 重定向 URI:暂时留空(创建 Azure App Service 后再添加)
- 名称:
-
点击 “Register”
3. 配置 API 权限
-
注册后,前往 “API permissions”
-
点击 “Add a permission” → Microsoft Graph → Delegated permissions
-
添加以下权限(使用搜索/筛选功能查找每项权限):
OpenID 权限:
offline_accessopenidprofile
EduAssignments:
EduAssignments.ReadWrite
EduRoster:
EduRoster.ReadWrite
用户:
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 部署指南
将 MCP 服务部署到 Azure App Service,以便在生产环境中使用 OAuth 2.0 身份验证。
1. 📋 先决条件
- ✅ Azure 订阅
- ✅ Azure 应用注册(已在上方完成)
- ✅ 代码已推送到 GitHub 仓库
2. 🏗️ 创建 Azure App Service
Azure 门户
- 前往 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:默认值
- Pricing Plan:默认值
- 点击 “Review + create”,验证完成后点击 “Create”。部署大约需要一两分钟。
3. 🔐 配置环境变量
在 Azure 门户中,依次前往 App Services → [Your App] → Settings → Environment Variables,然后点击 “+ Add”:
添加以下四个环境变量(名称 → 值):
| 名称 | 值 |
|---|---|
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)。
添加完全部四项后,点击 “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
- 选择订阅和应用服务
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
- ✅ 配置自定义域名(可选)
- ✅ 设置 Application Insights 以进行监控
🧠 场景:学业表现不佳学生的补救流程
这是基于数据分析和后续教学的原始提示词编写的结构化演练。
📝 原始提示词
-
在我的代数课程中找到名为“lineair equation”的作业。告诉我作业名称、说明和截止日期。
-
我想要一份表格形式的学业表现不佳学生总览。列出他们的姓名、我给出的反馈,以及关联的评分标准(如果有)。每位学生占一行。将评分标准拆分为单独的条目。
-
你能分析评分标准反馈并找出共性吗?
-
根据这些反馈,有什么补救建议?
-
我想让他们练习不同的变式。
-
将这些内容转换为一份作业和评分标准。
-
根据这些信息,为这些学生创建一份新的作业草稿……给他们两周时间完成。
每条提示词都是更大型自动化或 AI 辅助教育工作流中的一个步骤:
- 检索指定作业
- 分析与评分标准对应的反馈
- 发现学生作业中的规律
- 推荐学习干预措施
- 创建并分配个性化补救任务
🖥️ 场景:在 Copilot Studio 中为家长会做准备
**提示词:**为了准备和 Al Frederickson 的家长进行家长会,你能提供一份他的完整表现总览吗?
Copilot Studio 中的可视化
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。