Microsoft Graph API MCP服务器

一个基于模型-上下文-协议(MCP)的服务器,用于通过Microsoft Graph API与AI服务(如Claude或Azure OpenAI)交互,支持多国家云服务。

  • by MartinM85
  • C#
  • 本地部署
  • 13 星标
  • 更新于
在 GitHub 查看 MartinM85/mcp-server-graph-api

使用说明

Microsoft Graph Api的MCP服务器

用于C#中的Microsoft Graph API的模型-文本-协议(MCP)服务器。

先决条件

Entra ID申请

注册新的Entra ID申请,添加并授予至少 User.Read.All 应用程序权限并创建新的客户端密钥。

您还可以授予其他权限,这取决于您想通过Microsoft Graph API向AI询问有关租户的信息。

Claude桌面应用程序

我在用 Claude桌面应用程序,但我认为您可以使用任何其他MCP客户端,包括GitHub Copilot,只要它们允许添加本地MCP服务器。

MCP服务器

打开并构建解决方案。

MCP服务器配置

打开 claude_desktop_config.json 文件。在Windows上,文件应位于 %APPDATA%\Claude\ 文件夹。

添加MCP服务器。上下 args 部分,指定项目文件夹的路径。别忘了在下面设置Entra ID应用程序的详细信息,如租户ID、客户端ID和客户端密钥 env 部分。

默认情况下,使用Microsoft Graph全局服务。您可以通过修改 NATIONAL_CLOUD 环境变量。

的可能值 NATIONAL_CLOUD 是:

  • 全球: https://graph.microsoft.comMicrosoft Graph全球服务
  • US_GOV: https://graph.microsoft.us-美国政府L4版Microsoft Graph
  • US_GOV_DOD: https://dod-graph.microsoft.us-美国政府L5(国防部)的微软图形
  • 中国: https://microsoftgraph.chinacloudapi.cn-世纪互联运营的微软Graph中国
  • 德国: https://graph.microsoft.de-微软图形德国版
{
    "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"
            }
        }
    }
}

运行MCP服务器

打开Claude Desktop应用程序时,应自动发现并运行MCP服务器。您可以开始新的聊天。

如果Claude Desktop应用程序已经打开,您需要关闭(在系统托盘中退出)并重新打开。

如果出现任何问题,您可以检查登录 %APPDATA%\Claude\logs.

MCP客户端

MCP客户端允许您连接MCP服务器。

MCP服务器公开的工具可以由Claude AI(通过Anthropic Claude API)调用,也可以由部署到Azure OpenAI服务的任何模型调用。

您需要在 AnthropicService.GetAnthropicApiKey() 方法。

private static string GetAnthropicApiKey()
{
    return "<anthropic-api-key>";
}

对于Azure OpenAI服务,您需要

  • API密钥:设置 AZURE_OPENAI_API_KEY 环境变量或指定 AzureOpenAIServiceGetOpenAIApiKey() 方法
  • Azure OpenAI端点:设置 AZURE_OPENAI_ENDPOINT 环境变量或在中指定端点 AzureOpenAIService.GetOpenAIEndpoint() 方法