mcpField
M
Microsoft MCP Server for Enterprise

Microsoft MCP Server for Enterprise

远程服务
github.com/microsoft安全60今天更新
代码仓库

关于 Microsoft MCP Server for Enterprise

Microsoft MCP Server for Enterprise 是微软官方提供的远程 MCP 服务,目前处于公开预览阶段。它将自然语言查询转换为 Microsoft Graph API 调用,用于查询 Microsoft Entra 中的数据,面向开发者和 IT 管理员。

主要功能

  1. 01将自然语言转换为 Microsoft Graph 查询
  2. 02提供三个工具覆盖查询流程
  3. 03仅支持只读的 Entra 数据访问
  4. 04通过 MCP.* 权限由管理员控制访问范围
  5. 05使用委托权限并记录审计日志

适用场景

  1. 01查询 Entra 中的用户、组和应用信息
  2. 02检查条件访问、特权角色与 PIM 状态
  3. 03排查设备合规性与过期设备

MCP 相关

该服务是远程 MCP 服务,MCP 客户端通过 OAuth 连接并获得 MCP.* 权限后,即可调用其提供的工具。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://mcp.svc.cloud.microsoft/enterprise
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

Microsoft MCP Server for Enterprise Logo Microsoft MCP Server for Enterprise

⚠️ 如果 Visual Studio Code 显示错误 Error getting token from server metadata: Error: Cannot force new registration for a non-dynamic authentication provider.,请在“设置”中将 "microsoft-authentication.implementation" 从 "msal" 改为 "msal-no-broker"。

概述

基于开放的 Model Context Protocol,Microsoft MCP Server for Enterprise 公共预览版可将自然语言查询转换为 Microsoft Graph API 调用,让 AI Agent 访问 Microsoft Entra 数据。 开发人员和 IT 管理员可在 AI 驱动的工作流中使用它查询 Microsoft Entra 数据。

完整文档:Microsoft MCP Server for Enterprise 概述

MCP 服务预配(每个租户执行一次)

为租户设置 MCP 服务:

  1. 预配 MCP 服务。在 Graph Explorer 中发送:
    POST https://graph.microsoft.com/v1.0/servicePrincipals
    Body: { "appId": "e8c77dc2-69b3-43f4-bc51-3213c9d915b4" }

  2. 注册新应用,作为 MCP 客户端。
    根据客户端设置相应的重定向 URI(也称为回复 URL)。例如:
    Claude Desktop 需要 https://claude.ai/api/mcp/auth_callback,
    ChatGPT 会为每个客户端生成不同的 URI,格式为:https://chatgpt.com/connector/oauth/<random_chars>,
    Microsoft Foundry 会为每个连接器生成不同的重定向 URI,格式为:https://<random_chars>.<region>.azurecontainerapps.io/rest/oauth2-credential/callback

    在 Microsoft Entra 中,重定向 URI 的类型很重要。如果将 URI 添加到 Web 下,Entra 会将应用视为机密客户端。服务器上运行且能够保护凭据的应用(例如 Copilot Studio)应使用此类型。用户登录时,Entra 会要求该应用使用 client_secret 或基于证书的 client_assertion 进行身份验证。
    如果将 URI 添加到 移动和桌面应用程序或其他公共客户端平台下,Entra 会将应用视为公共客户端。无法保密的桌面、命令行或设备应用(例如 ChatGPT 或 Claude)应使用此类型。这些应用通常使用带 PKCE 的授权码流,而非客户端密钥。

  3. 在 MCP 服务与 MCP 客户端之间关联 MCP 权限(MCP.<Microsoft_Graph_Scope>)
    关联 MCP 客户端权限

信息表
属性值备注
MCP 端点https://mcp.svc.cloud.microsoft/enterprise在你的 Agent 或 mcp.json 中配置
MCP 服务应用 IDe8c77dc2-69b3-43f4-bc51-3213c9d915b4用于预配和遥测
MCP 客户端应用 ID< 你在租户中注册的应用 >配置你的 Agent 时必需
令牌 URLhttps://login.microsoftonline.com/organizations/oauth2/v2.0/token某些 Agent 配置中必需
令牌端点身份验证方法client_secret_post某些 Agent 配置中必需
身份验证 URLhttps://login.microsoftonline.com/organizations/oauth2/v2.0/authorize某些 Agent 配置中必需
刷新 URLhttps://login.microsoftonline.com/organizations/oauth2/v2.0/token某些 Agent 配置中必需
范围api://e8c77dc2-69b3-43f4-bc51-3213c9d915b4/.default某些 Agent 配置中必需

工具

此 MCP 服务使用检索增强生成(RAG)和少样本提示词来生成完整的 Microsoft Graph 查询,而不是为每个 Graph 操作单独提供一个工具。
它提供三个工具:

  1. microsoft_graph_suggest_queries:根据用户意图查找相关的 Microsoft Graph API 调用。
  2. microsoft_graph_get:执行只读的 Microsoft Graph API 调用,并遵循用户角色和 MCP 客户端范围。
  3. microsoft_graph_list_properties:检索特定 Microsoft Graph 实体的属性,以帮助 AI 模型

当前范围和功能

在公开预览期间,我们支持 Microsoft Entra 身份和目录操作中的只读企业 IT 场景(用户、组、应用程序、设备管理和管理操作)。

MCP 服务可处理以下查询:

  1. 安全态势:身份验证方法/强度、条件访问、安全默认值。
  2. 特权访问:谁拥有哪些目录角色、如何分配(直接分配或通过组分配),以及 PIM 状态。
  3. 应用风险:存在哪些应用/服务主体、谁拥有它们、使用哪些权限/SSO,以及哪些应用没有所有者或来自外部。
  4. 访问治理:谁可以访问哪些内容(用户、组、包);访问评审决策;自动化入职、转岗和离职流程。
  5. 设备就绪情况:托管/合规状态、加入状态、操作系统/版本分布,以及过时或不活动的设备。
  6. 来源追踪与调查:端到端遥测(登录、审计、预配、网络)、运行状况警报和 SLA/可用性。
  7. 优化支出与卫生状况:许可证数量/使用情况、未使用或过时的应用/组、域配置和联系人。

支持的客户端和配置

Microsoft 企业版 MCP 服务适用于任何支持最新标准的 MCP 兼容客户端。

⚠️ 注意:

  • 不支持动态客户端注册(DCR),但我们正在努力在未来版本中支持 OAuth 客户端 ID 元数据文档(CIMD)。
  • ChatGPT、Claude 和其他第三方 Agent 需要自定义客户端 ID:在你的租户中注册自己的 MCP 客户端应用,分配所需的 MCP.* 范围,并相应配置重定向 URI。
Microsoft Agent 平台
第三方 MCP 客户端

这些客户端需要在租户中注册自定义 MCP 客户端应用。请参阅授权和权限,为应用授予所需的 MCP.* 范围。

ChatGPT

前往 Settings、Apps、Create App,并填写对话框:

ChatGPT Configuration

将已注册应用的应用 ID 填入红框中。

Claude

前往 Customize、Connectors,点击“+”,选择 Add Custom Connector,并填写对话框:

Claude Configuration

将已注册应用的应用 ID 填入红框中。

Visual Studio Code 和 GitHub Copilot CLI

Visual Studio Code 和 GitHub Copilot CLI 共用同一个 Visual Studio Code MCP 客户端应用 ID,因此使用相同的设置。
GitHub Copilot CLI 也可以使用自定义客户端 ID(参见选项 2)。

先决条件

这些步骤会在你的租户中预配 Visual Studio Code MCP 客户端应用,并授予其 MCP 权限。
Visual Studio Code 和使用默认应用程序 Id 的 GitHub Copilot CLI(以下选项 1)都需要执行这些步骤。如果你改用自定义 oauthClientId 配置 GitHub Copilot CLI(以下选项 2),则可跳过这些步骤。

  1. 安装 Microsoft.Entra.Beta PowerShell 模块(版本 1.0.13 或更高版本,需要 PowerShell 7):

    Install-Module Microsoft.Entra.Beta -Force -AllowClobber
    
  2. 将 Microsoft Entra ID 连接到你的租户:

    Connect-Entra -Scopes 'Application.ReadWrite.All', 'DelegatedPermissionGrant.ReadWrite.All'
    
  3. 向 Visual Studio Code MCP Client 应用授予所有 MCP 权限(使用默认应用程序 Id 配置时,GitHub Copilot CLI 也会使用此应用):

    Grant-EntraBetaMCPServerPermission -ApplicationName VisualStudioCode
    

详细了解 Grant-EntraBetaMCPServerPermission。如需详细的安装帮助,请参阅安装说明。

如果 Microsoft Graph PowerShell SDK 模块与 Microsoft.Entra.Beta 冲突,请运行以下命令,然后从步骤 1 重试:

Install-Module Uninstall-Graph
Uninstall-Graph -All
Visual Studio Code
  1. 点击安装 Microsoft MCP Server for Enterprise,打开 MCP 安装页面。
  2. 点击 VS Code 中的 Install 按钮,并使用上述租户中的帐户登录。
  3. 如果 Visual Studio Code 显示错误 Error getting token from server metadata: Error: Cannot force new registration for a non-dynamic authentication provider.,请在设置中将 "microsoft-authentication.implementation" 从 "msal" 更改为 "msal-no-broker": 替代文本
GitHub Copilot CLI

GitHub Copilot CLI 可通过默认的 Visual Studio Code MCP Client 应用 Id 连接,也可通过你在租户中注册的自定义 MCP Client 应用 Id 连接。

选项 1. 默认(使用 Visual Studio Code 应用 Id)

  1. 完成上述先决条件。

  2. 将 MCP 服务添加到 Copilot CLI。你可以通过 /mcp add 交互式完成:

    /mcp add
    

    GitHub Copilot CLI 配置

选项 2. 自定义 MCP Client 应用 Id

  1. 在租户中注册自己的 MCP Client 应用,并授予所需的 MCP.* 范围(请参阅授权和权限)。

  2. 将 http://127.0.0.1:51001 设置为“移动和桌面应用程序”的重定向 URI。

  3. 在 ~/.copilot/mcp-config.json 中通过 oauthClientId 指定应用 Id,并将 oauthPublicClient 设为 true:

    "mcp-enterprise": {
          "type": "http",
          "url": "https://mcp.svc.cloud.microsoft/enterprise",
          "headers": {},
          "tools": [ "*" ],
          "oauthClientId": "<REGISTERED_APP_CLIENT_ID>",
          "oauthPublicClient": true
        }
    

无论使用哪种方式,系统提示登录时,请使用预配租户中的帐户登录。

如需了解更多信息,请参阅 GitHub Copilot CLI 文档。

授权和权限

MCP Server for Enterprise 仅使用委托权限通过 Microsoft Graph API 访问 Microsoft Entra 租户中的数据,并提供 Microsoft Graph 所公开权限的精简子集。
使用以下 cmdlet 列出 MCP Server for Enterprise 提供的权限:

(Get-EntraBetaServicePrincipal -Property "PublishedPermissionScopes" -Filter "AppId eq 'e8c77dc2-69b3-43f4-bc51-3213c9d915b4'").PublishedPermissionScopes | Where-Object { $_.IsEnabled -eq $true -and $_.AdditionalProperties["isPrivate"] -ne $true } | Select-Object Value, AdminConsentDisplayName | Sort-Object

如果你想使用自己的已注册应用程序,请使用以下 cmdlet 管理授予 MCP Client 应用程序的范围:

Grant-EntraBetaMCPServerPermission -ApplicationId "<MCP_Client_Application_Id>" -Scopes "<Scope1>", "<Scope2>", "<...>"
Revoke-EntraBetaMCPServerPermission -ApplicationId "<MCP_Client_Application_Id>" -Scopes "<Scope1>", "<Scope2>", "<...>"

了解更多:管理 MCP Server for Enterprise 权限

优势

  1. 远程 MCP 服务:易于配置且符合标准,部署在与 Microsoft Graph 相同的区域。
  2. 由 IT 管理员掌控:MCP 客户端需要特定的 MCP.* 范围(与 Microsoft Graph 范围相对应)才能访问租户数据。
  3. 简化架构:使用 3 个工具即可覆盖整个工作流,而不是每个 API 操作都使用一个工具。
  4. 高质量查询生成:通过 RAG(检索增强生成),利用 500 多个真实示例生成准确的查询。
  5. 全面可审计:所有 MCP 操作均使用同一个 App ID 和特定的用户代理运行。
  6. 无需额外许可证:适用现有的 Microsoft Entra 和 Microsoft Graph API 许可证。

可用性、路线图和反馈

Microsoft MCP Server for Enterprise 仅在公共云(全球服务)中提供,计划在未来版本中支持主权云。
我们将继续扩展当前 Microsoft Entra 场景以外的支持范围,但 M365 API 将由 Agent 365 提供支持。
计划在未来版本中支持写入操作。
请通过反馈表单分享建议或问题:提交反馈。

许可和使用

  • MCP Server for Enterprise 无需额外费用或单独的许可证。
  • 你需要拥有所访问数据所需的许可证(例如,访问 Privileged Identity Management (PIM) 数据需要 Microsoft Entra ID Governance 或 Microsoft Entra ID P2 许可证)。
  • 对此 MCP 服务的所有请求均限制为每位用户每分钟 100 个请求。对 microsoft_graph_get 的请求还受 Microsoft Graph 节流限制约束。

日志

若要监视使用情况,请在租户中启用 Microsoft Graph 活动日志。系统会记录通过 MCP 服务发出的所有 API 调用。

筛选 MCP Server 使用情况:

使用 Microsoft MCP Server for Enterprise 的 Application (Client ID):e8c77dc2-69b3-43f4-bc51-3213c9d915b4。

以下 Kusto 查询可检索这些日志:

MicrosoftGraphActivityLogs
| where TimeGenerated >= ago(30d)
| where AppId == "e8c77dc2-69b3-43f4-bc51-3213c9d915b4"
| project RequestId, TimeGenerated, UserId, RequestMethod, RequestUri, ResponseStatusCode

支持和参考

有关文档、故障排除和反馈,请参阅官方 Microsoft Learn 文档和支持渠道。

安全和合规性

所有操作均遵循 Microsoft Graph 权限和安全策略。 集成 MCP Server 时,请确保符合组织、监管和合同要求。

无担保/责任限制

本软件按“原样”提供,不附带任何明示或暗示的担保或条件。对于因使用、误用或错误配置本软件而导致的任何损害,Microsoft 概不负责。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。