内容
# teams-mcp
macOS·Windows에서 **微软 Teams(新 Teams 2)** 的本地缓存对话/消息的 **只读** MCP 服务器 (Rust).
微软 Graph API·机器人·令牌·网络都不会被使用。 Teams 应用直接读取自己 IndexedDB(本地 LevelDB)中已经缓存的数据,因此不需要管理员审批或应用注册。
## 工作原理
- 新 Teams 2(进程名 `MSTeams`,Edge WebView2)会将消息缓存到本地 IndexedDB 中。
- 直接解析该 LevelDB(`.ldb`/`.log`):**直接扫描 SSTable**(Chromium `idb_cmp1` 比较器绕过)+ snappy 解压 + **V8 ValueSerializer** 解码。
- 对话列表 = `db31/store1`(OneGQL_Conversation),消息 = `db44/store1`(replychain `messageMap`)。
- **只读**:不提供发送、修改消息等写入功能,也不会操作 Teams 应用。
详细存储结构和决策过程见 [`docs/`](docs/)(特别是 `docs/teams-storage-structure.md`,`docs/implementation-plan.md`)。
## 范围
- ✅ **读取本地缓存中已有的消息** (Teams 自动缓存的数月聊天记录,每个聊天数百~1600条)。
- ❌ 不支持从缓存中收集过去的新消息的功能(`docs/scroll-collection/`)。
## 结构(Cargo 工作空间)
| 仓库 | 角色 |
|---|---|
| `teams-core` | LevelDB 读取器 + V8 解码器 + Teams 模式 + 查询 API(与传输/MCP 无关) |
| `teams-mcp-server` | rmcp `TeamsServer`(工具定义)。与传输无关 |
| `teams-mcp-stdio` | stdio 传输二进制文件 |
| `teams-mcp-http` | Streamable HTTP 传输二进制文件(localhost 绑定) |
## 构建
```bash
cargo build --release -p teams-mcp-stdio # → target/release/teams-mcp-stdio
cargo build --release -p teams-mcp-http # → target/release/teams-mcp-http
```
## 工具
| 工具 | 描述 |
|---|---|
| `list_chats` | 缓存的对话列表(对话名称·conversationId·消息数·最后一条消息),按最近顺序 |
| `read_messages` | 特定对话的消息(`chat`=conversationId 精确匹配或对话名称部分匹配,`limit`,`before_ms`) |
| `search_messages` | 缓存全局关键词搜索(`query`,`limit`) |
## 运行 · 注册
### stdio (Claude Code 等)
```bash
claude mcp add teams-mcp -s user -- /Users/ljh/workspace/etc/teams-mcp/target/release/teams-mcp-stdio
```
设置 JSON 直接:
```json
{
"mcpServers": {
"teams-mcp": {
"command": "/Users/ljh/workspace/etc/teams-mcp/target/release/teams-mcp-stdio"
}
}
}
```
### HTTP
```bash
# 默认 127.0.0.1:8787/mcp,无认证(仅限本地)
target/release/teams-mcp-http
# 更改地址 + Bearer 令牌认证
TEAMS_MCP_HTTP_ADDR=127.0.0.1:9000 TEAMS_MCP_TOKEN=secret target/release/teams-mcp-http
```
> ⚠️ HTTP 会将敏感的 Teams 消息暴露在网络中。**默认本地绑定**,如果需要外部访问,请务必设置 `TEAMS_MCP_TOKEN`。
## 环境变量
- `TEAMS_MCP_DB` — IndexedDB leveldb 路径覆盖。未设置时,使用 OS 特定的 Teams v2 路径:
- macOS: `$HOME/Library/Containers/com.microsoft.teams2/Data/Library/Application Support/Microsoft/MSTeams/EBWebView/WV2Profile_tfw/IndexedDB/https_teams.microsoft.com_0.indexeddb.leveldb`
- Windows: `%LOCALAPPDATA%\Packages\MSTeams_8wekyb3d8bbwe\LocalCache\Microsoft\MSTeams\EBWebView\WV2Profile_tfw\IndexedDB\https_teams.microsoft.com_0.indexeddb.leveldb`
- Linux 等其他:没有新 Teams 2 原生客户端,因此只能通过 `TEAMS_MCP_DB` 指定。
- `TEAMS_MCP_HTTP_ADDR` — HTTP 绑定地址(默认 `127.0.0.1:8787`)。
- `TEAMS_MCP_TOKEN` — 设置时,HTTP `Authorization: Bearer <token>` 必需。