Entra ID管理服务器

一个基于Python和FastMCP构建的MCP服务器,提供与Microsoft Entra ID(原Azure AD)的无缝集成,通过Microsoft Graph API管理用户和组。

  • by devartifex
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 g-mercuri/mcp-entra-graph

使用说明

MCP进入图表

A. 模型上下文协议(MCP) 用……构建的服务器 python 并且 FastMCP 通过Microsoft Graph API,它提供了与Microsoft Entra ID(原Azure AD)的无缝集成,用于用户和组管理。

这台服务器使用 可流式传输的HTTP传输这意味着它作为一个支持流式响应的HTTP服务器运行,使其能够与基于Web的MCP客户端(如GitHub Copilot)兼容,从而实现高效、实时的通信。

特点/功能

此MCP服务器提供了以下用于管理Microsoft Entra ID的工具:

用户管理

  • find_user_by_name - 通过显示名称、名字或姓氏搜索用户
    • 不区分大小写的部分匹配
    • 返回用户ID、显示名称、电子邮件和职位名称

集团管理

  • search_groups - 通过显示名称查找组
  • get_group_info - 获取特定组的详细信息
  • list_group_members - 列出群组的所有成员
  • add_user_to_group - 将用户添加到组中
  • remove_user_from_group - 从组中移除用户

什么是MCP?

模型上下文协议(MCP)是一种开放标准协议,它实现了人工智能应用与数据源之间的无缝集成。可以将其视为一个通用连接器,使人工智能助手能够安全地访问并与您的工具和数据进行交互。

这个服务器的工作原理

这台服务器是用……构建的 FastMCP,一个简化MCP服务器构建的Python框架。它

  1. 暴露工具使AI助手能够调用Entra ID管理功能作为可调用工具
  2. 使用可流式传输的HTTP作为HTTP服务器运行在 localhost:8000支持实时交互的流式响应
  3. 安全认证使用Azure AD应用程序凭据访问Microsoft Graph API
  4. 返回结构化数据提供AI助手能够理解和使用的JSON响应

当你要求像GitHub Copilot这样的AI助手“查找名为John的用户”时,助手会:

  • 检测到它需要 find_user_by_name 工具
  • 通过HTTP调用此MCP服务器
  • 服务器通过 Microsoft Graph 进行身份验证
  • 将结果返回给人工智能,然后由人工智能展示给您

先决条件

  • Python 3.10 或更高版本 (对于FastMCP和异步功能是必需的)
  • pip(通常指Python的包管理工具,但在此仅作为单词翻译) (Python包管理器,通常随Python一起提供)
  • Microsoft Entra ID 拥有管理员权限的租户
  • Azure 门户 应用程序注册访问权限
  • Node.js 和 npm (可选,仅在使用MCP Inspector调试工具时需要)

安装

1. 克隆仓库

git clone https://github.com/g-mercuri/mcp-entra-graph.git
cd mcp-entra-graph

2. 创建虚拟环境

Windows(PowerShell):

python -m venv venv
.\venv\Scripts\Activate.ps1

Linux/macOS:

python3 -m venv venv
source venv/bin/activate

3. 安装依赖项

pip install --upgrade pip
pip install -r requirements.txt

4. 注册一个Azure AD应用程序

  1. 导航至 Azure 门户 → Azure Active Directory(Azure活动目录) → 应用程序注册
  2. 点击 新注册
    • 名字: Entra ID MCP Server (或您喜欢的名称)
    • 支持的账户类型单租户
    • 点击 注册
  3. 注意 应用程序(客户端)ID 和 目录(租户)ID
  4. 首选 证书与密钥 → 新的客户端密钥
    • 添加描述和有效期
    • 复制 价值 (客户端密钥) - 您将无法再次查看它
  5. 首选 API权限 → 添加一个权限 → Microsoft Graph(微软图) → 应用权限
    • 添加以下权限:
      • Group.ReadWrite.All - 读取和写入所有组
      • User.Read.All - 阅读所有用户的完整资料
      • Directory.ReadWrite.All - 读取和写入目录数据
  6. 点击 授予管理员同意 为您的租户

5. 配置环境变量

创建一个 .env 项目根目录中的文件:

TENANT_ID=your-tenant-id-here
CLIENT_ID=your-client-id-here
CLIENT_SECRET=your-client-secret-here

注: 你可以使用 .env.example 如有可用,作为模板。

使用方法

启动服务器

python src/server.py

服务器将在 http://127.0.0.1:8000 默认使用可流式传输的HTTP传输方式。

你应该看到类似如下的输出:

INFO:__main__:Starting Entra ID MCP Server with Streamable HTTP transport...

与GitHub Copilot(VS Code)配合使用

  1. 启动MCP服务器 (见上文)

  2. 配置 VS Code 通过创建/编辑 mcp.json:

    方法1:自动

    • 新闻界 Ctrl+Shift+P (或 Cmd+Shift+P (在 macOS 上)
    • 选择 "GitHub Copilot: 添加MCP服务器"
    • 按照提示操作

    方法2:手动

    • 创建 .vscode/mcp.json 在您的工作区中:
    {
      "servers": {
        "entra-id": {
          "url": "http://127.0.0.1:8000",
          "type": "http"
        }
      }
    }
    
  3. 重新加载 VS Code

    • 新闻界;媒体 Ctrl+Shift+P → “开发者:重新加载窗口”
  4. 在Copilot聊天中使用

    • 打开GitHub Copilot Chat
    • Entra ID 工具将自动可用
    • 示例:“查找名为John的用户”或“将用户添加到开发者组”

与MCP Inspector配合使用(调试)

用于测试和调试MCP请求:

npx @modelcontextprotocol/inspector http://127.0.0.1:8000

这会打开一个交互式界面,用于探索和测试所有可用的工具。

示例交互

一旦配置了MCP客户端,您就可以进行自然交互:

  • “查找所有姓氏为Smith的用户”
  • “列出工程组的所有成员”
  • “将约翰·多(John Doe)添加到开发者组”
  • “搜索包含‘市场营销’的群组”
  • “给我展示销售团队的相关信息”

人工智能助手将使用适当的工具来满足这些请求。

贡献

欢迎贡献!请随时提交拉取请求。

许可证

MIT 许可证 - 请参阅 许可证 文件中包含详细信息