# @floriscornel/teams-mcp 中文文档

规范地址：https://npmcn.com/package/%40floriscornel/teams-mcp/

版本：1\.0\.1
npm 元数据更新时间：2026-09-25T08:59:22.111Z
中文译文更新时间：2026-11-15T00:05:32.420Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40floriscornel/teams-mcp
原文对照：https://npmcn.com/package/%40floriscornel/teams-mcp/?lang=original
项目主页：https://github.com/floriscornel/teams-mcp#readme
源码仓库：https://github.com/floriscornel/teams-mcp

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：358 kB，75 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=18\.0\.0
- 运行依赖：12 个
- 首次发布：2025-06-05T21:47:14.300Z
- 最新版本发布：2026-09-25T08:59:21.391Z
- 近 30 天下载量：5475（2026-10-15 至 2026-11-13，npm 官方下载统计）
- 已发布版本数：14（近 12 个月 8 个）

## 中文简介

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

## 安装

```sh
npm install @floriscornel/teams-mcp
```

也可以使用：`pnpm add @floriscornel/teams-mcp`、`yarn add @floriscornel/teams-mcp`、`bun add @floriscornel/teams-mcp`

## README

# MCP团队

[![npm version](https://img.shields.io/npm/v/@floriscornel/teams-mcp.svg)](https://www.npmjs.com/package/@floriscornel/teams-mcp) [![npm downloads](https://img.shields.io/npm/dm/@floriscornel/teams-mcp.svg)](https://www.npmjs.com/package/@floriscornel/teams-mcp) [![codecov](https://codecov.io/gh/floriscornel/teams-mcp/graph/badge.svg)](https://app.codecov.io/gh/floriscornel/teams-mcp) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![GitHub stars](https://img.shields.io/github/stars/floriscornel/teams-mcp.svg)](https://github.com/floriscornel/teams-mcp/stargazers)

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

[![Teams MCP server](https://glama.ai/mcp/servers/@floriscornel/teams-mcp/badge)](https://glama.ai/mcp/servers/@floriscornel/teams-mcp)

## \* 安装

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

```json
{
  "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` 未指定,信件将作为纯文本发送.

### 示例使用

```json
{
  "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"
}
```

```json
{
  "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`。 。 。 .

### 示例使用

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

要获得原始 HTML :

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

## \* 安装

```bash
# 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`

### 认证模式

**完全访问 :**

```bash
npx @floriscornel/teams-mcp@latest authenticate
```

**只读访问 :**

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

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

```json
{
  "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`

## 使用量

### 启动服务器

```bash
# 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 命令

```bash
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.  用你贴在房客身上的应用程序认证:

```bash
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`

**缩小范围认证 :**

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

**MCP 服务器配置( 只读) :**

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

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

```bash
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` - 查找最近提及当前用户的信件

## 实例

### 认证

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

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

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

检查您的认证状态 :

```bash
npx @floriscornel/teams-mcp@latest check
```

需要时登录 :

```bash
npx @floriscornel/teams-mcp@latest logout
```

### 聊天插座示例

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

### 有提及和图像的频道消息

```json
{
  "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"
}
```

### 文件上传示例

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

### 与光标/光标结合

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

```json
{
  "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 是什么？

微软图形团队集成的 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 和提交记录判断。

