EduMCPServer
by jesegher
EduMCPServer is a custom Model Context Protocol (MCP) server designed to integrate with the Microsoft Graph API for Education. It enables MCP-compatible tools like Claude Desktop to manage Microsoft Education classes, assignments, rubrics, students, and submissions.
Last updated: N/A
π Microsoft Education MCP Server
β οΈ This is a personal project. It is not affiliated with or maintained by Microsoft.
This project is a custom Model Context Protocol (MCP) server built to integrate with Microsoft Graph API for Education.
It enables Claude Desktop or other MCP-compatible tools to manage:
- β Microsoft Education Classes
- β Assignments (create, update, target students)
- β Rubrics (create, attach, list)
- β Students and teachers (roster)
- β Submissions and grading
Built for AI-driven tools, testing, and intelligent prompt integration.
π Features
- π Microsoft delegated authentication (OAuth via MSAL)
- π§βπ« Class & roster exploration
- π Assignment creation, updating, and student targeting
- π Rubric creation and re-use
- π€ View assignment submissions & outcomes
- π§ Designed for Claude Desktop & Model Context clients
π Structure
π Key Components
- 
start-mcp-server.js- Loads and registers all tools.
- Manages Microsoft authentication via MSAL.
- Starts the MCP server using the Model Context Protocol SDK.
 
- 
tools/folder- Each file defines a set of related tools and registers them with the server.
- Tools follow the MCP standard (server.tool(...)) with Zod schema validation and Microsoft Graph integration.
 
- 
.env- Stores sensitive Microsoft app credentials and config.
- Required to authenticate with Microsoft Graph API.
 
- 
Example.env- A safe template for sharing or onboarding collaborators.
 
This layout makes it easy to:
- Add or modify functionality (just add a file in tools/)
- Keep logic separated by domain (e.g., assignments vs rubrics)
- Support clean and scalable MCP integration
π How to Register the Application in Entra ID (Azure AD)
To use Microsoft Graph API with this project, you need to register an app in Entra ID:
1. Go to Microsoft Entra Admin Center
- Visit: https://entra.microsoft.com
- Sign in with an admin account.
2. Register a New Application
- 
Navigate to "Applications" β "App registrations" 
- 
Click "New registration" 
- 
Fill in: - Name: Microsoft Education MCP Server(or any name you prefer)
- Supported account types: Choose based on your scenario (usually "Accounts in this organizational directory only")
- Redirect URI:
- Platform: Web
- URI: http://localhost:3000/auth/callback(or your custom URI)
 
- Platform: 
 
- Name: 
- 
Click "Register" 
3. Configure API Permissions
- 
After registration, go to "API permissions" 
- 
Click "Add a permission" β Microsoft Graph β Delegated permissions 
- 
Add the following: - User.ReadWrite.All
- EduAssignments.ReadWrite.All
- EduRoster.ReadWrite.All
- EduRubrics.ReadWrite
- offline_access
- openid
- profile
 
- 
Click "Grant admin consent" to approve them for your tenant. 
4. Generate a Client Secret
- Go to "Certificates & secrets"
- Under Client secrets, click "New client secret"
- Add a description and choose an expiration (e.g. 6 months or 12 months)
- Click "Add"
- Copy the value β you wonβt be able to see it again!
5. Save These Values in a notepad
After registration, go to "Overview" and copy these values:
CLIENT_ID=your-application-id
CLIENT_SECRET=your-client-secret
TENANT_ID=your-directory-id
REDIRECT_URI=http://localhost:3000/auth/callback
π₯ Clone the Repository and Install Dependencies
Follow these steps to get the project running locally:
1. Clone the repository
git clone https://github.com/jesegher/EduMCPServer.git
cd EDUMCPServer
2. Install dependencies
npm install
or manually
npm install @modelcontextprotocol/sdk axios zod dotenv @azure/msal-node
π§ Run with Claude Desktop
To use this MCP server with Claude Desktop, add the following to your Claude Desktop claude.settings.json file:
{
  "mcpServers": {
    "Education-Data": {
      "command": "node",
      "args": [
        "C:\\path\\to\\your\\project\\start-mcp-server.js"
      ],
      "env": {
        "TENANT_ID": "your-tenant-id",
        "CLIENT_ID": "your-client-id",
        "CLIENT_SECRET": "your-client-secret",
        "REDIRECT_URI": "http://localhost:3000/auth/callback",
        "PORT": "3000"
      }
    }
  }
}
π‘ Replace the path and environment variables with your actual configuration details.
β οΈ Make sure to shutdown Claude every time you make a change. You need to kill it in the task manager.
Claude will automatically detect the MCP Server and the registered tools.
<img width="362" alt="image" src="https://github.com/user-attachments/assets/924c9da6-0e0b-4c5d-9927-c74517702a5c" />As soon as you request data, an authentication flow will be started. You can always trigger it manually by calling auth-login. I've noticed that Claude not always give you the url, you can find, and copy it from the call it makes to the authentication server if needed. [Fix in progress]
π§ Scenario: Remediation Flow for Underperforming Students
This is a structured walkthrough based on original prompts for data analysis and follow-up instruction.
π Original Prompts
- 
Find my assignment 'lineair equation' in my algebra course. Give me the name, instructions and the due date. 
- 
I want an overview in table format of all underperforming students. I want their name, their feedback I provided, and the rubric if there is one associated. I want one line per student. Split up the rubric separate items. 
- 
Can you analyze the rubric feedback and find commonalities. 
- 
Based on this feedback, what are some ideas to remediate this. 
- 
I want them to practice variations. 
- 
Translate this into an assignment and rubric. 
- 
Create for those students a new draft assignment with this information ... Give them two weeks to complete it. 
Each prompt serves as a step in a larger automated or AI-assisted education workflow:
- Retrieving targeted assignments
- Analyzing rubric-aligned feedback
- Identifying patterns in student work
- Recommending learning interventions
- Creating and assigning personalized remediation tasks
