返回市场
团队-MCP

团队-MCP

作者:floriscornel25 星标更新:2025-11-20

项目介绍

Teams MCP

npm 版本 [npm 下载量](https://www.npmjs.com/package/@floriscornel/ teams-mcp) codecov License: MIT GitHub stars

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

📦 安装

要在Cursor/Claude/VS Code中使用此MCP服务器,请添加以下配置:

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

🚀 功能

🔐 认证

  • 使用Microsoft Graph的OAuth 2.0认证流程
  • 安全的令牌管理和刷新
  • 认证状态检查

👥 用户管理

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

🏢 Microsoft Teams 集成

  • 团队管理

    • 列出用户加入的团队
    • 访问团队详情和元数据
  • 频道操作

    • 列出团队内的频道
    • 获取频道消息
    • 向团队频道发送消息
    • 支持消息重要性级别(正常、高、紧急)
  • 团队成员

    • 列出团队成员及其角色
    • 访问成员信息

💬 聊天与消息

  • 一对一和群聊
    • 列出用户的聊天
    • 创建新的1:1或群聊对话
    • 获取聊天消息历史记录,并支持过滤和分页
    • 向现有聊天发送消息

🔍 高级搜索与发现

  • 消息搜索
    • 使用Microsoft Search API跨所有Teams频道和聊天进行搜索
    • 支持KQL(关键词查询语言)语法
    • 按发件人、提及、附件、重要性和日期范围过滤
    • 获取带有高级过滤选项的最近消息
    • 查找提到特定用户的邮件

富文本消息格式支持

以下工具现在支持在Teams频道和聊天中的富文本消息格式:

  • send_channel_message
  • send_chat_message
  • reply_to_channel_message

格式选项

您可以指定format参数来控制消息格式:

  • text(默认):纯文本
  • markdown:Markdown格式化(粗体、斜体、列表、链接、代码等)- 转换为经过清理的HTML

format设置为markdown时,消息内容会通过安全的Markdown解析器转换为HTML并进行清理以移除潜在危险的内容,然后再发送到Teams。

如果未指定format,消息将以纯文本形式发送。

示例用法

{
  "teamId": "...",
  "channelId": "...",
  "message": "**粗体文本** 和 _斜体文本_\n\n- 列表项1\n- 列表项2\n\n[链接](https://example.com)",
  "format": "markdown"
}
{
  "chatId": "...",
  "message": "简单的纯文本消息",
  "format": "text"
}

安全特性

  • HTML清理:所有Markdown内容都会转换为HTML并进行清理,以移除潜在危险元素(脚本、事件处理器等)
  • 允许的标签:仅允许安全的HTML标签(p, strong, em, a, ul, ol, li, h1-h6, code, pre等)
  • 安全属性:仅允许安全的属性(href, target, src, alt, title, width, height)
  • 防止XSS攻击:内容会自动清理以防止跨站脚本攻击

支持的Markdown特性

  • 文本格式:粗体(**文本**)、斜体(_文本_)、删除线(~~文本~~
  • 链接[文本](网址)
  • 列表:无序列表(- 项目)和有序列表(1. 项目
  • 代码:内联`代码`和代码块 代码
  • 标题# H1###### H6
  • 换行:自动将换行符转换为<br>标签
  • 引用> 引用文本
  • 表格:GitHub风格的Markdown表格

📦 安装

# 安装依赖
npm install

# 构建项目
npm run build

# 设置认证
npm run auth

🔧 配置

先决条件

  • Node.js 18+
  • 具有适当权限的Microsoft 365账户
  • 具有Microsoft Graph权限的Azure应用注册

必需的Microsoft Graph权限

  • User.Read - 读取用户资料
  • User.ReadBasic.All - 读取基本用户信息
  • Team.ReadBasic.All - 读取团队信息
  • Channel.ReadBasic.All - 读取频道信息
  • ChannelMessage.Read.All - 读取频道消息
  • ChannelMessage.Send - 发送频道消息
  • Chat.Read - 读取聊天消息
  • Chat.ReadWrite - 创建和管理聊天
  • Mail.Read - 使用Microsoft Search API所需
  • Calendars.Read - 使用Microsoft Search API所需
  • Files.Read.All - 使用Microsoft Search API所需
  • Sites.Read.All - 使用Microsoft Search API所需

🛠️ 使用

启动服务器

# 开发模式,带热重载
npm run dev

# 生产模式
npm run build && node dist/index.js

可用的MCP工具

认证

  • authenticate - 启动OAuth认证流程
  • logout - 清除认证令牌
  • get_current_user - 获取已认证的用户信息

用户操作

  • search_users - 按姓名或电子邮件搜索用户
  • get_user - 通过ID或电子邮件获取详细用户信息

团队操作

  • list_teams - 列出用户加入的团队
  • list_channels - 列出特定团队中的频道
  • get_channel_messages - 从团队频道中检索消息,支持分页和过滤
  • send_channel_message - 向团队频道发送消息
  • list_team_members - 列出特定团队的成员

聊天操作

  • list_chats - 列出用户的聊天(一对一和群聊)
  • get_chat_messages - 从特定聊天中检索消息,支持分页和过滤
  • send_chat_message - 向聊天发送消息
  • create_chat - 创建新的1:1或群聊

搜索操作

  • search_messages - 使用KQL语法跨所有Teams消息进行搜索
  • get_recent_messages - 获取带有高级过滤选项的最近消息
  • get_my_mentions - 查找提到当前用户的邮件

📋 示例

认证

首先,使用Microsoft Graph进行认证:

npx @floriscornel/teams-mcp@latest authenticate

检查您的认证状态:

npx @floriscornel/teams-mcp@latest check

如需注销:

npx @floriscornel/teams-mcp@latest logout

与Cursor/Claude集成

此MCP服务器旨在通过模型上下文协议与AI助手(如Claude/Cursor/VS Code)配合使用。

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

🔒 安全

  • 所有认证都通过Microsoft的OAuth 2.0流程处理
  • 令牌被安全存储并自动刷新
  • 不记录或暴露敏感数据
  • 遵循Microsoft Graph API的安全最佳实践

📝 许可证

MIT许可证 - 详情见LICENSE文件

🤝 贡献

  1. 分叉仓库
  2. 创建功能分支
  3. 进行更改
  4. 运行代码整理和格式化
  5. 提交拉取请求

📞 支持

对于问题和疑问:

  • 检查现有的GitHub问题
  • 查阅Microsoft Graph API文档
  • 确保正确配置了认证和权限