MCP Server for the Microsoft Graph Api
LocalAbout MCP Server for the Microsoft Graph Api
This C# MCP server exposes Microsoft Graph API capabilities for users who want AI to access tenant data. It supports configuration for different national cloud endpoints, and its tools can be invoked by Claude or models deployed to Azure OpenAI Service.
Key features
- 01Authenticate with an Entra ID application
- 02Configure different Graph cloud endpoints
- 03Expose Graph tools to AI
- 04Support Claude and Azure OpenAI models
Use cases
- 01Ask AI to query Microsoft tenant information
- 02Connect to US Government or China Graph clouds
- 03Invoke Graph tools through Claude or Azure OpenAI
MCP support
The MCP server exposes Microsoft Graph API tools to MCP clients. The README also describes an MCP client that can connect to this server.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEMCP Server for the Microsoft Graph Api
Model-context-protocol (MCP) server for the Microsoft Graph API in C#.
Prerequisites
Entra ID application
Register a new Entra ID application, add and grant at least the User.Read.All application permission and create a new client secret.
You can grant also another permissions, it depends on what you want to ask AI about your tenant through the Microsoft Graph API.
Claude Desktop app
I'm using the Claude Desktop app, but I think you can use any other MCP clients, including GitHub Copilot if they allow to add local MCP server.
MCP server
Open and build the solution.
MCP server configuration
Open the claude_desktop_config.json file. On Windows, the file should be located in %APPDATA%\Claude\ folder.
Add the MCP Server. Under the args section, specify the path to project folder. Don't forget to set the details about the Entra ID application like tenant id, client id and client secret under the env section.
By default, Microsoft Graph global service is used. You can change it by modifying the NATIONAL_CLOUD environment variable.
Possible values for the NATIONAL_CLOUD are:
- Global: https://graph.microsoft.com - Microsoft Graph global service
- US_GOV: https://graph.microsoft.us - Microsoft Graph for US Government L4
- US_GOV_DOD: https://dod-graph.microsoft.us - Microsoft Graph for US Government L5 (DOD)
- China: https://microsoftgraph.chinacloudapi.cn - Microsoft Graph China operated by 21Vianet
- Germany: https://graph.microsoft.de - Microsoft Graph for Germany
{
"mcpServers": {
"graphApi": {
"command": "dotnet",
"args": [
"run",
"--project",
"path/to/folder/with/console_project",
"--no-build"
],
"env": {
"TENANT_ID": "<tenant_id>",
"CLIENT_ID": "<client_id>",
"CLIENT_SECRET": "<client_secret>",
"NATIONAL_CLOUD": "Global"
}
}
}
}
Run MCP server
When you open Claude Desktop app, the MCP server should be automatically discovered and run. You can start new chat.
If Claude Desktop app was already open, you need to close (quit it in system tray) and reopen it.
In case of any issues, you can check logs in %APPDATA%\Claude\logs.
MCP Client
The MCP client allows you to connect the MCP server.
Tools exposed by the MCP server can be invoked either by Claude AI (via Anthropic Claude API) or by any model deployed to Azure OpenAI Service.
You need to set the Anthropic API key in the AnthropicService.GetAnthropicApiKey() method.
private static string GetAnthropicApiKey()
{
return "<anthropic-api-key>";
}
For Azure OpenAI Service, you need to
- API key: set either the
AZURE_OPENAI_API_KEYenvironment variable or specify the key in theAzureOpenAIServiceGetOpenAIApiKey()method - Azure OpenAI endpoint: set either the
AZURE_OPENAI_ENDPOINTenvironment variable or specify the endpoint in theAzureOpenAIService.GetOpenAIEndpoint()method
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.