article
README
🚀 Teams MCP
Teams MCP 是一个模型上下文协议(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 集成
团队管理
- 列出用户加入的团队。
- 访问团队详细信息和元数据。
频道操作
- 列出团队内的频道。
- 检索频道消息。
- 向团队频道发送消息。
- 支持消息重要级别(普通、高、紧急)。
团队成员
- 列出团队成员及其角色。
- 访问成员信息。
💬 聊天与消息
一对一和群组聊天
- 列出用户的聊天记录。
- 创建新的一对一或群组对话。
- 通过过滤和分页检索聊天消息历史记录。
- 向现有聊天发送消息。
🔍 高级搜索与发现
消息搜索
- 使用 Microsoft Search API 在所有 Teams 频道和聊天中进行搜索。
- 支持 KQL(关键字查询语言)语法。
- 可按发送者、提及、附件、重要性和日期范围进行过滤。
- 通过高级过滤选项获取最近的消息。
- 查找提及特定用户的消息。
富消息格式支持
以下工具现在支持在 Teams 频道和聊天中进行富消息格式设置:
send_channel_messagesend_chat_messagereply_to_channel_message
格式选项
你可以指定 format 参数来控制消息格式:
text(默认):纯文本。markdown:Markdown 格式(粗体、斜体、列表、链接、代码等) - 转换为经过清理的 HTML。
当 format 设置为 markdown 时,消息内容将使用安全的 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"
}
{
"chatId": "...",
"message": "Simple plain text 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)。
- 跨站脚本攻击预防:自动清理内容以防止跨站脚本攻击。
支持的 Markdown 特性
- 文本格式:粗体 (
**text**)、斜体 (_text_)、删除线 (~~text~~)。 - 链接:
[text](url)。 - 列表:无序列表 (
- item) 和有序列表 (1. item)。 - 代码:内联
`code`和代码块code。 - 标题:
# H1到###### H6。 - 换行:自动将换行符转换为
<br>标签。 - 块引用:
> quoted text。 - 表格: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- 创建新的一对一或群组聊天
搜索操作
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 服务器旨在通过模型上下文协议与 Claude/Cursor/VS Code 等 AI 助手配合使用。
{
"mcpServers": {
"teams-mcp": {
"command": "npx",
"args": ["-y", "@floriscornel/teams-mcp@latest"]
}
}
}
🔒 安全说明
- 所有身份验证均通过 Microsoft 的 OAuth 2.0 流程处理。
- 令牌安全存储并自动刷新。
- 不会记录或暴露敏感数据。
- 遵循 Microsoft Graph API 安全最佳实践。
📄 许可证
本项目采用 MIT 许可证,详情请参阅 LICENSE 文件。
🤝 贡献指南
- 分叉仓库。
- 创建功能分支。
- 进行更改。
- 运行代码检查和格式化。
- 提交拉取请求。
📞 支持与反馈
若遇到问题或有疑问:
- 查看现有的 GitHub 问题。
- 查阅 Microsoft Graph API 文档。
- 确保正确配置了身份验证和权限。
扫码联系在线客服