关于 Microsoft Teams
Microsoft Teams 是连接 Claude 客户端与 Microsoft Teams 的开源 MCP 服务,面向 Microsoft 365 用户。它提供消息读写、频道与聊天访问以及 Teams 搜索工具。
主要功能
- 01列出团队和频道
- 02读取频道与聊天消息
- 03发送消息和线程回复
- 04搜索 Teams 中的消息
- 05查看 Microsoft 365 个人资料
- 06支持 STDIO 和 HTTP/SSE 传输
适用场景
- 01在 Claude 中查看近期频道讨论
- 02搜索 Teams 中的消息
- 03发送频道更新或聊天消息
- 04将 Claude 连接到组织的 Teams
MCP 相关
向 MCP 客户端提供 11 个 Teams 工具,涵盖频道与聊天消息、搜索和个人资料访问。支持 STDIO 与 HTTP/SSE 传输,并通过 Microsoft 登录和会话级令牌隔离处理身份验证。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Teams MCP Server
首个面向 Claude 的开源 Microsoft Teams 连接器。任何 Microsoft 365 用户都可以连接,只需使用工作账户登录。无需设置、凭据或自行托管。
通过 Claude Code、Claude Desktop 或 Claude Cowork 读取消息、列出频道、搜索 Teams 并发送消息。
由 SurgeEnterpriseAI 构建。
工作原理
┌─────────────┐ Click "Connect" ┌──────────────────────┐
│ Claude User │ ──────────────────────► │ Teams MCP Server │
│ (Cowork/ │ │ (hosted by Surge) │
│ Desktop/ │ SSE/MCP Protocol │ │
│ Code) │ ◄─────────────────────► │ ┌────────────────┐ │
└─────────────┘ │ │ OAuth (common) │ │
│ │ Any M365 user │ │
User signs in with their │ │ can sign in │ │
own Microsoft account │ └───────┬────────┘ │
─────────────────────► │ │ │
│ ┌───────▼────────┐ │
│ │ Microsoft │ │
│ │ Graph API │ │
│ └────────────────┘ │
└──────────────────────┘
用户连接自己的 Microsoft 365 账户。 他们看到的是自己的团队、频道和消息。每位用户的令牌彼此隔离。服务端充当桥梁,不会存储消息,只负责传递消息。
功能
- 一键连接 — 访问
/connect,使用 Microsoft 账户登录即可 - 多租户 — 支持任何 Microsoft 365 组织和任何用户
- 11 个工具 — 团队、频道、消息、聊天、搜索、个人资料
- 双传输方式 — Claude Code 使用 STDIO,Cowork 和远程连接使用 HTTP/SSE
- 多用户 — 每个会话都使用彼此隔离的 OAuth 令牌
- 自动检测 — 根据启动方式选择合适的传输方式
- 令牌缓存 — 静默刷新,无需每次会话都重新登录
- 重试逻辑 — Graph API 调用遭到限流时自动重试
- TypeScript — 完整类型支持、清晰的架构,采用 MIT 许可证
面向用户:一键连接
如果已经有人托管此服务(例如,托管在 https://teams-mcp.surgeai.com):
- Claude 会提示你连接 Microsoft Teams
- 点击身份验证链接
- 使用 Microsoft 工作账户登录
- 完成 — Claude 现在可以读取你的 Teams 了
无需 API 密钥、Azure 门户或任何设置。
面向开发者:自行托管
1. 克隆并安装
git clone https://github.com/SurgeEnterpriseAI/teams-mcp-server.git
cd teams-mcp-server
npm install
npm run build
2. 注册 Azure AD 应用
- 前往 Azure 门户 → App registrations → New registration
- 名称:
Teams MCP Server - 支持的账户类型:“Accounts in any organizational directory (Any Azure AD directory - Multitenant)”
- 重定向 URI:Web →
https://your-server.com/auth/callback - 点击 Register
配置:
- Certificates & secrets → New client secret → 复制 Value
- API Permissions → Add Delegated (Microsoft Graph):
ChannelMessage.Read.All、ChannelMessage.SendChat.Read、Chat.ReadWrite、ChatMessage.SendTeam.ReadBasic.All、Channel.ReadBasic.AllUser.Read
- 点击 Grant admin consent(适用于你自己的租户;其他租户会在首次登录时授予同意)
3. 配置并部署
cp .env.example .env
# Set TEAMS_CLIENT_ID, TEAMS_CLIENT_SECRET
# Set BASE_URL and REDIRECT_URI to your production URL
# TEAMS_AUTHORITY=common (multi-tenant, default)
可部署到 Railway、Render、Azure App Service 或任何 Node.js 主机:
# Railway
railway login && railway init && railway up
# Or Azure
az webapp up --name teams-mcp-server --runtime "NODE:20-lts"
# Or just run directly
TRANSPORT_MODE=http node dist/index.js
4. 提交到 MCP Registry
部署并测试完成后,将服务 URL 提交到 Anthropic 的 MCP 连接器注册表。之后,用户就会在 Claude Cowork 中看到“Microsoft Teams”连接选项,就像 Slack 和 Gmail 一样。
Claude Code 用户:本地 STDIO 模式
添加到你的 .mcp.json:
{
"mcpServers": {
"teams": {
"command": "node",
"args": ["/path/to/teams-mcp-server/dist/index.js"],
"cwd": "/path/to/teams-mcp-server"
}
}
}
首次运行时会打开浏览器,供你登录 Microsoft。之后,令牌会被缓存。
可用工具
| 工具 | 功能 |
|---|---|
teams_list_teams | 列出你的所有 Teams |
teams_list_channels | 列出团队中的频道 |
teams_read_channel_messages | 读取最近的频道消息 |
teams_send_channel_message | 向频道发送消息 |
teams_reply_to_message | 在频道话题中回复 |
teams_read_message_replies | 读取话题回复 |
teams_list_chats | 列出你的私聊和群聊 |
teams_read_chat_messages | 读取聊天中的消息 |
teams_send_chat_message | 发送私聊或群聊消息 |
teams_search_messages | 搜索所有 Teams 中的消息 |
teams_get_profile | 获取你的 Microsoft 365 个人资料 |
架构
src/
├── index.ts Main entry (auto-detects transport)
├── config.ts Central configuration
├── logger.ts Structured logging
├── types.ts TypeScript interfaces
├── sessions.ts Multi-user session manager
├── auth/
│ ├── oauth.ts MSAL OAuth (multi-tenant, per-user)
│ └── token-store.ts Persistent token cache
├── graph/
│ ├── client.ts Graph HTTP client with retries
│ ├── teams.ts Teams & channels API
│ ├── messages.ts Channel messages API
│ ├── chats.ts DM & group chat API
│ └── search.ts Search & profile API
├── mcp/
│ ├── server.ts MCP server factory
│ └── tools/ 11 tool definitions
├── transport/
│ ├── stdio.ts STDIO (Claude Code)
│ └── http.ts Express + SSE (Cowork / remote)
环境变量
| 变量 | 必填 | 默认值 | 描述 |
|---|---|---|---|
TEAMS_CLIENT_ID | 是 | — | Azure AD 应用客户端 ID |
TEAMS_CLIENT_SECRET | 是 | — | Azure AD 客户端密钥 |
TEAMS_AUTHORITY | 否 | common | 多租户使用 common,或指定特定租户 ID |
TRANSPORT_MODE | 否 | auto | auto、stdio 或 http |
PORT | 否 | 3000 | HTTP 服务端口 |
BASE_URL | 否 | http://localhost:3000 | 公共 URL |
REDIRECT_URI | 否 | {BASE_URL}/auth/callback | OAuth 回调 URL |
TOKEN_STORE_PATH | 否 | ./.data/tokens | 令牌缓存目录 |
LOG_LEVEL | 否 | info | 日志级别 |
许可证
MIT — LICENSE
参与贡献
欢迎提交问题和 PR。由 SurgeEnterpriseAI 构建。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。