教育MCP服务器

一个自定义的模型上下文协议(MCP)服务器,用于与Microsoft Graph API集成,管理教育类、作业、评分和学生名册。

  • by jesegher
  • JavaScript
  • 本地部署
  • 8 星标
  • 更新于
在 GitHub 查看 jesegher/EduMCPServer

使用说明

📚 微软教育MCP服务器

⚠️ 这是一个个人项目。它不隶属于微软或由微软维护。

此项目是自定义的 模型上下文协议(MCP)服务器 旨在与 Microsoft Graph API 教育。

它使VSCode、Copilot Studio、Claude和Microsoft AI Foundry代理能够管理:

  • ✅ 微软教育课程
  • ✅ 作业(创建、更新、目标学生)
  • ✅ Rubrics(创建、附加、列表)
  • ✅ 学生和教师(名册)
  • ✅ 提交和评分

专为人工智能驱动的工具、测试和智能提示集成而构建。


🚀 特性

  • 🔐 微软委托身份验证(通过SOAP的OAuth)
  • 🧑‍🏫 班级和排班探索
  • 📝 作业创建、更新和学生定位
  • 🎓 量规的创建和重用
  • 📤 查看作业提交和结果
  • 🧠 专为VSCode、Copilot Studio、Claude和微软AI Foundry设计

📂 结构

🔍 关键组件

  • start-mcp-server-streaming.js

    • 在OAuth 2.0身份验证层加载并注册所有工具。
    • 实现OAuth 2.0服务器与Windows帐户选择器集成。
    • 通过MSAL为后端API访问管理Microsoft Graph身份验证。
    • 使用带有流传输的模型上下文协议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管理中心


2.注册新应用程序

  1. 导航至 “应用程序”→ “应用程序注册”

  2. 点击 “新注册”

  3. 填写:

    • 名字: Microsoft Education MCP Server (或您喜欢的任何名称)
    • 支持的帐户类型:根据您的场景进行选择(通常为“仅限此组织目录中的帐户”)
    • 重定向URI:暂时留空(将在创建Azure应用服务后添加)
  4. 点击 “注册”


3.配置API权限

  1. 注册后,请访问 “API权限”

  2. 点击 “添加权限”→ 微软图形→ 委托权限

  3. 添加以下权限(使用搜索/筛选器查找每个权限):

    OpenID权限:

    • offline_access
    • openid
    • profile

    教育作业:

    • EduAssignments.ReadWrite

    教育名册:

    • EduRoster.ReadWrite

    用户:

    • User.ReadWrite.All
  4. 点击 “添加权限”

  5. 然后,在 “已配置权限”,单击 “授予[您的租户]管理员同意” 为租户中的所有用户批准它们。

💡 小贴士:“授予管理员同意”按钮仅在您使用管理员帐户登录时显示。此步骤确保所有用户(而不仅仅是管理员)都可以使用这些权限。


4.生成客户端密钥

  1. 首选 “证书和机密”
  2. 在...之下 客户机密,单击 “新客户机密”
  3. 描述:键入您喜欢的任何标签(例如。, mcp-server-secret)--这只是一个友好的名称,以帮助您以后识别它。
  4. 过期:选择有效期(例如6个月或12个月)
  5. 点击 “添加”
  6. 立即复制“值” --这是你的 CLIENT_SECRET。离开此页面后,您将无法再看到它!

⚠️ 重要:“值”列是您的秘密,而不是“秘密ID”。把它保存在安全的地方(例如,密码管理器或记事本)——你以后会需要它的。


5.保存这些值

转到您的应用程序注册 “概述” 页面并复制这些值。将它们保存在记事本中——您在Azure部署期间需要它们。

名称 在哪里可以找到
CLIENT_ID 应用程序(客户端)ID 在“概述”页面上
CLIENT_SECRET The 价值 您在步骤4中复制了
TENANT_ID 目录(租户)ID 在“概述”页面上
REDIRECT_URI 我们将在下面的Azure部署部分创建它——现在跳过它

🚀 Azure部署指南

将您的MCP服务器部署到Azure应用服务,以便使用OAuth 2.0身份验证进行生产使用。

1.📋 先决条件

  • ✅ Azure订阅
  • ✅ Azure应用程序注册(已在上面完成)
  • ✅ 代码推送到GitHub存储库

2.🏗️ 创建Azure应用服务

Azure 门户

  1. 首选 Azure 门户
  2. 创建资源 → 网页应用
  3. 配置:
    • 订阅:您的订阅
    • 资源组:创建新的或使用现有的(例如。, edumcp-resource-group)
    • 名字: your-app-name (选择一个对您的组织有意义的名称。它必须是Azure堆栈中唯一的名称。)
    • 发布: Code
    • 运行时栈: Node 22 LTS
    • 操作系统: Linux
    • 区域:选择最接近用户的选项
    • Linux计划:默认值
    • 定价方案:默认值
  4. 点击 “审核+创建”,然后在验证后单击 “创建”。它应该在一两分钟内部署。

3.🔐 配置环境变量

在Azure门户中→ 应用服务 → [您的应用程序] → 设置 → 环境变量 → click “+添加”:

添加以下四个环境变量(名称→ 值):

名称 值
CLIENT_ID 您从Entra获得的申请(客户)ID
TENANT_ID Entra提供的您的目录(租户)ID
CLIENT_SECRET 您之前保存的客户端机密值
REDIRECT_URI https://<YOUR_APP_NAME>.azurewebsites.net/oauth/callback

替换 <YOUR_APP_NAME> 使用您在步骤2中选择的应用服务名称(例如。, edumcp-server-prod).

添加完所有四个后,单击 “应用” 然后 “确认” 重新启动应用程序服务。

4.经过处理的网络;添加重定向到Entra ID(azure AD)中的类型

现在你的应用服务已经创建,你有了URL,你 必须 返回到应用程序注册并添加重定向URI。

⚠️ 重要:如果在应用程序注册期间跳过添加重定向URI,则身份验证将失败,直到您完成此步骤。

添加重定向URI的步骤:

  1. 首选 Microsoft Entra管理中心
  2. 导航至 “参赛者ID”→ “应用程序注册”
  3. 从列表中选择您注册的应用程序
  4. 在左侧边栏中,单击 “身份验证”
  5. 在...之下 “平台配置”,单击 “添加平台”
  6. 选择 “Web”
  7. 在 “重定向URI” 字段,输入:
    https://<YOUR_APP_NAME>.azurewebsites.net/oauth/callback
    
    替换 <YOUR_APP_NAME> 使用您的实际Azure应用服务名称(例如。, edumcp-server-prod).
  8. 点击 “配置” 节省

5. �📦 部署您的代码

选项A:外部Git(推荐)

⚠️ 备注:在部署之前,Azure要求启用SCM基本身份验证。
首选 应用服务 → 配置 → 通用设置 → SCM基本授权发布凭据 → 开 → click “应用”

然后继续部署:

  1. Azure 门户 → 应用服务 → [您的应用程序] → 部署 → 部署中心
  2. 源:手动部署→ 外部Git
  3. 仓库: https://github.com/jesegher/EduMCPServer.git
  4. 分支: main
  5. 存储库类型:公开
  6. 点击 “保存”

选项B:VS代码扩展

  1. 安装 Azure应用服务 扩展
  2. 右键单击您的项目→ 部署到Web应用程序
  3. 选择您的订阅和应用程序服务

6.🎯 配置MCP客户端

更新生产环境下的MCP客户端配置:

VS代码MCP客户端配置:

添加到您的VS代码 mcp.json (用户设置):

{
  "servers": {
    "EDUMCP Server": {
      "url": "https://your-app-name.azurewebsites.net/mcp",
      "type": "http"
    }
  }
}

VS Code通过以下方式自动发现OAuth配置 /.well-known/oauth-authorization-server 终点。

克劳德(人类学):

在Claude的MCP服务器设置中,使用以下URL添加远程MCP服务器:

https://your-app-name.azurewebsites.net/mcp

Claude将自动使用动态客户端注册和OAuth 2.0。

微软人工智能铸造厂:

在您的AI Foundry项目中,添加一个具有端点的远程MCP工具:

https://your-app-name.azurewebsites.net/mcp

Foundry通过以下方式发现OAuth配置 /.well-known/oauth-authorization-server 终点。

7.✅ 验证部署

  1. 测试终点:

    • 健康检查: https://your-app-name.azurewebsites.net
    • OAuth发现: https://your-app-name.azurewebsites.net/.well-known/oauth-authorization-server
  2. 检查日志 在Azure门户中→ 应用服务→ 日志流

  3. 测试身份验证 与您的MCP客户端

8.🛡️ 生产安全

  • ✅ 使用 密钥库 敏感机密(可选)
  • ✅ 启用 仅限HTTPS 应用内服务→ TLS/SSL设置
  • ✅ 配置 自定义域 (可选)
  • ✅ 设置 应用洞察 用于监控

🧠 场景:表现不佳学生的辅导流程

这是一个基于数据分析和后续指导的原始提示的结构化演练。

📝 原始提示

  1. 在我的代数课程中找到我的作业“线性方程”。请告诉我姓名、说明和截止日期。

  2. 我希望以表格形式概述所有表现不佳的学生。我想要他们的名字、我提供的反馈以及相关的评价标准(如果有的话)。我要每个学生一条线。把量规分成单独的项目。

  3. 你能分析量规反馈并找到共性吗。

  4. 根据这一反馈,有什么补救措施。

  5. 我希望他们练习变化。

  6. 把它翻译成作业和量规。

  7. 使用此信息为这些学生创建新的作业草稿。..给他们两周的时间来完成。


每个提示都是更大的自动化或人工智能辅助教育工作流程中的一个步骤:

  • 检索目标作业
  • 分析与量规一致的反馈
  • 识别学生作业中的模式
  • 推荐学习干预措施
  • 创建和分配个性化补救任务

🖥️ 场景:在Copilot工作室,为家长教师会议做准备

提示: 你能给我一个Al Frederickson的完整表现概述,为我和他的父母的家长会做准备吗? Copilot Studio中的可视化