项目简介

该项目是一个基于FastMCP框架实现的MCP服务器,用于与Microsoft Graph API进行交互。它将Microsoft Graph中的常见操作(如用户搜索、登录日志查询、密码重置等)封装为LLM可调用的工具(Tools),并提供资源访问能力,为LLM应用提供对微软Entra ID环境的上下文和操作能力。

主要功能点

  • 用户管理: 搜索用户、按ID获取用户详情、列出特权用户、获取用户所属群组和角色。
  • 组管理: 获取所有组、按名称搜索组、获取组成员。
  • 登录日志查询: 获取特定用户的登录记录。
  • MFA (多重身份验证) 状态: 获取用户的MFA状态及方法、获取组成员的MFA状态。
  • 条件访问策略: 获取所有条件访问策略、按ID获取特定策略详情。
  • 设备管理: 获取所有托管设备(可选按操作系统过滤)、获取特定用户拥有的托管设备。
  • 审计日志: 获取特定用户的目录审计日志。
  • 密码管理: 直接为用户重置密码(可生成随机密码)。
  • 权限助手: 建议执行特定任务所需的Microsoft Graph权限,列出所有可用权限。

安装步骤

  1. 克隆项目仓库到本地计算机。

  2. 根据您的Azure AD环境,创建一个名为 'config/.env' 的文件,并在其中配置认证凭据。示例如下(请勿将真实凭据提交到版本控制):

    TENANT_ID=your-tenant-id
    CLIENT_ID=your-client-id
    CLIENT_SECRET=your-client-secret
    # 如使用证书认证,可配置:
    # CERTIFICATE_PATH=path-to-your-certificate.pem
    # CERTIFICATE_PWD=your-certificate-password
  3. 使用 uv 或 pip 等包管理器安装项目及其依赖:

    # 使用 uv (推荐)
    cd entraid-mcp-server
    uv sync --with msgraph-sdk --with azure-identity --with azure-core --with msgraph-core fastmcp 

    # 使用 pip
    cd entraid-mcp-server
    pip install -r requirements.txt msgraph-sdk azure-identity azure-core msgraph-core fastmcp

服务器配置 (供MCP客户端使用)

MCP客户端(如Cursor, Claude等支持MCP的LLM)需要知道如何启动和连接到这个服务器。配置信息通常包含服务名称('server name')、启动命令('command')和参数('args'),以及必要的环境变量('env')。

  • 服务名称:'EntraID MCP Server'
  • 启动命令和参数:通常是通过一个命令(如 'uv' 或 'python')来执行 'fastmcp run' 命令,并指定服务器的入口文件路径。例如,使用 'uv run':
    • 'command' 可能是 'uv'
    • 'args' 可能是 '["run", "--with", "azure-core", "--with", "azure-identity", "--with", "fastmcp", "--with", "msgraph-core", "--with", "msgraph-sdk", "fastmcp", "run", "/path/to/your/cloned/repo/src/msgraph_mcp_server/server.py"]' (请将 '/path/to/your/cloned/repo/' 替换为实际的项目路径)
  • 环境变量:需要提供Azure AD认证所需的 'TENANT_ID', 'CLIENT_ID', 'CLIENT_SECRET' (或证书相关的环境变量)。这些通常在客户端配置中以 'env' 字典的形式提供,或者确保服务器运行环境中已设置。

请根据您的具体MCP客户端软件的要求,参考其文档进行配置。再次强调,切勿将敏感凭据直接硬编码到共享的客户端配置文件中,应使用安全的方式(如环境变量或客户端提供的秘密管理功能)传递。

基本使用方法

一旦在您的MCP客户端中正确配置并启动了此服务器,LLM客户端将能够发现服务器提供的工具和资源。您可以通过自然语言指令,引导LLM使用这些工具来执行Entra ID相关的任务。

例如,您可以指示LLM:

  • "查找名叫 John Doe 的用户。" (LLM可能会调用 'search_users' 工具)
  • "获取用户ID为 c892f0d0-31e3-45d4-92c3-XXXXXX 的登录日志。" (LLM可能会调用 'get_user_sign_ins' 工具)
  • "为用户 [email protected] 重置一个随机密码。" (LLM可能会调用 'reset_user_password_direct' 工具)

LLM将通过MCP协议调用服务器的工具,并接收返回的结果,然后根据结果完成您的指令。

信息

分类

商业系统