@floriscornel/teams-mcp

中文文档
1.0.1发布于 2026/09/25MITTypeScriptES Module构建来源已验证近 30 天下载 5475

微软图形团队集成的 MCP 服务器

中文使用文档
文档目录43 节
  1. * 安装
  2. * 特性
  3. 认证
  4. QQ 用户管理
  5. 微软团队集成
  6. QQ 聊天和通讯
  7. QQ 信件管理
  8. 媒体附件( A)
  9. QQ 高级搜索和发现
  10. 丰富的信件格式支持
  11. 格式选项
  12. 示例使用
  13. 安全特性
  14. 支持的 Markdown 特性
  15. LLM 友好内容格式
  16. 内容格式选项
  17. 转换什么
  18. 附件元数据
  19. 示例使用
  20. * 安装
  21. QQ 配置
  22. 先决条件
  23. 需要的微软图形权限
  24. 认证模式
  25. 托肯存储
  26. 使用量
  27. 启动服务器
  28. CLI 命令
  29. 环境变量
  30. 使用您的 Azure AD 应用程序注册
  31. 解决问题
  32. 仅读模式
  33. 可用的 MCP 工具
  34. 实例
  35. 认证
  36. 聊天插座示例
  37. 有提及和图像的频道消息
  38. 文件上传示例
  39. 与光标/光标结合
  40. • 警卫
  41. 许可证
  42. 捐款
  43. ++ 辅助

MCP团队

npm version npm downloads codecov License: MIT GitHub stars

一个模型上下文协议(MCP)服务器,提供与Microsoft Graph API的无缝集成,使AI助手能够与Microsoft Teams,用户,聊天,文件,和组织数据互动.

Teams MCP server

* 安装

要使用 Cursor/Claude/VS 代码中的 MCP 服务器,请添加以下配置 :

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

* 特性

认证

  • OAuth 2.0 设备代码认证流程与 Microsoft Graph
  • 安全令牌管理、缓存持续和刷新令牌更新
  • 认证状态检查和登录支持
  • 缩小范围的只读模式
  • 直接 AUTH_TOKEN 支持预发的 Microsoft Graph 访问符

QQ 用户管理

  • 获取当前用户信息
  • 按名称或电子邮件搜索用户
  • 获取详细的用户配置
  • 访问组织目录数据

微软团队集成

  • 团队管理

    • 列表用户加入的团队
    • 访问团队细节和元数据
  • 频道操作

    • 团队内部的列表渠道
    • 获取频道消息和回复
    • 向团队频道发送消息
    • 对现有频道线索的答复
    • 编辑和软删除频道消息及回复
    • 支持信息重要性级别(normal, (中文(简体) ), high, (中文(简体) ), urgent(中文(简体) )
    • 通过 URL 或 base64 数据支持内置图像附件
  • 小组成员

    • 名单 小组成员及其作用
    • 获取成员信息
    • 搜索用户 @mentions

QQ 聊天和通讯

  • 1:1和分组聊天
    • 列表用户聊天
    • 创建新的 1: 1 或小组对话
    • 以过滤、排序和页码获取聊天消息历史
    • 通过 @odata.nextLink 标记
    • 向已有聊天发送消息
    • 编辑先前发送的聊天信息
    • 软删除聊天信息

QQ 信件管理

  • 编辑并删除( D)
    • 在聊天和频道中更新( 编辑) 发送信件
    • 在聊天和频道中软删除信件( 标记为删除而不永久删除)
    • 只有信件发送者可以更新/删除自己的信件
    • 支持编辑时的马克下调格式化、提及和重要级别

媒体附件( A)

  • 主机内容

    • 从聊天和频道消息下载主机内容(图像、文件)
    • 访问对话中共享的内含图像和附件
    • 可选地将主机内容直接保存到磁盘
  • 文件上传

    • 上传并发送任何文件类型(PDF、DOCX、XLSX、ZIP、图像等)到频道和聊天室
    • 通过可更新的上传会话提供大文件支持( > 4 MB)
    • 频道上传到SharePoint,聊天上传到OneDrive
    • 可选信件文本、 自定义文件名、 格式化和重要级别

QQ 高级搜索和发现

  • 信件搜索
    • 使用 Microsoft 搜索 API 搜索所有团队频道和聊天
    • 支持 KQL (关键字查询语言) 语法
    • 通过发件人过滤、引用、附件、读取状态和日期范围
    • 用高级过滤选项获取最近的消息
    • 查找提及当前用户的信件

丰富的信件格式支持

以下工具支持团队频道和聊天中丰富的消息格式化:

  • send_channel_message
  • send_chat_message
  • reply_to_channel_message
  • update_channel_message
  • update_chat_message
  • send_file_to_channel
  • send_file_to_chat

格式选项

您可以指定 format 用于控制消息格式的参数 :

  • text (默认):纯文本
  • markdown: 将 Markdown 格式化(粗体、斜体、列表、链接、代码等)转换为已消毒的 HTML

何时 format 设置为 markdown,信件内容会使用安全标记分解器被转换为 HTML ,并在发送到 Teams 之前将潜在危险内容去除.

若为 format 未指定,信件将作为纯文本发送.

示例使用

{
  "teamId": "...",
  "channelId": "...",
  "message": "**Bold text** and _italic text_\n\n- List item 1\n- List item 2\n\n[Link](https://example.com)",
  "format": "markdown",
  "importance": "high"
}
{
  "chatId": "...",
  "message": "Simple plain text message",
  "format": "text"
}

安全特性

  • HTML 卫生:所有标记下的内容被转换为HTML并进行消毒去除潜在的危险元素(标语,事件处理器等)
  • 允许的标记:只允许安全 HTML 标记(p, strong, em, a, ul, ol, li, h1- h6, code, pre等)
  • 安全属性: 只允许安全属性
  • SS 预防: 内容自动进行消毒以防止跨站点脚本攻击

支持的 Markdown 特性

  • 文本格式化: 粗体( 粗体)**text**),斜体(_text_),通过(~~text~~(中文(简体) )
  • 链接数字 : [text](url)
  • 名单: 有子弹- item编号(1. item(中文(简体) )
  • 代码: 内置 `code` 和有栅栏的代码块
  • 标题数字 : # H1 结束 ###### H6
  • 块名数字 : > quoted text
  • 表格: GitHub 喜欢的打分表

LLM 友好内容格式

从Microsoft Graph API中取回的信件作为含有Teams特定标记的原始 HTML 返回. 为了使这些内容更能被AI助手所消耗,以下工具支持HTML对Markdown的自动转换:

  • get_chat_messages
  • get_channel_messages
  • get_channel_message_replies
  • search_messages
  • get_my_mentions

内容格式选项

使用 contentFormat 用于控制消息内容如何返回的参数 :

  • markdown (默认):转换 Teams HTML 以清理 Markdown , 优化为 LLM 消耗
  • raw: 从 Microsoft Graph API 返回原始 HTML

转换什么

HTML 元素下调输出
<at id="0">Name</at> (团队提及)@Name (多字名称合并使用提及元数据)
<strong>text</strong>**text**
<em>text</em>*text*
<code>text</code>`text`
<a href="url">text</a>[text](url)
<ul><li>item</li></ul>- item
<table>...</table>GFM 标记表
<attachment id="...">{attachment:id}
<systemEventMessage/>(删除)
<hr>---
&nbsp;, (中文(简体) ), &amp;等 (中文(简体) ).解码为普通字符

附件元数据

包含文件附件或内含图像的信件包括 attachments 每个附件(id、名称、内容Type、内容Url、缩略图Url)的元数据响应中的数组。 内线 {attachment:id} 减记内容中的标记与该数组中的条目相关,使消费者可以通过 download_message_hosted_content 或者说 download_chat_hosted_content。 。 。 .

示例使用

{
  "chatId": "19:meeting_...",
  "limit": 10,
  "contentFormat": "markdown"
}

要获得原始 HTML :

{
  "chatId": "19:meeting_...",
  "limit": 10,
  "contentFormat": "raw"
}

* 安装

# Install dependencies
npm install

# Build the project
npm run build

# Set up authentication
npm run auth

QQ 配置

先决条件

  • 节点.js 18+
  • 有适当权限的微软365账户
  • Microsoft Graph 授予以下范围的权限

需要的微软图形权限

全模式( 默认) :

  • User.Read - 阅读用户配置
  • User.ReadBasic.All - 阅读基本用户信息
  • Team.ReadBasic.All - 阅读团队信息
  • Channel.ReadBasic.All - 阅读频道信息
  • ChannelMessage.Read.All - 读取频道消息
  • ChannelMessage.Send - 发送频道信息和答复
  • ChannelMessage.ReadWrite - 编辑和删除频道消息
  • Chat.Read - 阅读聊天信息(通过只读范围包含)
  • Chat.ReadWrite - 创建和管理聊天、发送/编辑/删除聊天信息(超级) Chat.Read(中文(简体) )
  • TeamMember.Read.All - 阅读小组成员
  • Files.ReadWrite.All - 需要文件上传到频道和聊天室

只读模式 (单位:千美元)TEAMS_MCP_READ_ONLY=true——只要求这些范围:

  • User.Read
  • User.ReadBasic.All
  • Team.ReadBasic.All
  • Channel.ReadBasic.All
  • ChannelMessage.Read.All
  • TeamMember.Read.All
  • Chat.Read

认证模式

完全访问 :

npx @floriscornel/teams-mcp@latest authenticate

只读访问 :

npx @floriscornel/teams-mcp@latest authenticate --read-only

使用已存在的 Microsoft Graph JWT 进行直接符号注入 :

{
  "mcpServers": {
    "teams-mcp": {
      "command": "npx",
      "args": ["-y", "@floriscornel/teams-mcp@latest"],
      "env": {
        "AUTH_TOKEN": "<jwt-for-https://graph.microsoft.com>"
      }
    }
  }
}

托肯存储

  • 本地存储 Auth 元数据 ~/.msgraph-mcp-auth.json
  • Token 缓存存储于本地 ~/.teams-mcp-token-cache.json

使用量

启动服务器

# Development mode with hot reload
npm run dev

# Production mode
npm run build && node dist/index.js

# Start in read-only mode (disables all write tools)
TEAMS_MCP_READ_ONLY=true node dist/index.js

CLI 命令

npx @floriscornel/teams-mcp@latest authenticate              # Authenticate with full scopes
npx @floriscornel/teams-mcp@latest authenticate --read-only  # Authenticate with read-only scopes
npx @floriscornel/teams-mcp@latest check                     # Check authentication status
npx @floriscornel/teams-mcp@latest logout                    # Clear authentication
npx @floriscornel/teams-mcp@latest auth                      # Alias for authenticate
npx @floriscornel/teams-mcp@latest                           # Start MCP server (default)

环境变量

  • TEAMS_MCP_READ_ONLY=true - 以只读模式启动 MCP 服务器
  • AUTH_TOKEN=<jwt> - 使用先前存在的微软Graph访问符而不是MSAL登录
  • TEAMS_MCP_CLIENT_ID=<guid> - 认证您的 Azure AD 应用程序注册, 而不是默认的 Microsoft Graph CLI 应用程序
  • TEAMS_MCP_TENANT_ID=<guid-or-domain> - 授权给特定租户(例如:. contoso.onmicrosoft.com); 单租户应用程序注册要求
  • TEAMS_MCP_SCOPES="User.Read Chat.ReadWrite" - 覆盖认证期间请求的许可范围(相机或空格分离)

使用您的 Azure AD 应用程序注册

默认情况下,服务器通过微软的公用Graph CLI app认证. 使用自己的应用程序注册(例如,当租户需要注册时):

  1. 单位 应用程序注册设置 认证 → 允许公共客户流 → 对
  2. 添加所需内容 授权 微软图形权限( 见上文列表)
  3. 用你贴在房客身上的应用程序认证:
TEAMS_MCP_CLIENT_ID=<your-app-id> \
TEAMS_MCP_TENANT_ID=<your-tenant-id> \
npx @floriscornel/teams-mcp@latest authenticate

在 MCP 服务器进程上设置相同的环境变量,这样它就可以以相同的应用身份更新令牌.

大多数团队权限( M)Team.ReadBasic.All, (中文(简体) ), ChannelMessage.*, (中文(简体) ), Chat.ReadWrite, (中文(简体) ), Files.ReadWrite.All需要行政部门的同意。 如果登录显示 "需要行政审批",行政部门必须同意该应用软件,一旦——通过 企业申请 —— 许可 —— 赠款管理同意,或打开:

https://login.microsoftonline.com/<tenant-id>/v2.0/adminconsent?client_id=<app-id>&scope=<space-separated scopes>&redirect_uri=<registered-redirect-uri>

行政同意后, authenticate 完成没有提示。 请求范围 未在应用程序注册上配置 将永远触发行政批准墙——验证应用程序 API 权限 列表涵盖每个请求的范围.

仅读模式

服务器支持一种只读模式来禁用所有写入操作(发送消息,创建聊天,上传文件,编辑/删除消息),并且只请求从Microsoft Graph中读取许可范围.

启用只读模式 使用其中之一:

  • 环境变量: TEAMS_MCP_READ_ONLY=true
  • CLI 旗帜 : --read-only

缩小范围认证 :

npx @floriscornel/teams-mcp@latest authenticate --read-only

MCP 服务器配置( 只读) :

{
  "mcpServers": {
    "teams-mcp": {
      "command": "npx",
      "args": ["-y", "@floriscornel/teams-mcp@latest"],
      "env": {
        "TEAMS_MCP_READ_ONLY": "true"
      }
    }
  }
}

切换模式 : 当从只读模式切换到全模式时,服务器会检测出范围不匹配,并警告您重新认证:

npx @floriscornel/teams-mcp@latest authenticate

只读工具( 16): auth_status, (中文(简体) ), get_current_user, (中文(简体) ), search_users, (中文(简体) ), get_user, (中文(简体) ), list_teams, (中文(简体) ), list_channels, (中文(简体) ), get_channel_messages, (中文(简体) ), get_channel_message_replies, (中文(简体) ), list_team_members, (中文(简体) ), search_users_for_mentions, (中文(简体) ), download_message_hosted_content, (中文(简体) ), list_chats, (中文(简体) ), get_chat_messages, (中文(简体) ), download_chat_hosted_content, (中文(简体) ), search_messages, (中文(简体) ), get_my_mentions

在只读模式中禁用的工具( 15 ): send_channel_message, (中文(简体) ), reply_to_channel_message, (中文(简体) ), update_channel_message, (中文(简体) ), delete_channel_message, (中文(简体) ), send_file_to_channel, (中文(简体) ), send_chat_message, (中文(简体) ), create_chat, (中文(简体) ), add_chat_member, (中文(简体) ), update_chat_message, (中文(简体) ), delete_chat_message, (中文(简体) ), send_file_to_chat, (中文(简体) ), set_channel_message_reaction, (中文(简体) ), set_chat_message_reaction, (中文(简体) ), unset_channel_message_reaction, (中文(简体) ), unset_chat_message_reaction

可用的 MCP 工具

认证

  • auth_status - 检查当前认证状态

用户操作

  • get_current_user - 获得经认证的用户信息
  • search_users - 按姓名或电子邮件搜索用户
  • get_user - 通过身份证或电子邮件获得详细的用户信息

团队业务

  • list_teams - 列表用户加入的团队
  • list_channels - 列出特定小组的渠道
  • get_channel_messages - 从团队频道获取带有附件摘要和内容格式选择的信息
  • get_channel_message_replies - 获取对特定频道消息的答复
  • send_channel_message - 向团队频道发送信息,其中可选提及、重要性和图像附件
  • reply_to_channel_message - 对现有频道消息的答复
  • update_channel_message - 编辑先前发送的频道消息或回复
  • delete_channel_message - 软删除频道消息或回复
  • set_channel_message_reaction - 在频道消息中添加反应
  • unset_channel_message_reaction - 从频道消息中删除反应
  • list_team_members - 列出具体小组成员名单
  • search_users_for_mentions - 在信件中搜索团队成员到@mention
  • send_file_to_channel - 上传本地文件并将其作为消息发送给频道

聊天操作

  • list_chats - 列表用户聊天(1:1和组)
  • get_chat_messages - 从特定聊天中获取信息,包括页盖、过滤器、订购和 fetchAll
  • send_chat_message - 给聊天发送信息
  • create_chat - 创建新的 1:1 或分组聊天
  • add_chat_member - 在现有分组聊天中添加一个或多个成员
  • update_chat_message - 编辑先前发送的聊天信息
  • delete_chat_message - 软删除聊天信息
  • set_chat_message_reaction - 对聊天信息添加反应
  • unset_chat_message_reaction - 从聊天信息中删除反应
  • send_file_to_chat - 上传本地文件并将其作为一条消息发送给聊天

媒体业务

  • download_message_hosted_content - 从频道消息下载主机内容(图像、文件)
  • download_chat_hosted_content - 从聊天信息下载主机内容(图像、文件)

搜索操作

  • search_messages - 使用 KQL 语法搜索所有团队的信息
  • get_my_mentions - 查找最近提及当前用户的信件

实例

认证

首先,通过微软图表认证:

# Full access (default)
npx @floriscornel/teams-mcp@latest authenticate

# Read-only (reduced permission scopes)
npx @floriscornel/teams-mcp@latest authenticate --read-only

检查您的认证状态 :

npx @floriscornel/teams-mcp@latest check

需要时登录 :

npx @floriscornel/teams-mcp@latest logout

聊天插座示例

{
  "chatId": "19:meeting_...",
  "limit": 100,
  "fetchAll": true,
  "orderBy": "createdDateTime",
  "descending": true,
  "contentFormat": "markdown"
}

有提及和图像的频道消息

{
  "teamId": "team-id",
  "channelId": "channel-id",
  "message": "Please review **today's update**",
  "format": "markdown",
  "importance": "high",
  "mentions": [
    {
      "mention": "alex.chen",
      "userId": "00000000-0000-0000-0000-000000000000"
    }
  ],
  "imageUrl": "https://example.com/status.png"
}

文件上传示例

{
  "chatId": "19:meeting_...",
  "filePath": "/absolute/path/to/report.pdf",
  "message": "Please review the attached report",
  "format": "markdown"
}

与光标/光标结合

这个MCP服务器的设计是通过"模型上下文协议"与Claude/Cursor/VS代码等AI助手合作.

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

• 警卫

  • 所有认证都通过微软的 OAuth 2.0 流程或调用提供的 Microsoft Graph 令牌处理
  • 刷新符号支持: 访问令牌使用缓存刷新令牌自动更新, 所以你不需要每小时重新认证
  • Token 缓存存储于本地 ~/.teams-mcp-token-cache.json
  • 本地存储 Auth 元数据 ~/.msgraph-mcp-auth.json
  • 在将 HTML 发送给 Teams 之前, 标记下的内容被静态化
  • AUTH_TOKEN 被验证以确保其目标 https://graph.microsoft.com
  • 没有记录或暴露任何敏感数据
  • 遵循Microsoft Graph API 安全最佳做法

许可证

麻省理工学院许可证 - 详情见LICENSE文件

捐款

  1. 叉子存储器
  2. 创建特性分支
  3. 做你的改变
  4. 运行构建、 内衣和测试
  5. 提交拉动请求

++ 辅助

关于议题和问题清单:

  • 检查现有的 GitHub 问题
  • 审查微软图形 API 文档
  • 确保适当的认证和权限配置

版本与发布记录

@floriscornel/teams-mcp 共发布 14 个版本,首次发布于 2025/06/06;过去 12 个月发布了 8 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.0.1latest2026/09/251 个月前
1.0.02026/09/251 个月前
0.9.02026/03/307 个月前
0.8.02026/03/028 个月前
0.7.02026/02/258 个月前
0.6.02026/02/198 个月前

关于 @floriscornel/teams-mcp 的常见问题

@floriscornel/teams-mcp 是什么?

微软图形团队集成的 MCP 服务器

如何安装 @floriscornel/teams-mcp?

在项目目录运行 npm install @floriscornel/teams-mcp,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 teams-mcp,可以用 npx teams-mcp 直接运行。

@floriscornel/teams-mcp 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@floriscornel/teams-mcp 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@floriscornel/teams-mcp 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=18.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@floriscornel/teams-mcp 可以商用吗?

@floriscornel/teams-mcp 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@floriscornel/teams-mcp 的下载量有多少?

根据 npm 官方下载统计,@floriscornel/teams-mcp 在 2026/10/15 – 2026/11/13 这 30 天内被下载 5,475 次,日均约 183 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@floriscornel/teams-mcp 还在维护吗?

最新版本 1.0.1 发布于 2026/09/25(1 个月前);至今共发布 14 个版本,其中过去 12 个月发布了 8 个;首次发布于 2025/06/06。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。