Microsoft 365/Intune MCP服务器
一个全面的模型上下文协议(MCP)服务器,用于管理Microsoft 365、Microsoft Entra ID和Microsoft Intune资源。该服务器提供32个工具,用于自动化用户管理、设备管理、文件操作和基础设施监控。
🎯 概述
此MCP服务器使AI助手和自动化工具能够与以下对象进行交互:
- 微软Entra ID -用户和组管理
- Microsoft Intune -设备、策略和应用程序管理
- SharePoint和OneDrive -文档创建和管理
- Windows自动驾驶仪 -设备配置
- 微软隧道 -网关监控
- 移动设备管理 -Android和iOS政策
- 应用程序保护策略 -MAM政策
🚀 快速开始
先决条件
- Python 3.8或更高版本
- 具有适当许可证的Azure订阅(Intune、Microsoft 365)
- 具有所需权限的Azure AD应用程序注册
安装
- 克隆或下载此存储库
git clone
cd mcp-entra-server- 创建虚拟环境
python -m venv .venv
# Windows
.venv\Scripts\activate
# macOS/Linux
source .venv/bin/activate- 安装依赖项
pip install fastmcp azure-identity requests python-docx openpyxl python-pptx odfpy python-dotenv- 配置环境变量
创建一个 .env 项目根目录中的文件:
# Authentication Mode: "app" or "user"
AUTH_MODE=app
# Azure Service Principal Credentials (for app mode)
AZURE_CLIENT_ID=your-client-id
AZURE_TENANT_ID=your-tenant-id
AZURE_CLIENT_SECRET=your-client-secret- 运行服务器
python entra_server.py🔐 Azure应用程序注册设置
步骤1:创建应用程序注册
- 首选 Azure门户 → Azure Active Directory → 应用程序注册
- 点击 新注册
- 输入名称(例如“MCP Entra服务器”)
- 集 支持的帐户类型 转为“单一租户”
- 点击 注册
步骤2:创建客户端密码
- 在您的应用程序注册中,转到 证书和秘密
- 点击 新客户机密
- 添加描述并选择过期时间
- 点击 添加
- 立即复制机密值 (你不会再看到它了)
步骤3:配置API权限
首选 API权限 并添加以下内容 应用程序权限:
Microsoft图形权限
用户和组管理:
User.ReadWrite.All-创建和管理用户Group.Read.All-阅读组和成员资格Directory.Read.All-读取目录数据
设备管理:
DeviceManagementManagedDevices.Read.All-读取受管设备DeviceManagementServiceConfig.Read.All-读取设备管理配置DeviceManagementApps.Read.All-阅读Intune应用程序DeviceManagementConfiguration.Read.All-读取设备配置
文件操作:
Sites.ReadWrite.All-读写SharePoint网站Files.ReadWrite.All-读取和写入文件
添加权限后,单击 授予管理员同意 为您的租户。
步骤4:复制凭据
从您的应用程序注册 概述 第页,副本:
- 应用程序(客户端)ID →
AZURE_CLIENT_ID - 目录(租户)ID →
AZURE_TENANT_ID - 客户端机密(来自步骤2)→
AZURE_CLIENT_SECRET
📋 完整工具列表(32个工具)
👥 用户和组管理(4个工具)
create_user-在Microsoft Entra ID中创建新用户get_user_info-按ID获取用户详细信息list_users-列出租户中的所有用户list_groups-列出所有组get_group_members-获取群组成员资格
📱 Intune设备管理(6个工具)
list_intune_devices-列出受管理设备list_intune_compliance_policies-列出合规政策list_intune_configuration_policies-列出配置策略list_intune_filters-列出分配筛选器list_intune_scripts-列出PowerShell和Shell脚本list_intune_applications-列出移动应用程序
🚗 Windows自动驾驶仪(3个工具)
list_autopilot_profiles-列出自动驾驶仪部署配置文件list_autopilot_devices-列出已注册的自动驾驶设备list_enrollment_status_page_profiles-列出ESP配置文件
📱 移动管理(3个工具)
list_android_management_profiles-列出Android政策和注册list_ios_management_profiles-列出iOS/iPadOS策略和注册list_app_protection_policies-列出MAM策略
🌐 基础设施和连接(4个工具)
list_microsoft_tunnel_sites-列出Microsoft隧道网关站点list_microsoft_tunnel_servers-列出隧道服务器和运行状况list_intune_ad_connectors-列出用于混合连接的AD连接器list_intune_certificate_connectors-列出NDES证书连接器
📄 文件和文档管理(12个工具)
create_file_in_onedrive-在OneDrive中创建文本文件create_file_in_sharepoint-在SharePoint中创建文本文件list_sharepoint_sites-列出SharePoint网站create_word_document-创建Word(.docx)文档create_excel_workbook-创建Excel(.xlsx)工作簿create_powerpoint_presentation-创建PowerPoint(.pptx)文件convert_file_to_pdf-将Office文件转换为PDFcreate_csv_file-创建CSV文件read_csv_file-读取CSV文件export_powerpoint_slide_as_image-将幻灯片导出为图像create_odf_document-创建OpenDocument格式文件
🔧 配置选项
身份验证模式
应用程序模式(默认) -服务主体身份验证
AUTH_MODE=app- 最适合:自动化、无人值守场景
- 文件显示为已被“SharePoint应用程序”修改
用户模式 -交互式浏览器身份验证
AUTH_MODE=user- 最适合:交互式使用,需要用户上下文
- 文件显示为已登录用户修改
- 要求用户通过浏览器登录
MCP客户端集成
克劳德桌面
添加到您的Claude Desktop配置(claude_desktop_config.json):
{
"mcpServers": {
"entra-server": {
"command": "python",
"args": ["C:/path/to/mcp-entra-server/entra_server.py"],
"env": {
"AZURE_CLIENT_ID": "your-client-id",
"AZURE_TENANT_ID": "your-tenant-id",
"AZURE_CLIENT_SECRET": "your-client-secret",
"AUTH_MODE": "app"
}
}
}
}其他MCP客户端
使用 mcp.json 配置文件包含在 mcp/ 目录。
📖 用法示例
列出Intune设备
from entra_server import list_intune_devices
import json
result = list_intune_devices()
print(json.dumps(result, indent=2))创建用户
from entra_server import create_user
result = create_user(
user_principal_name="john.doe@yourtenant.com",
display_name="John Doe",
mail_nickname="john.doe",
password="TempPassword123!",
force_change_password=True
)在SharePoint中创建Word文档
from entra_server import create_word_document, list_sharepoint_sites
# First, get your SharePoint site ID
sites = list_sharepoint_sites()
site_id = sites['sites'][0]['id'] # Use first site
# Create document
result = create_word_document(
location='sharepoint',
location_id=site_id,
file_name='Report.docx',
content='# Project Status\n\nAll systems operational.',
folder_path='Shared Documents'
)列出Microsoft隧道站点
from entra_server import list_microsoft_tunnel_sites
result = list_microsoft_tunnel_sites()
for site in result['tunnel_sites']:
print(f"{site['displayName']}: {site['publicAddress']}")🔍 故障排除
权限错误(403禁止)
错误: Application is not authorized to perform this operation
解决方案:
- 检查是否在Azure门户中添加了所有必需的API权限
- 确保 管理员同意 已授予
- 等待5-10分钟以传播权限
身份验证错误
错误: AADSTS700016: Application with identifier was not found
解决方案:
- 验证
AZURE_CLIENT_ID和AZURE_TENANT_ID是正确的 - 检查您的租户中是否存在应用程序注册
错误: AADSTS7000215: Invalid client secret
解决方案:
- 在Azure门户中生成新的客户端密钥
- 更新
AZURE_CLIENT_SECRET在.env文件
文件操作错误
错误: Resource not found for the segment
解决方案:
- 验证SharePoint网站ID或OneDrive用户ID是否正确
- 使用
list_sharepoint_sites()获取有效的站点ID - 确保文件夹路径存在(例如“共享文档”)
🛡️ 安全最佳实践
- 保护凭据:从不承诺
.env文件到版本控制 - 使用最小权限:仅授予必要的API权限
- 旋转秘密:定期轮换客户机密(建议:每6个月一次)
- 监控访问:查看Azure AD登录日志以查找可疑活动
- 使用托管身份:考虑用于生产部署的Azure托管标识
📦 部署选项
地方发展
python entra_server.pyDocker容器
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "entra_server.py"]Azure容器实例
部署为容器化MCP服务器,用于基于云的访问。
GitHub操作/Azure DevOps
用作租户管理的CI/CD管道中的自动化工具。
📚 其他文件
- 工具概述.md -带示例的完整工具参考
- 认证.md -身份验证模式详细信息
- Microsoft Graph API文档
- FastMCP文档
🤝 贡献
欢迎投稿!需要改进的领域:
- 其他Intune策略类型
- 用户和设备的批量操作
- 高级SharePoint操作
- 报告和分析功能
- Exchange在线集成
- 团队管理
📄 许可证
本项目按原样提供,用于教育和自动化目的。与生产租户一起使用时,确保遵守Microsoft许可条款。
🆘 支持
对于问题和疑问:
- 检查上面的故障排除部分
- 查看Microsoft Graph API文档
- 验证API权限和管理员同意
- 检查Azure AD登录日志以了解详细错误
🔄 更新
版本1.0 (2025年11月)
- 初始版本包含32个工具
- 支持Entra ID、Intune、SharePoint、OneDrive
- Windows自动驾驶仪集成
- Microsoft隧道监控
- 移动设备管理(安卓/iOS)
- 应用程序保护策略
- 文档创建(Office、CSV、ODF格式)
- 文件转换和图像导出
