Skip to content

kevinbellinger/mcp-msgraph

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MCP-MSGraph

A prototype MCP (Model Context Protocol) server that reads a user profile from Microsoft Graph.
This project demonstrates how to connect MCP to data stored in Microsoft Graph as a proof of concept.


Create an Azure AD Application

  1. Log into Azure Portal.
  2. Navigate to Azure Active Directory > App registrations > New registration.
  3. Create a new application.
  4. Note the generated Application (client) ID and Client Secret.
  5. Under API permissions, add User.Read.All (as delegated or application permission as appropriate) and grant admin consent.

Instructions to run the server:

  1. Clone the repository or setup your own folder and files structure.

  2. Create a virtual environment:

python3 -m venv venv
source venv/bin/activate
  1. Install the required packages:
pip install fastapi uvicorn requests requests-oauthlib pydantic
  1. Open 'main.py' and replace the placeholder values with your App ID, Tenant ID, and Client Secret.

  2. Start the server

uvicorn main:app --reload

Your server will be available at http://127.0.0.1:8000.


Example Request

Use curl (or any REST client) to send a request to retrieve a user’s profile:

curl -X POST http://localhost:8000/mcp \
  -H "Content-Type: application/json" \
  -d '{
        "action":"readUserProfile",
        "contextId":"abc123",
        "data": {"userId":"someUser@yourtenant.onmicrosoft.com"}
      }'

Result should look something like:

{"status":"success","action":"readUserProfile","contextId":"abc123","data":{"@odata.context":"https://graph.microsoft.com/beta/$metadata#users('adelev%40M365x17584779.onmicrosoft.com')/profile/$entity","id":"profileId","account@odata.context":"https://graph.microsoft.com/beta/$metadata#users('adelev%40M365x17584779.onmicrosoft.com')/profile/account","account":[{"ageGroup":"","countryCode":"","userPrincipalName":"AdeleV@M365x17584779.OnMicrosoft.com","allowedAudiences":"organization","createdDateTime":"2025-01-30T11:06:01.7661211Z","lastModifiedDateTime":"2025-01-30T11:06:01.9431431Z","id":"c74cb3af-2f62-43fa-9709-5d2cfc4b4042","isSearchable":false,"inference":null,"preferredLanguageTag":{"locale":null,"displayName":null},"createdBy":{"user":null,"device":null,"application":{"displayName":"AAD","id":null}},"lastModifiedBy":{"user":null,"device":null,"application":{"displayName":"MsGraph","id":null}},"source":{"type":["AAD","MsGraph"]},"sources":[{"sourceId":"4ce763dd-9214-4eff-af7c-da491cc3782d","isDefaultSource":true},{"sourceId":"0024a795-114d-4031-95c7-5fb543e00e80","properties":["isSipEnabled"]}]},{"ageGroup":"","countryCode":"","userPrincipalName":"","allowedAudiences":"federatedOrganizations","createdDateTime":"2025-01-30T11:06:01.7661213Z","lastModifiedDateTime":"2025-01-30T11:06:01.9431431Z","id":"750f8cc2-2f72-4b38-88c6-531dfc5ed47f","isSearchable":false,"inference":null,"preferredLanguageTag":{"locale":null,"displayName":null},"createdBy":{"user":null,"device":null,"application":{"displayName":"AAD","id":null}},"lastModifiedBy":{"user":null,"device":null,"application":{"displayName":"MsGraph","id":null}},"source":{"type":["AAD","MsGraph"]},"sources":[{"sourceId":"4ce763dd-9214-4eff-af7c-da491cc3782d","isDefaultSource":true},{"sourceId":"0024a795-114d-4031-95c7-5fb543e00e80","properties":["isSipEnabled"]}]}]}}%  

About

A prototype MCP server which reads a user profile from Microsoft Graph.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages