项目简介
这是一个实现了 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环境的地方。
- 克隆仓库:
git clone https://github.com/DynamicEndpoints/m365-core-mcp.git cd m365-core-mcp - 安装依赖:
npm install - 配置环境变量:
复制 '.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,使用有状态) - 创建 Azure AD 应用注册: 在 Azure AD 中注册一个应用程序,并为其分配所需的 Graph API 权限 和 Azure RBAC 角色。README中列出了所需的Graph API权限,例如 'Directory.ReadWrite.All', 'Group.ReadWrite.All', 'User.ReadWrite.All', 'Sites.ReadWrite.All' 等。根据您希望服务器执行的具体任务,可能还需要其他权限或Azure资源管理角色。
- 构建项目:
npm run build - 启动服务器:
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 接口) 就可以连接到它,并发现其提供的资源和工具。
- 发现能力: 客户端会发送初始化请求,服务器会响应其支持的工具列表、资源列表及其结构定义。
- 读取资源: 客户端可以请求读取特定的资源 URI,例如 'm365://users/current' 或 'm365://sharepoint/sites/{siteId}',以获取 Microsoft 365 环境中的上下文信息(如当前用户信息、租户信息、SharePoint 站点详情等)。
- 调用工具: 客户端可以调用服务器暴露的工具来执行操作,例如调用 'manage_security_groups' 工具来创建一个新的安全组,或者调用 'manage_offboarding' 工具来启动用户退职流程,并提供必要的参数。LLM客户端会根据工具的输入Schema构建请求。
- 接收响应: 服务器会返回 JSON-RPC 响应,其中包含工具执行的结果或读取的资源内容。对于 HTTP 有状态模式,服务器还可以发送异步通知。
通过这些标准的MCP交互,LLM应用可以安全、结构化地与Microsoft 365环境进行交互和管理。
信息
分类
商业系统