mcp-teams-server
Zara 母公司 Inditex 开源的 MCP Teams Server,通过 Model Con
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Zara 母公司 Inditex 开源的 MCP Teams Server,通过 Model Con
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
在企业日常运营中,Microsoft Teams 早已成为团队协作的核心枢纽——项目进度在频道里更新、决策讨论在消息线程中沉淀、跨部门沟通靠 @mention 串联。然而,这些宝贵的协作数据长期被困在 Teams 的对话框里,大语言模型(LLM)无法直接访问。
传统的解决方案需要开发者自行封装 Microsoft Graph API,编写复杂的认证逻辑、处理 OAuth 2.0 流程、解析分页数据。这不仅门槛高,而且每次 Teams 功能更新都需要同步维护 API 集成代码。MCP Teams Server 的出现,正是为了解决这个痛点——它将 Teams 的核心操作封装为标准化的 MCP 工具,让任何支持 Model Context Protocol 的 AI 应用都能直接「操控」Teams。
MCP(Model Context Protocol)是 Anthropic 主导推出的模型上下文协议,旨在建立 AI 应用与外部工具之间的标准化通信层。与传统的 Function Calling 不同,MCP 更强调工具的可发现性和组合性——MCP Server 像插件一样可以被 AI 客户端动态发现和调用。
InditexTech(Zara 母公司 Inditex 集团的技术部门)推出的这款 MCP Teams Server,并非简单的 API 封装器,而是经过生产环境验证的企业级实现。项目采用 Apache-2.0 开源许可,背后有完整的 CI/CD 流程(GitHub Actions)、代码质量监控(SonarCloud、Scorecard)和版本管理规范。
从代码结构来看,项目采用典型的分层架构:
__init__.py):使用 FastMCP 框架构建服务,定义工具集(tools)和资源(resources)teams.py):封装 Microsoft Graph SDK,处理 Teams 消息、线程、成员的 CRUD 操作config.py):基于 MSAL(Microsoft Authentication Library)的 ClientSecretCredential 完成 Azure AD 应用身份验证CloudAdapter 作为传输层,支持容器化部署核心技术栈:Python 3.10+ / FastMCP 1.27.2 / Microsoft Graph SDK 1.58.0+ / MSAL 认证库
MCP Teams Server 提供了五组核心工具,覆盖了企业日常 Teams 协作的完整链路:
通过 list_channel_messages 工具,AI 可以读取指定 Teams 频道的消息流。这在构建会议摘要机器人、生成项目周报等场景中极为有用——AI 直接「看到」频道里的讨论内容,无需人工复制粘贴。
start_thread:在频道中创建新线程,支持自定义标题和内容reply_thread:向已有线程追加回复这两个工具使得 AI 能够主动参与 Teams 对话。例如,当代码仓库出现紧急 Bug 时,CI/CD 系统可以自动在 #incidents 频道发起线程并 @ 值班工程师。
list_team_members 返回频道所有成员的详细信息,包括显示名称、邮箱、用户 ID 等。结合消息读取能力,AI 能够理解「谁在什么时间说了什么」,从而生成结构化的会议纪要或讨论摘要。
这是最有价值的差异化功能。传统的 Teams 机器人只能向固定用户发送消息,而 MCP Teams Server 支持在消息中 @mention 任意成员,触发标准的 Teams 通知。这让 AI 能够在检测到关键事件(如服务器宕机、重要文件变更)时,精准通知相关人员,而非广播给所有人。
list_thread_replies 支持分页读取线程中的所有回复,适合长讨论链的上下文提取。
图1:MCP Teams Server 工具架构示意
上述五个工具通过 FastMCP 的 @mcp.tool() 装饰器注册,遵循 MCP 协议的 JSON-RPC 2.0 调用规范,支持流式响应和错误传播。
项目提供了完整的 Dockerfile,基于 ghcr.io/astral-sh/uv:python3.10-alpine 镜像构建。这个选择非常务实:Alpine 镜像体积小(通常 < 100MB),uv 作为包管理器安装速度极快,配合 --frozen 锁版本策略保证构建可重复性。
Dockerfile 采用单阶段构建,直接将源码复制到 /app 后执行 uv sync,启动命令为 uv run --frozen --no-dev mcp-teams-server。没有多阶段构建意味着镜像略大,但构建逻辑更简单,适合企业内部镜像仓库直接存储。
注意:目前项目未提供 docker-compose.yml,也没有 kubernetes 清单文件。如果需要在 K8s 环境中部署,需要自行编写 Deployment 和 ConfigMap。
这是整个部署过程中最复杂的环节。用户必须在 Azure Portal 中完成以下操作:
Channel.ReadBasic.AllChannelMessage.Read.AllChannelMessage.SendTeamMember.Read.Allsetup 文档(doc/MS-Teams-setup.md)提供了详细的权限矩阵和配置步骤,但这不是一个「5 分钟搞定」的部署——对于没有 Azure 经验的用户来说,完整配置可能需要 30-60 分钟。
必需的环境变量包括:
| 变量 | 说明 |
|---|---|
TEAMS_APP_ID | Azure AD 应用客户端 ID |
TEAMS_APP_PASSWORD | 客户端密钥 |
TEAMS_APP_TYPE | SingleTenant 或 MultiTenant |
TEAMS_APP_TENANT_ID | 租户 ID(SingleTenant 模式必需) |
TEAM_ID | 目标 Teams 团队 ID |
TEAMS_CHANNEL_ID | 目标频道 ID |
部署难度评为「中等」的原因:Docker 镜像本身构建简单,但 Azure 侧的配置(尤其是权限审批流程)需要多部门协作,在大型企业中可能涉及安全/IT 部门的审批流程。
项目采用了完整的测试金字塔策略:
pytest):覆盖配置解析、Teams 客户端核心逻辑pytest -m integration):需要真实 Teams 环境的端到端测试,通过环境变量切换pytest-cov):CI 中强制要求覆盖率阈值ruff):仅启用 E/F/I/UP 四类规则(Errors、Pyflakes、Import排序、PEP 8-up),避免过度格式化文档质量极高是本项目的亮点之一:README 包含完整的安装指南、环境变量说明、Docker 使用方法、LLM 集成文档;llms-install.md 详细说明了如何在 Claude Desktop、Cline 等 AI 工具中配置该 MCP Server。
不过值得注意的是,项目当前版本为 1.0.10(2025-04-01 首次发布),版本历史较短,生产环境大规模使用前建议评估其长期维护活跃度。
MCP 协议的核心价值在于降低了 AI 访问企业数据的门槛。在此之前,企业若想让 AI 理解 Teams 里的讨论,需要:
有了 MCP Teams Server,以上步骤被压缩为「配置 Azure AD → 启动 Docker → 注册到 AI 客户端」三步。InditexTech 作为拥有 Zara、Massimo Dutti 等品牌的零售巨头,将内部沉淀的 Teams 集成能力开源,既展示了技术实力,也为整个 MCP 生态提供了宝贵的生产级参考实现。
预计随着 MCP 协议在 AI 开发圈的普及,这类「开箱即用的企业数据 MCP Server」会越来越多,形成类似插件市场的 MCP Server 生态。