Skip to main content
Glama

meeting-summary-mcp · Universal Meeting Summary MCP

A universal MCP Server: hand it any meeting (Feishu Minutes/Meeting Notes link, date range, or transcripts exported from Tencent Meeting, etc.), and it will automatically organize it into a standard meeting summary — Meeting Info / Meeting Summary / Meeting Content / To-Dos · Distributed by Department.

Use case: after a meeting → let AI read the meeting content → automatically produce a structured summary, and assign each to-do to the corresponding department ("Product Dept. / Operations Dept. / Brand Dept. …"), saving the manual post-meeting cleanup and item-by-item distribution. Supports Feishu native data + any meeting transcript, not tied to a single meeting platform.


✨ Features (MCP Tools)

Tool

Description

search_meetings

Search Feishu meetings/minutes by date range, returns a list

resolve_meeting_link

Extract token from a Feishu link (minutes/notes/meeting link)

fetch_meeting

Read meeting minutes content (summary/to-dos/chapters/keywords)

fetch_transcript

Read the full meeting transcript (speaker + speech)

fetch_note

Read the Feishu smart minutes document (AI summary + to-dos)

organize_todos_by_department

Core: read a Feishu meeting → map by role config → generate department-based to-do list

import_meeting_text

Read any meeting transcript file/text (txt exported from Tencent Meeting, etc.)

organize_todos_from_text

Core: from plain transcript (any meeting platform) → generate department-based to-dos, no Feishu dependency


Related MCP server: Feishu/Lark OpenAPI MCP

📦 Installation

1. Install Python dependencies

pip install mcp

2. Install and log in to lark-cli (Feishu command-line tool)

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

When logging in, scan the QR code with your own Feishu account to authorize, and check the following permission scopes (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

It's fine if you don't select everything at once — you can grant additional permissions later when prompted when using a specific feature.


🔌 Connect to your AI client

Claude Code (VS Code extension / CLI)

Add to mcpServers in settings.json (user or project level):

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

Claude Desktop / other MCP-compatible clients

Point to the same in the client's MCP config: command: python, args: [absolute path to server.py].


🚀 Usage Examples

Scenario 1: Search today's / a specific day's meetings

Have AI call search_meetings("2026-08-21", "2026-08-21") to get the meeting list for that day.

  1. Give the meeting minutes link (.../minutes/obcnxxx) to AI

  2. Tell AI the attendees' roles, for example:

    吴楠是北京产品经理,熊燕刚是运营总监,季子禾是直播间运营,
    刘晓曼是品牌运营,紫芙BB是品牌对接,王晨旭是直播间运营负责人
  3. AI calls organize_todos_by_department, passing minute_token or link and roles_json, and gets:

# 会议待办 · 按部门分发

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

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

Scenario 3: Read the transcript for deep analysis

Call fetch_transcript(minute_token) to get the full text, then have AI independently analyze based on the raw speech (more accurate than directly copying the AI summary).

Scenario 4: Any meeting such as Tencent Meeting (no Feishu dependency)

Hand the meeting transcript exported from Tencent Meeting (txt) directly to AI to read with import_meeting_text, then call organize_todos_from_text combined with the role config to organize to-dos by department:

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

organize_todos_from_text(text, roles_json, title) outputs department-grouped to-dos. WeChat meetings / voice-to-text transcriptions / any transcript work the same way.


🧩 roles_json Role Config Format

The roles_json parameter for organize_todos_by_department:

{
  "吴楠": {"role": "北京产品经理", "department": "产品/技术部"},
  "熊燕刚": {"role": "运营总监", "department": "运营总监"},
  "附子LC-直播运营": {"role": "直播间运营", "department": "直播间运营部"},
  "刘晓曼": {"role": "品牌运营", "department": "品牌运营/品牌对接"}
}
  • Key: attendee name (display name in the meeting) or open_id (starting with ou_)

  • role: job title; department: department (to-dos are grouped by this)

  • To-dos that don't match any department are automatically placed under "To be confirmed / Needs manual assignment"

See examples/roles_example.json for an example


📄 Output Format (Standard Four-Section Template)

The standard template output by organize_todos_by_department / organize_todos_from_text:

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

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

Template description and a real example see examples/meeting_template.md


📁 Project Structure

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        # 本机冒烟测试

🧪 Self-Test

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

Requires lark-cli to be logged in locally with the corresponding scopes authorized.


🔄 Sharing with Others

Simply package the entire meeting-summary-mcp directory (zip) and send it to the other person. They can follow the three steps in this README — "Install → Authorize → Connect" — to use it with their own AI client + their own Feishu account.

Note: This MCP accesses Feishu via lark-cli. Data is only read within your own account's authorized scope, and meeting content is never leaked across accounts.

Related MCP Connectors

Related MCP Servers