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