Teams MCP 客户端
一个Microsoft Teams机器人和M365 Copilot代理,通过Azure AI Foundry将Teams/Copilot对话与模型上下文协议(MCP)服务器连接起来。此应用程序使Teams/Copilot用户能够直接从他们的Teams/Copilot界面与各种MCP工具和服务进行交互。
架构概述
Teams MCP 客户端被构建为一个对话式代理,其功能包括:
- 接收消息 来自 Microsoft Teams 用户
- 验证用户身份 使用 Microsoft Graph 和 Azure AD
- 连接到MCP服务器 在Cosmos DB中进行配置
- 处理请求 通过Azure AI Foundry(GPT-4o)
- 返回响应 使用MCP工具将输出结果返回到Teams
关键组件
- Teams 机器人框架处理Teams消息和身份验证
- Azure AI Foundry(可译为“Azure AI 制造厂”或根据上下文意译为“Azure AI 工厂”,但更常见的可能是直接保留为“Azure AI Foundry”以体现其专有名词性质)提供基于GPT-4o的人工智能处理能力
- Cosmos DB(中文可译为“宇宙数据库”,但通常直接使用原名,因其已成为一个专有名词)存储MCP服务器配置和允许使用的工具
- Azure 容器应用托管机器人应用程序
- Microsoft Graph(微软图)处理用户身份验证和资料访问
基础设施组件
Azure 资源
- Azure 容器应用环境托管基于消费量的扩展的机器人应用程序
- Azure AI Foundry(可译为“Azure AI 工坊”或根据具体语境译为“Azure AI 制造平台/开发平台”,但“工坊”可能更贴近其字面意义,若强调其作为开发或构建AI解决方案的平台,也可考虑其他表述)带有GPT-4o部署的认知服务账户
- Cosmos DB(中文可译为“宇宙数据库”或保持原名,根据上下文决定是否需要具体翻译)用于MCP配置的无服务器NoSQL数据库
- 密钥保管库安全存储机密和证书
- 虚拟网络使用子网和DNS区域的私有网络
- 应用洞察(或应用分析)监测与遥测
- 托管身份服务的Azure AD身份验证
网络构建(或人际网络拓展)
- 私有DNS区域用于
privatelink.cognitiveservices.azure.com,privatelink.services.ai.azure.com,以及privatelink.openai.azure.com - 虚拟网络与专用子网的集成
- Cosmos DB 和认知服务的专用终结点
- 用于流量控制的网络安全组
关键依赖项
核心依赖项
@azure/ai-agents(^1.2.0-beta.1): 用于对话式人工智能的 Azure AI Agents SDK@azure/ai-projects(^1.0.0-beta.10): 用于AI Foundry集成的Azure AI Projects客户端@azure/cosmos(^4.5.1): 用于MCP服务器配置存储的Cosmos DB SDK@azure/identity(^4.10.2): Azure 身份验证和托管身份@microsoft/agents-hosting(^1.0.15): Microsoft Teams 机器人框架及托管服务express(^5.1.0): 网络服务器框架
开发依赖项
- TypeScript (^5.8.3): 类型安全的JavaScript开发
@microsoft/m365agentsplayground(^0.2.16): M365 代理的测试环境npm-run-all(^4.1.5): 并行脚本执行
数据模型
MCP服务器配置
interface MCPServer {
serverLabel: string; // Friendly name for the server
serverUrl: string; // HTTP endpoint for the MCP server
allowedTools: string[]; // Array of permitted tool names
}
interface MCPServersDocument {
id: string; // Document identifier
servers: MCPServer[]; // Array of MCP server configurations
}环境设置
所需的环境变量
TENANT_ID/tenantIdAzure AD 租户 IDCLIENT_ID/clientIdTeams 客户端应用程序 IDAZURE_CLIENT_ID托管身份客户端IDAI_FOUNDRY_ENDPOINTAI Foundry服务终端(或服务端点)AI_FOUNDRY_MODELAI模型部署名称(gpt-4o)AI_FOUNDRY_CLIENT_IDAI Foundry 认证客户端 IDCOSMOS_ENDPOINTCosmos DB 帐户终结点COSMOS_DBCosmos DB 数据库名称MCP_LABBY_KEYMCP Labby服务的API密钥graph_connectionName用于身份验证的图连接名称
本地开发
- 复制环境配置:
cp teamsbot/env.sample teamsbot/.env
cp appPackage/env.sample appPackage/.env
cp terraform/env.sample terraform/.env- 安装依赖项:
cd teamsbot
npm install- 构建并运行:
npm run build
npm start部署
Terraform 基础设施
该基础设施在Terraform中定义,包含以下组件:
- 资源组包含所有Azure资源的容器
- 虚拟网络使用子网的私有网络
- 容器应用环境机器人的托管环境
- AI Foundry(人工智能铸造厂/人工智能实验室/人工智能平台)配备GPT-4o部署的认知服务
- Cosmos DB(中文可译为“宇宙数据库”或保持原英文名,根据上下文选择是否翻译)MCP服务器配置数据库
- 密钥库安全的秘密存储
- 应用注册用于Teams集成的Azure AD应用程序
使用以下方式进行部署:
cd terraform
terraform init
terraform plan
terraform apply容器部署
该应用程序已被容器化,并部署到 Azure 容器应用中:
- 图像:
ghcr.io/implodingduck/teams-mcp-client:latest - 扩展/缩放基于HTTP的自动扩展(1-1个副本)
- 资源0.25个CPU,0.5Gi内存
- 港口3978(Teams Bot Framework 端点)
Teams 应用程序包
Teams 应用的清单已配置为:
- 机器人集成自定义引擎代理,支持个人和团队范围
- 认证Microsoft Graph 集成
- 权限身份和团队成员消息功能
构建并发布Teams应用:
cd appPackage
./publish.sh使用方法
团队命令
/status检查认证状态/me通过 Microsoft Graph 获取用户配置文件信息/reset清除对话状态/diag显示诊断信息
MCP集成
该机器人自动连接到已配置的MCP服务器,并通过自然语言对话提供对这些服务器工具的访问权限。MCP服务器的配置存储在Cosmos DB中,并且可以包含各种外部服务和API的工具。
许可证
这个项目采用MIT许可证授权。请参阅 许可证 文件中有详细信息。
