mcpField
M
Microsoft Teams

Microsoft Teams

本地服务
github.com通信协作229 周前更新

关于 Microsoft Teams

Microsoft Teams 是连接 Claude 客户端与 Microsoft Teams 的开源 MCP 服务,面向 Microsoft 365 用户。它提供消息读写、频道与聊天访问以及 Teams 搜索工具。

主要功能

  1. 01列出团队和频道
  2. 02读取频道与聊天消息
  3. 03发送消息和线程回复
  4. 04搜索 Teams 中的消息
  5. 05查看 Microsoft 365 个人资料
  6. 06支持 STDIO 和 HTTP/SSE 传输

适用场景

  1. 01在 Claude 中查看近期频道讨论
  2. 02搜索 Teams 中的消息
  3. 03发送频道更新或聊天消息
  4. 04将 Claude 连接到组织的 Teams

MCP 相关

向 MCP 客户端提供 11 个 Teams 工具,涵盖频道与聊天消息、搜索和个人资料访问。支持 STDIO 与 HTTP/SSE 传输,并通过 Microsoft 登录和会话级令牌隔离处理身份验证。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"surgeenterpriseai-teams": {
"command": "npx",
"args": [
"-y",
"microsoft-teams-mcp-server"
]
}
}
}
启动命令npx -y microsoft-teams-mcp-server

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmmicrosoft-teams-mcp-server1.0.2

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

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):

  1. Claude 会提示你连接 Microsoft Teams
  2. 点击身份验证链接
  3. 使用 Microsoft 工作账户登录
  4. 完成 — 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 应用
  1. 前往 Azure 门户 → App registrations → New registration
  2. 名称:Teams MCP Server
  3. 支持的账户类型:“Accounts in any organizational directory (Any Azure AD directory - Multitenant)”
  4. 重定向 URI:Web → https://your-server.com/auth/callback
  5. 点击 Register

配置:

  • Certificates & secrets → New client secret → 复制 Value
  • API Permissions → Add Delegated (Microsoft Graph):
    • ChannelMessage.Read.All、ChannelMessage.Send
    • Chat.Read、Chat.ReadWrite、ChatMessage.Send
    • Team.ReadBasic.All、Channel.ReadBasic.All
    • User.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否autoauto、stdio 或 http
PORT否3000HTTP 服务端口
BASE_URL否http://localhost:3000公共 URL
REDIRECT_URI否{BASE_URL}/auth/callbackOAuth 回调 URL
TOKEN_STORE_PATH否./.data/tokens令牌缓存目录
LOG_LEVEL否info日志级别

许可证

MIT — LICENSE

参与贡献

欢迎提交问题和 PR。由 SurgeEnterpriseAI 构建。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。