Microsoft 365 MCP集成
一个基于Python的MCP(模型上下文协议)客户端,用于与微软的M365 MCP服务器交互。此存储库演示了如何利用Microsoft的Teams MCP服务器通过标准化协议接口以编程方式管理Microsoft Teams资源。
目的
此存储库用作 学习和测试环境 对于想要:
- 了解MCP架构:了解如何构建连接到Microsoft托管MCP服务器的MCP客户端
- 探索M365集成:无需从头开始构建,即可发现Microsoft Teams MCP服务器的功能
- 原型团队自动化:使用MCP工具快速测试和验证团队自动化场景
- 桥接AI和团队:创建可以通过标准化协议与Microsoft Teams交互的AI驱动应用程序
什么是MCP?
这 模型上下文协议(MCP) 是一个开放标准,使人工智能应用程序能够安全地连接到数据源和工具。微软已经为其M365服务实施了MCP服务器,允许开发人员通过一致的协议与Teams、Outlook和其他M365服务进行交互。
使用MCP的主要好处:
- 标准化接口:与不同服务交互的一致方式
- AI就绪:专为与人工智能助手和代理集成而设计
- 工具发现:自动发现可用操作及其模式
- 安全:内置身份验证和授权模式
此存储库的功能
这是一个 MCP客户端应用程序 (不是服务器):
- ✅ 连接到Microsoft托管的Teams MCP服务器
- ✅ 使用Microsoft Graph API令牌进行身份验证
- ✅ 提供测试脚本以探索可用的MCP工具
- ✅ 演示Teams自动化的实际使用模式
- ✅ 包括用于令牌管理和设置验证的辅助实用程序
它没有做什么:
- ❌ 实现自定义MCP服务器
- ❌ 替换Microsoft Graph API(它使用Graph API进行身份验证)
- ❌ 要求您托管任何基础架构
你能做什么
- 聊天管理:创建、阅读、更新和删除团队聊天记录
- 消息操作:发送、检索、编辑和删除邮件
- 渠道管理:创建和管理团队频道
- 团队运营:列出并检索团队信息
- 会员管理:添加和管理团队/渠道成员
存储库结构
ai_m365_mcp/
├── test_teams_mcp.py # Main test script for Teams MCP tools
├── get_token.py # Helper to obtain Microsoft Graph tokens
├── verify_setup.py # Setup verification script
├── requirements.txt # Python dependencies
├── .env # Environment configuration (not committed)
├── setup_teams_mcp.bat # Windows setup automation
└── README.md # This file用例
此MCP客户端非常适合:
- AI代理开发:构建需要与Microsoft Teams交互的AI助手
- 工作流程自动化:为团队管理创建自动化工作流程
- 集成测试:在生产部署之前验证集成模式
- 学习MCP:了解如何使用MCP协议和微软的实现
- 快速原型制作:快速测试团队自动化想法,无需复杂的设置
快速开始
- 安装依赖项:
pip install -r requirements.txt- 配置环境变量:
更新 .env 使用您的凭据文件:
# Microsoft Teams MCP Server Configuration
TEAMS_ACCESS_TOKEN=your_access_token_here
# Optional: Azure AD App Configuration (for automated token refresh)
# AZURE_TENANT_ID=your-tenant-id-here
# AZURE_CLIENT_ID=your-client-id-here
# AZURE_CLIENT_SECRET=your-client-secret-here- 获取访问令牌:
选项1-使用Azure CLI(推荐):
python get_token.py此脚本将自动获取令牌并将其保存到 .env
选项2-通过Azure CLI手动:
az login
az account get-access-token --resource https://graph.microsoft.com --query accessToken -o tsv复制令牌并将其添加到 .env 文件: TEAMS_ACCESS_TOKEN=
- 测试MCP客户端:
python test_teams_mcp.py这将连接到Microsoft的Teams MCP服务器并演示可用的工具。
- 验证您的设置 (可选):
python verify_setup.py______________________________________________________________________
安装指南
先决条件
- Azure AD应用程序注册 (仅用于生产或应用程序访问)
聊天操作
mcp_graph_chat_listChats-列出所有聊天记录mcp_graph_chat_getChat-获取特定聊天详细信息mcp_graph_chat_createChat-创建新聊天mcp_graph_chat_postMessage-向聊天室发送消息mcp_graph_chat_listChatMessages-列出聊天中的消息mcp_graph_chat_updateChat-更新聊天属性mcp_graph_chat_deleteChat-删除聊天mcp_graph_chat_listChatMembers-列出聊天成员mcp_graph_chat_addChatMember-添加成员聊天
团队和渠道运营
mcp_graph_teams_listTeams-列出用户加入的团队mcp_graph_teams_getTeam-获取团队详细信息mcp_graph_teams_listChannels-列出团队中的频道mcp_graph_teams_getChannel-获取频道详细信息mcp_graph_teams_createChannel-创建新频道mcp_graph_teams_postChannelMessage-将消息发布到频道mcp_graph_teams_listChannelMessages-列出频道中的消息mcp_graph_teams_replyToChannelMessage-回复频道消息mcp_graph_teams_listChannelMembers-列出频道成员mcp_graph_teams_addChannelMember-将成员添加到频道
______________________________________________________________________
使用示例
列出所有团队
result = await session.call_tool(
"mcp_graph_teams_listTeams",
arguments={"user-id": "me"}
)将消息发布到频道
result = await session.call_tool(
"mcp_graph_teams_postChannelMessage",
arguments={
"team-id": "your-team-id",
"channel-id": "your-channel-id",
"body": {"content": "Hello from MCP!"}
}
)列出最近的聊天记录
result = await session.call_tool(
"mcp_graph_chat_listChats",
arguments={"$top": 10, "$orderby": "lastMessagePreview/createdDateTime desc"}
)创建新频道
result = await session.call_tool(
"mcp_graph_teams_createChannel",
arguments={
"team-id": "your-team-id",
"displayName": "Project Updates",
"description": "Channel for project status updates",
"membershipType": "standard"
}
)______________________________________________________________________
Team.ReadBasic.All-阅读基本团队信息Channel.ReadBasic.All-读取基本频道信息ChannelMessage.Read.All-读取频道消息ChannelMessage.Send-发送频道消息TeamMember.Read.All-阅读团队成员
- 在Azure AD中配置API权限
- 在您的应用程序注册中,转到 API权限 - 点击 添加权限 > Microsoft Graph > 委派权限 - 添加上面列出的权限 - 点击 授予管理员同意 (需要管理员权限)
获取访问令牌
开发/测试(最简单):
使用Azure CLI:
az login
python get_token.py脚本将自动将令牌保存到 .env
用于制作(仅限应用程序访问):
- 在Azure门户中,转到 证书和秘密
- 创建新的客户端密钥
- 将这些添加到
.env:
AZURE_TENANT_ID=your_tenant_id
AZURE_CLIENT_ID=your_client_id
AZURE_CLIENT_SECRET=your_client_secret______________________________________________________________________
可用工具
聊天工具
mcp_graph_chat_listChats-列出所有聊天记录mcp_graph_chat_getChat-获取特定聊天mcp_graph_chat_createChat-创建新聊天mcp_graph_chat_postMessage-发送消息聊天
权限错误(403禁止): 确保您的Azure AD应用程序具有所需的Microsoft Graph权限:
- 聊天。阅读、聊天。读写
- 团队。阅读基础。全部,频道。阅读基础。全部
- 频道消息。读。全部,频道消息。发送
未找到资源(404):
- 验证团队id和频道id是否正确
- 使用
listTeams和listChannels查找有效ID - 确保用户有权访问指定的资源
______________________________________________________________________
参考文献
- Microsoft Teams MCP服务器参考
- Microsoft Graph API文档
- Azure AD应用程序注册指南
mcp_graph_teams_listChannels-列出团队频道mcp_graph_teams_createChannel-创建新频道mcp_graph_teams_postChannelMessage-发布到频道mcp_graph_teams_listChannelMessages-列出频道消息
需求
- Python 3.8+
- 具有Microsoft Graph权限的Azure AD应用程序注册
- Microsoft Graph API的有效访问令牌
环境配置
该项目使用 .env 配置文件。关键设置包括:
团队MCP服务器:
TEAMS_ACCESS_TOKEN-Microsoft Graph API访问令牌(必需)AZURE_TENANT_ID-您的Azure AD租户ID(可选,用于自动身份验证)AZURE_CLIENT_ID-您的Azure AD应用程序客户端ID(可选)AZURE_CLIENT_SECRET-您的Azure AD应用程序密钥(可选)
数据库(可选,用于其他功能):
DATABASE_URL-PostgreSQL连接字符串DB_FORCE_ROLLBACK-强制回滚事务(真/假)
OpenAI/Azure OpenAI(可选,用于AI功能):
OPENAI_API_BASE-Azure OpenAI端点OPENAI_API_KEY-Azure OpenAI API密钥OPENAI_API_VERSION-API版本OPENAI_API_MODEL_DEPLOYMENT_NAME-模型部署名称
安全
⚠️ 永远不要将访问令牌提交给版本控制!
- 这
.env文件已添加到.gitignore - 访问令牌通常在1小时后过期
- 使用刷新令牌
python get_token.py - 对于生产,使用Azure AD应用程序凭据进行自动令牌刷新
故障排除
令牌已过期(401未经授权):
python get_token.py找不到Azure CLI: 从以下位置安装:https://docs.microsoft.com/cli/azure/install-azure-cli
权限错误(403禁止): 确保您的Azure AD应用程序具有所需的Microsoft Graph权限:
- 聊天。阅读、聊天。读写
- 团队。阅读基础。全部,频道。阅读基础。全部
- 频道消息。读。全部,频道消息。发送
