项目简介

这是一个实现了 Model Context Protocol (MCP) 的服务器端应用,专门用于与 Microsoft 365 和 Azure AD 服务进行交互。它通过标准化的接口向 LLM 客户端提供丰富的上下文信息和自动化管理能力。

主要功能点

  • 用户管理: 获取和更新用户设置,处理用户退职流程(如禁用账户、撤销会话、数据备份、转换为共享邮箱)。
  • 群组管理: 创建、更新、删除和管理Distribution Lists、Security Groups、以及Microsoft 365 Groups的成员及设置。
  • SharePoint 管理: 创建、管理站点和列表,配置站点权限、列表列和列表项。
  • Exchange 设置: 获取和更新邮箱、传输规则、组织设置和保留策略等Exchange Online配置。
  • Azure AD 对象管理: 管理Azure AD中的角色、角色分配、应用注册、设备以及服务主体(Service Principals)。
  • 通用 Microsoft API 访问: 允许通过工具调用任意 Microsoft Graph 或 Azure Resource Management API 端点,实现更广泛的管理操作。
  • 安全与合规: 搜索Azure AD统一审计日志,列出和查看来自Microsoft安全产品的安全警报。

安装步骤

要使用此MCP服务器,您需要将其部署在一个可以访问Microsoft 365环境的地方。

  1. 克隆仓库:
    git clone https://github.com/DynamicEndpoints/m365-core-mcp.git
    cd m365-core-mcp
  2. 安装依赖:
    npm install
  3. 配置环境变量: 复制 '.env.example' 文件为 '.env',并填写您的Microsoft 365/Azure AD租户信息:
    MS_TENANT_ID=您的租户ID
    MS_CLIENT_ID=您的应用注册ID
    MS_CLIENT_SECRET=您的应用注册密钥
    
    # 可选配置
    # LOG_LEVEL=info    # 日志级别:debug, info, warn, error (默认: info)
    # PORT=3000         # HTTP服务器端口 (默认: 3000)
    # USE_HTTP=true     # 设置为 'true' 使用HTTP传输 (默认: false,使用stdio)
    # STATELESS=false   # 设置为 'true' 在HTTP模式下使用无状态会话 (默认: false,使用有状态)
  4. 创建 Azure AD 应用注册: 在 Azure AD 中注册一个应用程序,并为其分配所需的 Graph API 权限Azure RBAC 角色。README中列出了所需的Graph API权限,例如 'Directory.ReadWrite.All', 'Group.ReadWrite.All', 'User.ReadWrite.All', 'Sites.ReadWrite.All' 等。根据您希望服务器执行的具体任务,可能还需要其他权限或Azure资源管理角色。
  5. 构建项目:
    npm run build
  6. 启动服务器:
    npm start

服务器将根据'.env'文件中的'USE_HTTP'设置,通过 stdio 或 HTTP 传输协议启动。

服务器配置

MCP客户端需要配置如何连接到这个服务器。配置信息通常以 JSON 格式提供给客户端。

  • 使用 stdio 传输 (默认): 客户端需要知道启动服务器进程的命令。

    {
      "name": "m365-core-server",
      "command": "npm", 
      "args": ["start"],
      "transport": "stdio",
      "description": "通过stdio连接Microsoft 365管理MCP服务器"
      // 可能还有其他特定于客户端的配置
    }
    • 'name': MCP 服务器的名称。
    • 'command': 启动服务器进程的命令 (例如 'npm', 'node')。
    • 'args': 传递给命令的参数 (例如 'start', 'dist/index.js')。
    • 'transport': 使用的传输类型,此处为 '"stdio"'。
    • 'description': 对服务器的描述。
  • 使用 HTTP 传输 ('USE_HTTP=true'): 客户端需要知道服务器的 URL。

    {
      "name": "m365-core-server-http",
      "transport": "http",
      "url": "http://localhost:3000/mcp",
      "description": "通过HTTP连接Microsoft 365管理MCP服务器"
      // 如果使用了无状态模式 STATELESS=true,可能需要额外指示客户端不维护会话ID
    }
    • 'name': MCP 服务器的名称。
    • 'transport': 使用的传输类型,此处为 '"http"'。
    • 'url': 服务器监听的完整 URL 路径,包括协议、主机、端口和路径 ('/mcp')。
    • 'description': 对服务器的描述。

具体的 JSON 格式和位置取决于您使用的 MCP 客户端。

基本使用方法

MCP服务器启动后,一个兼容的 MCP 客户端 (如支持 MCP 的 LLM 接口) 就可以连接到它,并发现其提供的资源和工具。

  1. 发现能力: 客户端会发送初始化请求,服务器会响应其支持的工具列表、资源列表及其结构定义。
  2. 读取资源: 客户端可以请求读取特定的资源 URI,例如 'm365://users/current' 或 'm365://sharepoint/sites/{siteId}',以获取 Microsoft 365 环境中的上下文信息(如当前用户信息、租户信息、SharePoint 站点详情等)。
  3. 调用工具: 客户端可以调用服务器暴露的工具来执行操作,例如调用 'manage_security_groups' 工具来创建一个新的安全组,或者调用 'manage_offboarding' 工具来启动用户退职流程,并提供必要的参数。LLM客户端会根据工具的输入Schema构建请求。
  4. 接收响应: 服务器会返回 JSON-RPC 响应,其中包含工具执行的结果或读取的资源内容。对于 HTTP 有状态模式,服务器还可以发送异步通知。

通过这些标准的MCP交互,LLM应用可以安全、结构化地与Microsoft 365环境进行交互和管理。

信息

分类

商业系统