Skip to main content
Glama
README.md
# meeting-summary-mcp · 通用会议总结 MCP

一个通用的 **MCP Server**:把**任意一场会议**交给它(飞书妙记/纪要链接、日期范围,或腾讯会议等导出的文字稿),
它就能自动整理成一份标准会议纪要 —— **会议信息 / 会议摘要 / 会议内容 / 待办事项·按部门分发**。

> 适用场景:开完会 → 让 AI 读取会议内容 → 自动产出结构化纪要,并按「产品部 / 运营部 / 品牌部 …」
> 把每条待办归到对应部门,省去会后手工整理、逐条分发的功夫。
> 支持飞书原生数据 + 任意会议文字稿,不绑定单一会议平台。

---

## ✨ 功能(MCP Tools)

| 工具 | 说明 |
|---|---|
| `search_meetings` | 按日期范围搜索飞书会议/妙记,返回列表 |
| `resolve_meeting_link` | 从飞书链接提取 token(妙记/纪要/会议链接) |
| `fetch_meeting` | 读取会议妙记内容(总结/待办/章节/关键词) |
| `fetch_transcript` | 读取会议逐字稿全文(说话人 + 发言) |
| `fetch_note` | 读取飞书智能纪要文档(AI 总结 + 待办) |
| `organize_todos_by_department` | **核心**:读取飞书会议 → 按岗位配置 → 生成按部门待办清单 |
| `import_meeting_text` | 读取任意会议文字稿文件/文本(腾讯会议等导出的 txt) |
| `organize_todos_from_text` | **核心**:从纯文字稿(任意会议平台)→ 按部门生成待办,不依赖飞书 |

---

## 📦 安装

### 1. 安装 Python 依赖

```bash
pip install mcp
```

### 2. 安装并登录 lark-cli(飞书命令行工具)

```bash
npm install -g lark-cli
lark-cli auth login
```

登录时**用你自己的飞书账号扫码授权**,需要勾选以下权限范围(Scope):

```
vc:meeting.search:read
vc:meeting.meetingevent:read
vc:record:readonly
minutes:minutes.search:read
minutes:minutes.basic:read
minutes:minutes.artifacts:read
minutes:minutes.transcript:export
vc:note:read
docs:document.content:read
```

> 没有一次性全选也没关系,后续用到某个功能时按提示补授权即可。

---

## 🔌 接入你的 AI 客户端

### Claude Code(VS Code 扩展 / CLI)

在 `settings.json`(用户或项目级)的 `mcpServers` 里加:

```json
{
  "mcpServers": {
    "meeting-summary": {
      "command": "python",
      "args": ["D:/meeting-summary-mcp/server.py"]
    }
  }
}
```

### Claude Desktop / 其他支持 MCP 的客户端

在客户端 MCP 配置里同样指向:`command: python`,`args: [server.py 的绝对路径]`。

---

## 🚀 使用示例

### 场景 1:搜索今天/某天的会议

让 AI 调用 `search_meetings("2026-08-21", "2026-08-21")`,即可拿到当天的会议列表。

### 场景 2:把妙记/纪要链接整理成按部门待办

1. 把会议妙记链接(`.../minutes/obcnxxx`)给 AI
2. 告诉 AI 参会人岗位,例如:
   ```
   吴楠是北京产品经理,熊燕刚是运营总监,季子禾是直播间运营,
   刘晓曼是品牌运营,紫芙BB是品牌对接,王晨旭是直播间运营负责人
   ```
3. AI 调用 `organize_todos_by_department`,传入 `minute_token` 或 `link` 和 `roles_json`,得到:

```markdown
# 会议待办 · 按部门分发

## 产品/技术部
- [ ] 积分问题排查:…(负责人:吴楠·北京产品经理)

## 直播间运营部
- [ ] 直播间GMV录入:…(负责人:王晨旭·直播间运营负责人)
```

### 场景 3:读逐字稿做深度分析

调用 `fetch_transcript(minute_token)` 拿全文,再让 AI 基于原始发言独立分析(比直接抄 AI 总结更准)。

### 场景 4:腾讯会议等任意会议(不依赖飞书)

腾讯会议导出的会议文字稿(txt),直接交给 AI 用 `import_meeting_text` 读取,
再调 `organize_todos_from_text` 结合岗位配置按部门整理待办:

```text
张三 00:00:10
这个需求需要尽快跟进,明天给产品确认。
李四 00:00:20
培训文档我来输出,会后整理下发给运营。
```

→ `organize_todos_from_text(text, roles_json, title)` 输出按部门分组待办。
微信会议 / 录音转写 / 任何文字稿同理。

---

## 🧩 roles_json 岗位配置格式

`organize_todos_by_department` 的 `roles_json` 参数:

```json
{
  "吴楠": {"role": "北京产品经理", "department": "产品/技术部"},
  "熊燕刚": {"role": "运营总监", "department": "运营总监"},
  "附子LC-直播运营": {"role": "直播间运营", "department": "直播间运营部"},
  "刘晓曼": {"role": "品牌运营", "department": "品牌运营/品牌对接"}
}
```

- 键:参会人姓名(会议里的显示名)或 open_id(`ou_` 开头)
- `role`:岗位;`department`:所在部门(待办会按此分组)
- 没有匹配到部门的待办自动归入「待确认 / 需人工认领」

> 示例见 [`examples/roles_example.json`](examples/roles_example.json)

---

## 📄 输出格式(标准四板块模板)

`organize_todos_by_department` / `organize_todos_from_text` 输出的标准模板:

```
# 会议纪要 · {会议主题}

## 一、会议信息      (主题 / 时间 / 参会人)
## 二、会议摘要      (一段话概括)
## 三、会议内容      (按议题分节)
## 四、待办事项 · 按部门分发
### 🛠️ 部门A
- [ ] 任务(负责人:xxx·岗位)
### 待确认 / 需人工认领
```

> 模板说明与真实示例见 [`examples/meeting_template.md`](examples/meeting_template.md)

---

## 📁 项目结构

```
meeting-summary-mcp/
├── server.py            # MCP 入口(FastMCP + 8 个 tools)
├── feishu_client.py     # lark-cli 封装(搜索/妙记/纪要/逐字稿)
├── organizer.py         # 按部门待办整理逻辑
├── requirements.txt
├── README.md
├── examples/
│   ├── roles_example.json   # 岗位配置示例
│   └── output_example.md    # 生成的按部门待办示例
└── test/
    └── smoke_test.py        # 本机冒烟测试
```

## 🧪 自测

```bash
cd meeting-summary-mcp
python test/smoke_test.py
```

需要本机 lark-cli 已登录并授权对应 scope。

---

## 🔄 分享给别人

直接把整个 `meeting-summary-mcp` 目录打包(zip)发给对方,对方按本 README 的
「安装 → 授权 → 接入」三步即可在**自己的 AI 客户端 + 自己的飞书账号**下使用。

> 说明:本 MCP 通过 lark-cli 访问飞书,数据只在自己账号授权范围内读取,
> 不会跨账号泄露会议内容。