Skip to main content
Glama
m0nkmaster
by m0nkmaster

Microsoft Teams MCP 服务器与命令行工具

CI npm version npm downloads License: MIT Node.js

使用您标准的 Teams 登录方式,轻松让 AI 访问 Microsoft Teams。

[!NOTE]

无需 Azure 设置、应用注册、Graph 权限或 IT 支持。

搜索消息和邮件,查看未读聊天,阅读讨论串,回复消息,获取会议记录等更多功能。

为什么选择 msteams-mcp?

  • 真正地完成工作 - 搜索、未读聊天、讨论串、回复、联系人、频道、会议、记录、文件、反应等更多功能。

  • 一次登录 - 令牌自动刷新,浏览器在日常操作中保持关闭状态。

  • 安全 - 助手仅拥有您现有的 Teams 权限,加密的会话数据存储在本地。

  • 随处可用 - 所有功能均可通过 MCP 客户端和附带的 msteams 命令行工具使用。

Related MCP server: teams-mcp-server

快速入门

前提条件

  • Node.js 18+

  • 具有 Teams 访问权限的 Microsoft 帐户

  • 已安装 Google Chrome、Microsoft Edge 或 Chromium 浏览器

配置您的 MCP 客户端

添加到您的 MCP 客户端配置(例如,Claude Desktop、Windsurf、Cursor):

{
  "mcpServers": {
    "teams": {
      "command": "npx",
      "args": ["-y", "msteams-mcp@latest"]
    }
  }
}

仅此而已。npx 会下载并运行最新版本。让您的助手调用一次 teams_login,在浏览器中完成标准的 Microsoft 登录,然后即可开始使用 Teams。

工作原理

该服务器直接调用 Microsoft 的 Teams 服务(Substrate、chatsvc、CSA),使用 Teams Web 应用创建的身份验证会话。

  1. teams_login 会打开一个浏览器,进行您的标准 Microsoft 登录。

  2. 生成的 OAuth 令牌和会话数据被加密并缓存在本地。

  3. 常规操作直接使用这些令牌,无需浏览器自动化。

  4. 过期的令牌会通过 HTTP 自动刷新,无头浏览器 SSO 作为备用方案。

您的访问权限仍仅限于您的 Teams 帐户已有的可见和操作范围。

从源代码运行(备选方案)

如果您更喜欢从本地克隆运行:

git clone https://github.com/m0nkmaster/msteams-mcp.git
cd msteams-mcp
npm install && npm run build

然后配置您的 MCP 客户端:

{
  "mcpServers": {
    "teams": {
      "command": "node",
      "args": ["/path/to/msteams-mcp/dist/index.js"]
    }
  }
}

服务器会使用您系统上的 Chrome(macOS/Linux)或 Edge(Windows)进行身份验证。

命令行工具

同样的功能也可用作独立的命令行工具 msteams。当您需要在 shell 或脚本中使用 Teams 而非 MCP 客户端时,这非常有用。

从 npm 全局安装:

npm install -g msteams-mcp

这会安装两个可执行文件:msteams-mcp(MCP 服务器)和 msteams(命令行包装器)。或者无需安装直接运行:

npx -y msteams-mcp msteams status

命令请参见命令行工具用法。

可用工具

搜索与发现

工具

描述

teams_search

使用操作符搜索 Teams 消息(from:、sent:、in:、hasattachment: 等)

teams_search_email

在邮箱中搜索电子邮件(与 Teams 使用相同的身份验证 - 无需额外登录)

teams_list_chats

列出最近的会话(一对一、群组、会议、频道),带有最后一条消息预览

teams_get_message

根据 ID 获取单条消息的完整内容(不限时间);包含反应

teams_get_thread

获取会话/讨论串中的消息;包含反应;threadRootId 将范围限定到单个频道讨论串;fromUrl 接受 Teams 消息深层链接

teams_find_channel

按名称查找频道(您的团队 + 组织范围发现)

teams_get_tags

列出团队的频道标签,用于标签 @提及

teams_get_activity

获取活动提要(提及、反应、回复、通知)

消息

工具

描述

teams_send_message

发送消息(默认:自我聊天/笔记)。replyToMessageId 用于讨论串回复,subject 用于新的频道讨论串,scheduleAt 用于定时发送,contentType(auto/text/html/markdown)用于控制格式设置

teams_wait_for_reply

阻塞直到有新消息到达(服务器端轮询,上限约 110 秒);幂等的 after/nextAfter 游标 - 与 teams_send_message 配合使用

teams_edit_message

编辑您自己的一条消息(支持 contentType)

teams_delete_message

删除您自己的一条消息(软删除)

人员与联系人

工具

描述

teams_get_me

获取当前用户资料(电子邮件、姓名、ID)

teams_search_people

按姓名或电子邮件搜索人员

teams_get_frequent_contacts

获取经常联系的人(有助于名称解析)

teams_get_person

将一个或多个 MRI 解析为完整资料(姓名、电子邮件、职位、部门)

teams_get_chat

获取与某个人的一对一聊天的会话 ID

teams_create_group_chat

与多人(2 个以上其他人)创建新的群组聊天

组织

工具

描述

teams_get_favorites

获取置顶/收藏的会话

teams_add_favorite

置顶一个会话

teams_remove_favorite

取消置顶一个会话

teams_save_message

收藏一条消息

teams_unsave_message

取消收藏一条消息

teams_get_saved_messages

获取已收藏/书签的消息列表,包含来源引用

teams_get_followed_threads

获取已关注的讨论串列表,包含来源引用

teams_get_unread

获取未读计数(总计或按会话)

teams_mark_read

将会话标记为已读,直至某条消息

反应

工具

描述

teams_search_emoji

按名称搜索表情符号(标准表情符号 + 自定义组织表情符号)

teams_add_reaction

为消息添加表情符号反应

teams_remove_reaction

移除消息的表情符号反应

快速反应: like、heart、laugh、surprised、sad、angry 可以直接使用,无需搜索。

日历与会议

工具

描述

teams_get_meetings

从日历获取会议(默认为接下来 7 天)

teams_get_transcript

获取会议记录(需要来自 teams_get_meetings 的 threadId)

teams_get_meetings 返回:主题、时间、组织者、加入 URL、用于会议聊天的 threadId。将 threadId 与 teams_get_thread 结合使用可阅读会议聊天,或与 teams_get_transcript 结合使用可获取包含发言人和时间戳的完整记录。

文件

工具

描述

teams_get_shared_files

获取在会话中共享的文件和链接(支持分页)

返回文件(名称、扩展名、URL、大小)和链接(URL、标题),以及每个项目的共享者。适用于频道、群组聊天、一对一聊天和会议聊天。

会话

工具

描述

teams_login

触发手动登录(打开浏览器)

teams_status

检查身份验证和会话状态

搜索操作符

teams_search(Teams 消息)和 teams_search_email(电子邮件)都支持原生操作符:

from:sarah@company.com     # Messages/emails from person
sent:2026-01-20            # From specific date
sent:>=2026-01-15          # Since date
in:project-alpha           # Messages in channel (Teams only)
subject:"budget"           # By subject (email)
"Rob Smith"                # Find @mentions (name in quotes)
hasattachment:true         # With files
is:unread                  # Unread emails (email only)
NOT from:email@co.com      # Exclude results

组合操作符:from:sarah@co.com sent:>=2026-01-18 hasattachment:true

注意: @me、from:me、to:me 不起作用。请先使用 teams_get_me 获取您的电子邮件/显示名称。sent:today 有效,但 sent:lastweek 和 sent:thisweek 无效 - 请使用明确日期或省略(结果按时间倒序排列)。

MCP 资源

服务器还公开了用于上下文发现的被动资源:

资源 URI

描述

teams://me/profile

当前用户的资料

teams://me/favorites

置顶的会话

teams://status

身份验证状态

命令行工具用法

msteams 公开了 MCP 服务器的每一个工具 - 功能完全一致,使用相同的身份验证和相同的会话文件。不带参数运行以列出所有工具和快捷方式。

如果您已全局安装(npm install -g msteams-mcp),请直接调用:

# List available tools and shortcuts
msteams

# Check authentication status
msteams status

# Log in (opens a browser; tries silent SSO first)
msteams login
msteams login --force        # clear session and re-login

# Search messages
msteams search "meeting notes"
msteams search "project" --from 0 --size 50

# Search emails
msteams teams_search_email --query "from:sarah@company.com"

# Send a message (default: your own notes/self-chat)
msteams send "Hello from Teams MCP!"
msteams send "Message" --to "conversation-id"

# People, contacts, favourites, activity, unread
msteams people "john smith"
msteams favorites
msteams activity
msteams unread

# Any tool by name (the teams_ prefix is optional)
msteams teams_search_emoji --query "heart"
msteams find_channel --query "support"

# Machine-readable output
msteams search "query" --json

命令格式: msteams <command> [primaryArg] [--key value ...]。任何无法识别的命令都会被当作工具名称(会自动添加 teams_ 前缀)。常见的标志如 --to、--from、--size、--query、--force 会映射到相应的工具参数;不带参数运行 msteams 可查看完整列表。

从仓库克隆运行

如果您正在从源代码工作,同样的命令行工具已连接到 npm run cli(通过 tsx 运行,无需构建):

npm run cli                          # list tools
npm run cli -- search "your query"
npm run cli -- status
npm run cli -- send "Hi" --to "conversation-id"

限制

  • 需要登录 - 运行 teams_login 进行身份验证(会打开浏览器)

  • 令牌过期 - 令牌约 1 小时后过期;会尝试无头刷新,或需要时再次运行 teams_login

  • 未文档化的 API - 使用 Microsoft 的内部 API,可能随时变更,恕不另行通知

  • 搜索限制 - 仅支持全文搜索;与搜索词不匹配的线程回复不会显示(但 LLM 很可能会使用 teams_get_thread 获取完整上下文)

会话文件

会话文件存储在用户配置目录中(已加密):

  • macOS/Linux:~/.teams-mcp-server/

  • Windows:%APPDATA%\teams-mcp-server\

内容:session-state.json、token-cache.json、browser-profile/

如果会话过期,请调用 teams_login 或删除配置目录。

开发

本地开发:

git clone https://github.com/m0nkmaster/msteams-mcp.git
cd msteams-mcp
npm install
npm run build

开发命令:

npm run dev          # Run MCP server in dev mode
npm run build        # Compile TypeScript
npm run lint         # Run ESLint
npm test             # Run unit tests
npm run typecheck    # TypeScript type checking

如需热重载开发,请配置 MCP 客户端:

{
  "mcpServers": {
    "teams": {
      "command": "npx",
      "args": ["tsx", "/path/to/msteams-mcp/src/index.ts"]
    }
  }
}

详见 AGENTS.md 了解详细架构和贡献指南。

Related MCP Connectors

Related MCP Servers