Model-context-protocol (MCP) server for the Microsoft Graph API in C#
Config is the same across clients — only the file and path differ.
{
"mcpServers": {
"graphApi": {
"env": {
"CLIENT_ID": "<client_id>",
"TENANT_ID": "<tenant_id>",
"CLIENT_SECRET": "<client_secret>",
"NATIONAL_CLOUD": "Global"
},
"args": [
"run",
"--project",
"path/to/folder/with/console_project",
"--no-build"
],
"command": "dotnet"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
Model-context-protocol (MCP) server for the Microsoft Graph API in C#.
No automated test available for this server. Check the GitHub README for setup instructions.
Five weighted categories — click any category to see the underlying evidence.
No known CVEs.
No package registry to scan.
Be the first to review
Have you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Others in productivity
MCP Security Weekly
Get CVE alerts and security updates for Mcp Server Graph Api and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
Model-context-protocol (MCP) server for the Microsoft Graph API in C#.
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.
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.
Open and build the solution.
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:
{
"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"
}
}
}
}
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.
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
AZURE_OPENAI_API_KEY environment variable or specify the key in the AzureOpenAIServiceGetOpenAIApiKey() methodAZURE_OPENAI_ENDPOINT environment variable or specify the endpoint in the AzureOpenAIService.GetOpenAIEndpoint() method