团队MCP服务器
  ](https://nodejs.org/)
MCP(模型上下文协议)服务器,使AI助手能够与Microsoft Teams进行交互。搜索邮件、发送回复、管理收藏夹等。
运作原理
此服务器直接调用Microsoft的Teams API(Substrate、chatsvc、CSA),与Teams web应用程序使用的API相同。无需Azure AD应用程序注册或管理员同意。
身份验证流程:
- AI运行
teams_login打开浏览器以便登录 - OAuth令牌被提取并缓存
- 所有操作都直接使用缓存令牌(无需浏览器)
- 自动令牌刷新(约1小时)
安全: 使用与Teams web客户端相同的身份验证-您的访问权限仅限于您的帐户可以执行的操作。
安装
先决条件
- Node.js 18+
- 具有Teams访问权限的Microsoft帐户
- 已安装谷歌Chrome、微软Edge或Chromium浏览器
配置您的MCP客户端
添加到您的MCP客户端配置中(例如,Claude Desktop、Windsurf、Cursor):
{
"mcpServers": {
"teams": {
"command": "npx",
"args": ["-y", "msteams-mcp@latest"]
}
}
}就这样 npx 将自动下载并运行最新版本。
来源(备选)
如果您更喜欢从本地克隆运行:
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)进行身份验证。
可用工具
搜索与发现
| 工具 | 说明 |
|---|---|
teams_search | 使用操作员搜索团队消息(from:, sent:, in:, hasattachment:等等) |
teams_search_email | 在邮箱中搜索电子邮件(与Teams具有相同的身份验证,无需额外登录) |
teams_get_message | 按ID获取一条内容完整的消息(任何年龄段) |
teams_get_thread | 从对话/帖子中获取消息 |
teams_find_channel | 按名称查找频道(您的团队+整个组织的发现) |
teams_get_activity | 获取活动提要(提及、反应、回复、通知) |
消息传递
| 工具 | 说明 |
|---|---|
teams_send_message | 发送消息(默认:自聊/笔记)。使用 replyToMessageId 用于线程回复 |
teams_edit_message | 编辑您自己的消息之一 |
teams_delete_message | 删除您自己的一条消息(软删除) |
人员和联系人
| 工具 | 说明 |
|---|---|
teams_get_me | 获取当前用户资料(电子邮件、姓名、ID) |
teams_search_people | 按姓名或电子邮件搜索联系人 |
teams_get_frequent_contacts | 获取频繁联系的人(对名称解析有用) |
teams_get_chat | 获取与某人1:1聊天的对话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 | 获取会议记录(需要 threadId 从 teams_get_meetings) |
teams_get_meetings 返回:主题、时间、组织者、加入URL, threadId 用于会议聊天。使用 threadId 随着 teams_get_thread 阅读会议聊天,或与 teams_get_transcript 获取包含演讲者和时间戳的完整成绩单。
文件
| 工具 | 说明 |
|---|---|
teams_get_shared_files | 获取对话中共享的文件和链接(支持分页) |
返回文件(名称、扩展名、URL、大小)和链接(URL、标题),以及共享每个项目的人。适用于频道、群聊、1:1聊天和会议聊天。
会话
| 工具 | 说明 |
|---|---|
teams_login | 触发手动登录(打开浏览器) |
teams_status | 检查身份验证和会话状态 |
搜索运算符
两者 teams_search (团队消息)和 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 首先获取您的电子邮件/displayName。 sent:today 工作,但 sent:lastweek 和 sent:thisweek 不要-使用明确的日期或省略(结果按最近度排序)。
MCP资源
服务器还公开被动资源用于上下文发现:
| 资源URI | 描述 |
|---|---|
teams://me/profile | 当前用户的个人资料 |
teams://me/favorites | 固定对话 |
teams://status | 身份验证状态 |
CLI工具(开发)
对于本地开发,CLI工具可用于测试和调试:
# Check authentication status
npm run cli -- status
# Search messages
npm run cli -- search "meeting notes"
npm run cli -- search "project" --from 0 --size 50
# Search emails
npm run cli -- teams_search_email --query "from:sarah@company.com"
# Send messages (default: your own notes/self-chat)
npm run cli -- send "Hello from Teams MCP!"
npm run cli -- send "Message" --to "conversation-id"
# Force login
npm run cli -- login --force
# Output as JSON
npm run cli -- search "query" --jsonMCP测试线束
通过实际的MCP协议测试服务器:
# List available tools
npm run cli
# Call any tool
npm run cli -- search "your query"
npm run cli -- status
npm run cli -- people "john smith"
npm run cli -- favorites
npm run cli -- activity # Get activity feed
npm run cli -- unread # Check unread counts
npm run cli -- teams_search_emoji --query "heart" # Search emojis局限性
- 需要登录 -快跑
teams_login进行身份验证(打开浏览器) - 令牌到期 -代币在约1小时后过期;尝试或运行无头刷新
teams_login需要时再次 - 未记录的API -使用微软的内部API,可能会随时更改,恕不另行通知
- 搜索限制 -仅限全文搜索;与搜索词不匹配的帖子回复将不会出现(使用
teams_get_thread完整上下文) - 仅限自己的消息 -编辑/删除仅适用于您自己的消息
会话文件
会话文件存储在用户配置目录中(加密):
- macOS/Linux:
~/.teams-mcp-server/ - 视窗:
%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 run research # Explore Teams APIs (logs network calls)
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"]
}
}
}看 代理商.md 了解详细的架构和贡献指南。
______________________________________________________________________
团队聊天导出书签
此仓库还包括一个独立的书签小程序,用于将Teams聊天消息导出到Markdown。看 团队书签/README.md.
