google-meet-mcp
Uses Google Gemini to provide interactive Q&A over meeting transcripts and slides, and generate executive summaries, action matrices, and decisions.
Captures and processes Google Meet sessions, including live captions, speaker diarization, slide screenshots, audio chunks, and meeting minutes exports.
Sends meeting mention notifications and direct dashboard links via a Telegram bot.
Sends meeting mention notifications and dashboard links via Zalo OA/Webhook.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@google-meet-mcp Summarize the key decisions from my latest Google Meet recording."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
google-meet-mcp β Multimodal Meeting Copilot & FastMCP Server
Production-grade, zero-loss multimodal Google Meet copilot, 3-hour+ resilient session buffering, WebRTC audio & slide vision ingestion, interactive web dashboard, multi-channel alerts (Telegram & Zalo), and deep executive intelligence synthesis connecting Google Antigravity, Claude, and AI Agents with Google Meet.
π¬π§ English
Table of Contents
Related MCP server: mcp-meeting-analyzer
1. Overview & Key Capabilities
Strategic executive, technical architecture, and board meetings routinely run for 2 to 3+ hours (exceeding 25,000β45,000 spoken words). Traditional note-taking tools and single-modal AI bots suffer from critical vulnerabilities:
Fragility & Catastrophic Data Loss: Network drops, browser tab crashes, or token expirations wipe out hours of unsaved context.
Context Window Overload & Hallucination: Submitting raw 45,000-word transcripts directly into an LLM causes lost commitments, overlooked decision points, and superficial summaries.
Missing Visual & Audio Evidence: Presenters share slides with dense architecture charts, code snippets, financial tables, and QR codes that voice-only transcripts fail to capture.
Scattered Multi-Account Environments: Workspace domains support Google Meet REST API & Drive auto-transcripts, whereas personal Google accounts only support live closed captions.
google-meet-mcp is an enterprise-ready solution engineered to solve these challenges completely:
π‘οΈ Zero-Loss Append-Only Buffer: Writes every spoken utterance (
.utterances.jsonl), slide screenshot (.jpg), and WebRTC Opus audio chunk (.webm) directly to durable disk storage (~/.google_meet_mcp).ποΈ Multimodal Capture & Vision Engine: Synchronizes live captions with speaker diarization, high-resolution slide captures on visual transitions, and embedded QR code/hyperlink extraction.
π Interactive Web Dashboard: Embedded SPA (served on
http://127.0.0.1:8765/dashboard) providing a session history browser, slide carousel gallery, audio playback synchronized with captions, and multi-format minutes exports (Markdown, HTML, JSON).π¬ Interactive Meeting Chat Assistant: Natural-language conversational Q&A over the entire meeting transcript and slides powered by Gemini Multimodal API with offline heuristic fallback and interactive audio/slide citation pills.
π Multi-Channel Alert Engine: Instant mention notifications dispatched via native Telegram Bot and Zalo OA/Webhook with direct links to the meeting dashboard.
β‘ 1-Click Packaging & Turnkey Docker: Single-command startup (
google-meet-mcp start/companion/dashboard) and unprivileged hardened Docker container with automated healthcheck.
2. Competitive Comparison Matrix
Feature / Capability | Standard MCP Bots | Commercial Notetakers (Otter / Fireflies) |
|
3-Hour+ Zero-Loss Disk Buffer | β Memory-only | β οΈ Dependent on cloud stability | β
Append-only |
Multimodal Slide Vision & QR Capture | β Text only | β Voice / Text only | β High-res slide capture + QR extraction |
Synchronized Audio & Caption Player | β No audio playback | β οΈ Proprietary cloud player | β Local WebM Opus player with timestamp seek |
Offline / No-API-Key Synthesis | β Hard crash without API | β Cloud only | β Heuristic fallback engine included |
Multi-Channel Mentions (Telegram & Zalo) | β None | β οΈ Slack / Email only | β Native Telegram Bot + Zalo OA / Webhook |
Support Personal & Workspace Accounts | β οΈ Workspace API only | β οΈ Requires bot joining call | β Dual support (Live captions + REST API) |
FastMCP Protocol for AI Agents | β οΈ Basic tools | β Closed proprietary SaaS | β Full FastMCP 2024-11-05 for Antigravity & Claude |
Data Privacy & On-Premises Control | β οΈ Depends on host | β Cloud vendor storage | β
100% Local storage under |
3. System Architecture & Data Flow
ASCII Architecture Overview
+---------------------------------------------------------------------------------------+
| GOOGLE MEET (meet.google.com) |
+---------------------------------------------------------------------------------------+
β (Live Captions Scraper) β (Slide Vision Canvas) β (WebRTC Opus Audio)
βΌ βΌ βΌ
+---------------------------------------------------------------------------------------+
| CHROME EXTENSION (Manifest V3) |
| - Floating Status Badge & Controls [π’ Recording | π Dashboard | β‘ AI Synthesis] |
| - Background Service Worker (Proxy for Google Meet CSP connect-src) |
+---------------------------------------------------------------------------------------+
β HTTP POST (port 8765)
βΌ
+---------------------------------------------------------------------------------------+
| GOOGLE-MEET-MCP COMPANION HTTP SERVER |
| |
| ββββββββββββββββββββ ββββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββ |
| β POST /chunk β β POST /snapshot β β POST /audio β β GET /health β |
| β (Live Captions) β β (Slide Vision) β β (WebRTC Opus) β β (Docker Probe)β |
| βββββββββββ¬βββββββββ βββββββββββ¬βββββββββ βββββββββββ¬βββββββββ βββββββββββββββββ |
| β β β |
| βΌ βΌ βΌ |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ |
| β SessionManager (Append-Only Durable Storage: ~/.google_meet_mcp) β |
| β β’ .utterances.jsonl β’ slides/*.jpg β’ audio/*.webm β’ .meta.json β |
| βββββββββββββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββ |
| β |
| ββββββββββββββββββββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββ |
| βΌ βΌ |
| ββββββββββββββββββββββββββββββββββββββββ ββββββββββββββββββββββββββββββββββ |
| β Interactive Web Dashboard (port 8765)β β Autonomous Synthesis & AI Chat β |
| β - Sessions Browser & Statistics β β - Executive Summary β |
| β - Slide Carousel & QR/Link Gallery β β - Action Matrix & Decisions β |
| β - Synchronized WebM Audio Player β β - Gemini Multimodal Chat API β |
| β - Multi-Channel Alerts Modal β β - Multi-format Exporters: β |
| β (Telegram Bot + Zalo Webhook/OA) β β β’ Markdown β’ HTML β’ JSON β |
| ββββββββββββββββββββββββββββββββββββββββ ββββββββββββββββββββββββββββββββββ |
+---------------------------------------------------------------------------------------+
β FastMCP stdio (JSON-RPC 2.0)
βΌ
+---------------------------------------------------------------------------------------+
| AI AGENT ECOSYSTEM (Google Antigravity / Claude) |
| Tools: meet_start_session, meet_synthesize_meeting, ... |
+---------------------------------------------------------------------------------------+Mermaid Architecture Diagram
flowchart TD
subgraph Client["Browser: meet.google.com"]
GM[Google Meet Meeting Room]
EXT["Chrome Extension MV3<br/>(Floating Badge & Service Worker)"]
SCRIPT["Tampermonkey Userscript<br/>(Alternative Ingestion)"]
GM -->|Captions, Slides & Audio| EXT
GM -.->|Captions only| SCRIPT
end
subgraph Server["google-meet-mcp Companion Server (Port 8765)"]
HTTP["HTTP Endpoints<br/>/chunk, /snapshot, /audio, /health"]
SM["SessionManager<br/>(Append-Only Buffer)"]
SYN["MeetingSynthesizer<br/>(Executive Summary, Action Matrix)"]
CHAT["AI Chat Engine<br/>(Gemini Multimodal API)"]
ALERT["Alert Dispatcher<br/>(Telegram Bot + Zalo OA)"]
DASH["Web Dashboard SPA<br/>(/dashboard)"]
end
subgraph Storage["Durable Storage (~/.google_meet_mcp)"]
DISK["Session Store<br/>β’ .utterances.jsonl<br/>β’ slides/*.jpg<br/>β’ audio/*.webm<br/>β’ exports/"]
end
subgraph Consumers["Downstream Consumers"]
USER["User via Web Browser"]
TELEGRAM["Telegram Messenger"]
ZALO["Zalo Notification"]
MCP["Google Antigravity / Claude (FastMCP stdio)"]
end
EXT -->|HTTP POST| HTTP
SCRIPT -.->|HTTP POST /chunk| HTTP
HTTP --> SM
SM <--> DISK
SM --> SYN
SM --> CHAT
SM --> ALERT
HTTP --> DASH
DASH <--> USER
ALERT --> TELEGRAM
ALERT --> ZALO
Server -->|FastMCP stdio| MCP4. Repository Directory Structure
google-meet-mcp/
βββ .dockerignore
βββ .gitignore
βββ Dockerfile # Hardened, non-root (UID 10001) production image
βββ docker-compose.yml # Turnkey 1-command container orchestration
βββ pyproject.toml # Build & dependency declarations (FastMCP, Pydantic, etc.)
βββ uv.lock # Deterministic dependency lockfile
βββ LICENSE # MIT License
βββ README.md # Complete bilingual documentation
β
βββ extension/ # Chrome Extension (Manifest V3)
β βββ manifest.json # MV3 extension manifest
β βββ background.js # Service worker proxy (bypasses Google Meet CSP)
β βββ content.js # DOM caption observer, slide capturer, tab audio recorder
β βββ popup.html / popup.js # Extension settings & quick status popup
β βββ icons/ # High-resolution extension icons
β
βββ src/google_meet_mcp/ # Core Python Application
β βββ __init__.py
β βββ __main__.py # Direct execution entrypoint
β βββ cli.py # Rich CLI commands (start, dashboard, companion, etc.)
β βββ config.py # Central environment and path configurations
β βββ server.py # FastMCP standard server (stdio)
β β
β βββ auth/ # Google OAuth2 Authentication Engine
β β βββ google_auth.py # Browser-based OAuth2 workflow with local callback
β β
β βββ capture/ # Ingestion Server & Web Dashboard
β β βββ companion_server.py # aiohttp HTTP server handling /chunk, /audio, /snapshot, /chat
β β βββ meet_captions.user.js # Tampermonkey userscript alternative
β β βββ templates/
β β βββ dashboard.html # Embedded single-page application (Vue/Alpine-like UI)
β β
β βββ engine/ # Intelligence & Synthesis Engine
β β βββ prompts.py # Multimodal & executive synthesis system prompts
β β βββ synthesizer.py # Map-Reduce & sliding window synthesis pipeline
β β
β βββ google_client/ # Google API Clients
β β βββ meet_api.py # Google Meet REST API v2 client
β β βββ drive_api.py # Google Drive API v3 transcript parser
β β
β βββ notifications/ # Real-time Alerting System
β β βββ alert_detector.py # Mention & keyword detector with Vietnamese diacritic normalization
β β βββ telegram.py # Telegram Bot native HTTP dispatcher
β β βββ zalo.py # Zalo Webhook & Zalo OA OpenAPI v3.0 dispatcher
β β
β βββ session/ # Data Models & Storage
β βββ models.py # Pydantic v2 domain schemas (Utterance, Slide, Audio, Synthesis)
β βββ session_manager.py # Durable append-only storage manager
β βββ chat.py # Interactive AI meeting assistant engine
β
βββ tests/ # Automated Test Suite (495 tests)
βββ conftest.py # Fixtures, mocks, and test utilities
βββ e2e/ # End-to-end multi-tier test scenarios
β βββ test_tier1_features.py
β βββ test_tier2_boundaries.py
β βββ test_tier3_interactions.py
β βββ test_tier4_workloads.py
βββ test_*.py # Comprehensive unit & integration tests5. 1-Click Quickstart & Installation
Option A: Local Python Installation (Recommended for Development)
Requires Python 3.10+ (Python 3.11 recommended).
# 1. Clone repository
git clone https://github.com/DuongNAD/google-meet-mcp.git
cd google-meet-mcp
# 2. Setup virtual environment
python3 -m venv .venv
source .venv/bin/activate
# 3. Install dependencies in editable mode
pip install -e ".[dev]"
# 4. Launch 1-Click Web Dashboard & Companion Server
google-meet-mcp dashboardThe Web Dashboard will automatically launch in your default web browser at http://127.0.0.1:8765/dashboard.
Option B: Turnkey Docker & Docker Compose (Recommended for Production)
Run the hardened, unprivileged container with built-in healthcheck:
# 1. (Optional) Set API keys in your shell
export GEMINI_API_KEY="your-gemini-api-key"
export TELEGRAM_BOT_TOKEN="your-bot-token"
export TELEGRAM_CHAT_ID="your-chat-id"
# 2. Launch container in background
docker compose up -d
# 3. Verify health status
docker compose ps
curl -s http://localhost:8765/health
# 4. Open dashboard in browser
open http://localhost:8765/dashboard # macOS
# xdg-open http://localhost:8765/dashboard # Linux6. Client Ingestion Options
You can capture Google Meet sessions using either the Chrome Extension or the Userscript:
Method 1: Chrome Extension (Manifest V3) β Recommended
Full multimodal support: Live Captions, High-Resolution Slides, and WebRTC Tab Audio.
Open Chrome and navigate to
chrome://extensions/.Toggle on Developer mode (top-right corner).
Click Load unpacked and select the
extension/folder in this repository.Join any Google Meet call (
https://meet.google.com/*-*-*).Turn on closed captions in Google Meet (press
c).The Floating Status Badge will appear at the bottom-left of your meeting screen:
π’ Green badge: Connected to companion server (
http://127.0.0.1:8765).π΄ Red badge: Server offline (check
google-meet-mcp companion).Counter: Displays live count of captured utterances, slides, and audio chunks.
Quick Actions: "Dashboard" button, "Synthesize" button, and "Audio" toggle.
Method 2: Tampermonkey Userscript (Lightweight Alternative)
Captures live captions directly without loading an unpacked extension.
Install Tampermonkey in your browser.
Create a new script and paste the content of
src/google_meet_mcp/capture/meet_captions.user.js.Save the script and join your Google Meet meeting.
Enable captions in Google Meet (
c). Utterances stream automatically to port 8765.
7. CLI Command Reference
The google-meet-mcp CLI provides rich terminal commands powered by rich:
Command | Syntax | Description |
|
| 1-Click production service launcher. In |
|
| 1-Click launcher that starts the companion server and automatically opens the Web Dashboard in the browser. |
|
| Starts HTTP live ingestion server and hosts the Web Dashboard on port 8765. |
|
| Executes the FastMCP server over standard I/O (stdio) for Google Antigravity and Claude Desktop. |
|
| Displays Google OAuth credential status and prints a rich summary table of all stored sessions. |
|
| Runs Google OAuth2 browser authentication flow for Google Meet and Drive APIs. |
|
| Synthesizes a meeting session and prints executive summary, action items, and decisions. |
8. Interactive Web Dashboard
The embedded Web Dashboard at http://127.0.0.1:8765/dashboard provides an all-in-one executive workstation:
ποΈ Session Explorer: Browse past and ongoing meetings, view total duration, active participant list, word count, and speech volume.
π΅ Synchronized Audio Player: Play back recorded WebM Opus audio chunks with sub-second timeline seeking linked to utterance timestamps.
πΌοΈ Slide Carousel & Gallery: Browse high-definition presentation slides captured at visual transition points, view extracted QR codes, and click detected URLs.
π Multi-Format Minutes Exporter: 1-click download of executive minutes in:
Markdown (
.md): Ready for Obsidian, Notion, or GitHub.Printable HTML (
.html): Beautiful executive typography formatted for PDF printing.JSON (
.json): Raw structured data for enterprise pipelines.
βοΈ Multi-Channel Alert Modal: Live configuration of Telegram Bot and Zalo notifications with built-in test buttons.
9. Interactive Meeting Chat Assistant & Gemini Intelligence
The dashboard includes a real-time conversational AI panel:
Ask natural-language questions about the meeting:
"What was decided regarding the database migration?"
"Who was assigned the Q3 roadmap deliverables?"
"Explain the system architecture shown on slide 3."
Powered by Gemini Multimodal API: Integrates both transcript text and slide images for context-aware answers.
Interactive Citation Pills:
[MM:SS](e.g.,[04:15]): Instantly seeks the audio player to the exact second.[Slide #N](e.g.,[Slide #2]): Navigates the slide gallery to the referenced visual.
Offline Heuristic Fallback: Operates deterministically without an API key using local text mining and decision extraction algorithms.
10. Multi-Channel Alert Engine (Telegram & Zalo)
Stay informed even when stepping away from long meetings:
βοΈ Telegram Bot Native: Sends real-time notifications with speaker attribution, transcript snippet, and an inline button linking directly to the Web Dashboard.
π¬ Zalo Integration: Supports both Zalo Webhooks (for custom gateways / n8n) and Zalo Official Account (OA) OpenAPI v3.0.
π― Smart Mention Matching:
Diacritic normalization (
strip_accents) handles Vietnamese names accurately (e.g.,DΖ°Ζ‘ng,Duong,duongnad).Urgent keyword detection (
deadline,gαΊ₯p,hα»i,Ζ‘i,nhα»,urgent).Cooldown suppression prevents alert storms when a name is repeated multiple times.
11. Complete RESTful API Specifications
The Companion Server exposes 14+ standardized RESTful endpoints:
Method | Endpoint | Description | Payload / Parameters | Response |
|
| Liveness and Docker health probe | None |
|
|
| Serves Interactive Web Dashboard SPA | None | HTML Web Application |
|
| Redirects to Dashboard | None | HTTP 302 to |
|
| Ingest captions with speaker diarization |
|
|
|
| Ingest slide image with QR/links |
|
|
|
| Ingest WebRTC Opus audio chunk |
|
|
|
| Explicitly start named session |
|
|
|
| End session and trigger synthesis |
|
|
|
| List recorded sessions |
|
|
|
| Detailed session payload | Path |
|
|
| Serve high-res slide JPEG | Path | Binary |
|
| Stream WebM Opus chunk (RFC 7233 Range) | Path | Binary |
|
| Download formatted minutes |
| File attachment download |
|
| Meeting Chat Assistant Q&A |
| SSE stream or JSON answer with citations |
|
| Read current alert configuration | None |
|
|
| Update alert configuration |
|
|
|
| Dispatch test alert (Telegram/Zalo) |
|
|
|
| Trigger AI meeting synthesis |
|
|
12. FastMCP Tools for AI Agents (Antigravity, Claude, Cursor)
Connect google-meet-mcp to autonomous AI coding and workflow agents:
1. Google Antigravity (~/.gemini/config/mcp_config.json)
{
"mcpServers": {
"google-meet": {
"command": "/path/to/google-meet-mcp/.venv/bin/python",
"args": ["-m", "google_meet_mcp.cli", "stdio"],
"env": {
"GOOGLE_MEET_MCP_DATA_DIR": "/Users/duongnad/.google_meet_mcp",
"GEMINI_API_KEY": "your-gemini-api-key"
}
}
}
}2. Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json)
{
"mcpServers": {
"google-meet": {
"command": "/path/to/google-meet-mcp/.venv/bin/python",
"args": ["-m", "google_meet_mcp.cli", "stdio"]
}
}
}3. Cursor IDE (.cursor/mcp.json)
{
"mcpServers": {
"google-meet": {
"command": "google-meet-mcp",
"args": ["stdio"]
}
}
}Available FastMCP Tools:
meet_start_session: Initialize a durable session for multi-hour live recording.meet_ingest_chunk: Append a spoken utterance line directly to the disk buffer.meet_get_live_status: Real-time session inspection (active speakers, word counts, duration).meet_list_sessions: List all historical sessions recorded on disk.meet_fetch_google_transcript: Retrieve Google Meet API v2 transcripts.meet_fetch_drive_transcript: Query and parse auto-saved transcript docs from Google Drive.meet_list_recent_conferences: List recent Google Meet conferences via Google Calendar API.meet_synthesize_meeting: Execute deep AI synthesis (Executive Summary, Action Matrix, Decision Log, Timeline).meet_export_minutes: Export comprehensive minutes to Markdown, HTML, or JSON.meet_check_auth/meet_setup_auth: Inspect and initiate Google OAuth2 workflow.
13. Environment Variables Reference
Variable | Default | Description |
|
| Root directory for sessions, slides, audio, and exports |
|
| Bind host for the companion HTTP server & dashboard |
|
| Port for the companion HTTP server & dashboard |
| (None) | Google Gemini API key for multimodal chat and synthesis |
| (None) | Telegram Bot token created via |
| (None) | Telegram user or group chat ID for alerts |
| (None) | Webhook endpoint for forwarding Zalo alerts |
| (None) | Official Account access token for Zalo OpenAPI v3.0 |
| (None) | Target Zalo user ID to receive direct messages |
|
| Path to Google OAuth2 client credentials JSON |
|
| Path to saved Google OAuth2 user token JSON |
14. Troubleshooting Guide Matrix
Issue / Symptom | Root Cause | Resolution Steps |
Port 8765 Conflict ( | Another companion instance or process occupies port 8765. | Identify PID with |
Extension Connection Failed ( | Companion server is offline or blocked by firewall. | Run |
Google Meet CSP Error ( | Google Meet CSP blocks direct third-party fetch calls. | Use the updated Chrome Extension which routes all requests through the background Service Worker. |
No Audio Captured | Browser tab audio capture permission not granted. | When starting screen/tab sharing in Chrome, ensure the "Share tab audio" checkbox is checked. |
Docker Permission Denied on | Host volume owned by root instead of non-root UID 10001. | Run |
Gemini AI Chat Fails | Missing or invalid Gemini API key. | Set |
Telegram Alert Not Received | Invalid Bot Token or user has not messaged the bot. | Verify token via |
15. Testing & Quality Assurance
The codebase includes an exhaustive 495-test suite spanning 4 rigorous validation tiers:
Tier 1 (Core Features): Unit tests for SessionManager, Synthesizer, Chat Assistant, and Alert Detectors.
Tier 2 (Boundaries & Edge Cases): Multi-hour rollover tests, malformed inputs, missing headers, and partial audio chunks.
Tier 3 (Interactions & Endpoints): REST API contract tests, Range streaming header validation, and WebSocket fallbacks.
Tier 4 (Workloads & Stress): 3-hour meeting simulation with 45,000+ utterances, concurrent writes, and eviction stability.
# Run complete test suite (495 tests)
.venv/bin/pytest tests/ -v
# Run with coverage report
.venv/bin/pytest tests/ --cov=google_meet_mcp --cov-report=term-missing16. Security & Privacy Guarantees
π Local-First Processing: All transcripts, slide captures, and audio chunks reside exclusively on your local machine (
~/.google_meet_mcp). No meeting data is uploaded to third-party servers unless you configure an external LLM API key.π‘οΈ Hardened Docker Container: Runs under an unprivileged user (
appuser, UID 10001) withno-new-privileges:trueand automated container healthcheck.π Safe Credential Management: OAuth tokens and API keys are stored in user-restricted paths and ignored by git (
.gitignore).
π»π³ TiαΊΏng Viα»t
Mα»₯c Lα»₯c
1. Tα»ng quan & VαΊ₯n Δα» giαΊ£i quyαΊΏt
CΓ‘c cuα»c hα»p Δiα»u hΓ nh chiαΊΏn lược, kiαΊΏn trΓΊc kα»Ή thuαΊt hoαΊ·c ΔαΊ‘i hα»i cα» ΔΓ΄ng thΖ°α»ng kΓ©o dΓ i tα»« 2 ΔαΊΏn 3 tiαΊΏng hoαΊ·c lΓ’u hΖ‘n (tΖ°Ζ‘ng ΔΖ°Ζ‘ng 25,000 β 45,000 tα»« thoαΊ‘i). CΓ‘c cΓ΄ng cα»₯ ghi chΓΊ thΓ΄ng thΖ°α»ng vΓ bot phiΓͺn Γ’m truyα»n thα»ng bα»c lα» nhα»―ng hαΊ‘n chαΊΏ chΓ mαΊ‘ng:
Rα»§i ro mαΊ₯t trαΊ―ng dα»― liα»u (Data Loss): MαΊ₯t mαΊ‘ng, sαΊp nguα»n hoαΊ·c vΓ΄ tΓ¬nh ΔΓ³ng tab trΓ¬nh duyα»t khiαΊΏn toΓ n bα» biΓͺn bαΊ£n ghi trΖ°α»c ΔΓ³ biαΊΏn mαΊ₯t.
QuΓ‘ tαΊ£i ngα»― cαΊ£nh (Context Window Overload): NαΊ‘p toΓ n bα» 45,000 tα»« thΓ΄ vΓ o LLM khiαΊΏn AI tΓ³m tαΊ―t qua loa, bα» sΓ³t cam kαΊΏt hΓ nh Δα»ng (Action Items) vΓ quyαΊΏt Δα»nh chα»t α» giα»―a buα»i hα»p.
ThiαΊΏu hα»₯t hΓ¬nh αΊ£nh & Γ’m thanh minh chα»©ng: Diα» n giαΊ£ trΓ¬nh chiαΊΏu slide kiαΊΏn trΓΊc, sΖ‘ Δα» kα»Ή thuαΊt, bαΊ£ng tΓ i chΓnh hoαΊ·c mΓ£ QR tΓ i liα»u nhΖ°ng cΓ΄ng cα»₯ Γ’m thanh khΓ΄ng ghi nhαΊn Δược.
MΓ΄i trΖ°α»ng tΓ i khoαΊ£n phΓ’n tΓ‘n: Google Workspace hα» trợ Meet API/Drive, trong khi tΓ i khoαΊ£n cΓ‘ nhΓ’n thΓ΄ng thΖ°α»ng chα» hiα»n thα» phα»₯ Δα» trα»±c tiαΊΏp (Live Captions).
google-meet-mcp giαΊ£i quyαΊΏt triα»t Δα» toΓ n bα» vαΊ₯n Δα» trΓͺn:
π‘οΈ Bα» Δα»m Append-Only Chα»ng MαΊ₯t Dα»― Liα»u: Ghi tα»©c thΓ¬ tα»«ng cΓ’u thoαΊ‘i (
.utterances.jsonl), αΊ£nh slide (.jpg) vΓ khα»i Γ’m thanh Opus (.webm) xuα»ng α» cα»©ng cα»₯c bα» (~/.google_meet_mcp).ποΈ Thu thαΊp Δa phΖ°Ζ‘ng thα»©c & Thα» giΓ‘c AI: Δα»ng bα» hΓ³a phα»₯ Δα» (phΓ’n tΓ‘ch ngΖ°α»i nΓ³i), tα»± Δα»ng chα»₯p slide Δα» nΓ©t cao khi diα» n giαΊ£ chuyα»n trang vΓ bΓ³c tΓ‘ch mΓ£ QR/liΓͺn kαΊΏt ΔΓnh kΓ¨m.
π Web Dashboard QuαΊ£n lΓ½ TΖ°Ζ‘ng tΓ‘c: Ứng dα»₯ng Web trα»±c quan (
http://127.0.0.1:8765/dashboard) duyα»t lα»ch sα» hα»p, trΓ¬nh chiαΊΏu slide gallery, phΓ‘t Γ’m thanh WebM khα»p vα»i phα»₯ Δα» vΓ xuαΊ₯t biΓͺn bαΊ£n Markdown/HTML/JSON.π¬ Trợ lΓ½ Hα»i ΔΓ‘p Cuα»c hα»p AI (Meeting Chat): Chat tα»± do hα»i ΔΓ‘p mα»i nα»i dung cuα»c hα»p hα» trợ bα»i Gemini Multimodal API, ΔΓnh kΓ¨m nΓΊt trΓch dαΊ«n
[MM:SS]phΓ‘t lαΊ‘i Γ’m thanh vΓ[Slide #X]mα» trα»±c tiαΊΏp trang slide.π CαΊ£nh bΓ‘o Δa kΓͺnh Tα»©c thΓ¬ (Telegram + Zalo): Gα»i tin nhαΊ―n cαΊ£nh bΓ‘o khi bαΊ‘n Δược gα»i tΓͺn qua bot Telegram chΓnh chα»§ hoαΊ·c Zalo OA/Webhook kΓ¨m liΓͺn kαΊΏt mα» Dashboard.
β‘ ΔΓ³ng gΓ³i 1-ChαΊ‘m & Docker Tiα»n lợi: Khα»i Δα»ng tα»©c thΓ¬ bαΊ±ng lα»nh CLI (
google-meet-mcp dashboard) hoαΊ·c triα»n khai container Docker bαΊ£o mαΊt chαΊ‘y khΓ΄ng dΓΉng quyα»n root.
2. Ma trαΊn So sΓ‘nh TΓnh nΔng CαΊ‘nh tranh
TΓnh nΔng / NΔng lα»±c | Bot MCP ThΓ΄ng thΖ°α»ng | CΓ΄ng cα»₯ ThΖ°Ζ‘ng mαΊ‘i (Otter / Fireflies) |
|
Ghi Δα»m 3h+ Chα»ng mαΊ₯t dα»― liα»u | β Chα» lΖ°u trΓͺn RAM | β οΈ Phα»₯ thuα»c Δα» α»n Δα»nh mαΊ‘ng cloud | β
Ghi nα»i tiαΊΏp |
BαΊ―t αΊ£nh Slide & BΓ³c tΓ‘ch mΓ£ QR | β Chα» xα» lΓ½ vΔn bαΊ£n | β Chα» xα» lΓ½ giα»ng nΓ³i | β Chα»₯p slide HD + nhαΊn diα»n QR/link |
PhΓ‘t lαΊ‘i Audio Δα»ng bα» vα»i Phα»₯ Δα» | β KhΓ΄ng lΖ°u audio | β οΈ Player ΔΓ³ng trΓͺn cloud | β PhΓ‘t WebM Opus tua chuαΊ©n mα»c giΓ’y |
Tα»ng hợp NgoαΊ‘i tuyαΊΏn (KhΓ΄ng cαΊ§n API Key) | β Lα»i nαΊΏu thiαΊΏu API | β HoΓ n toΓ n dΓΉng cloud | β TΓch hợp thuαΊt toΓ‘n heuristic cα»₯c bα» |
CαΊ£nh bΓ‘o Gα»i tΓͺn (Telegram & Zalo) | β KhΓ΄ng cΓ³ | β οΈ Chα» cΓ³ Slack / Email | β Gα»i Telegram Bot + Zalo OA / Webhook |
Hα» trợ cαΊ£ TΓ i khoαΊ£n CΓ‘ nhΓ’n & Workspace | β οΈ Chα» chαΊ‘y vα»i Workspace API | β οΈ BαΊ―t buα»c thΓͺm bot vΓ o phΓ²ng hα»p | β Δa cΖ‘ chαΊΏ (Phα»₯ Δα» sα»ng + REST API) |
Giao thα»©c FastMCP cho AI Agent | β οΈ CΓ΄ng cα»₯ cΖ‘ bαΊ£n | β Hα» thα»ng ΔΓ³ng SaaS | β ChuαΊ©n FastMCP 2024-11-05 cho Antigravity & Claude |
BαΊ£o mαΊt & Tα»± chα»§ Dα»― liα»u 100% | β οΈ Phα»₯ thuα»c mΓ‘y host | β Dα»― liα»u lΖ°u mΓ‘y chα»§ bΓͺn thα»© ba | β
LΖ°u cα»₯c bα» tαΊ‘i |
3. SΖ‘ Δα» KiαΊΏn trΓΊc & Luα»ng Dα»― liα»u
SΖ‘ Δα» Khα»i ASCII
+---------------------------------------------------------------------------------------+
| GOOGLE MEET (meet.google.com) |
+---------------------------------------------------------------------------------------+
β (Thu thαΊp Phα»₯ Δα») β (Chα»₯p Slide TrΓ¬nh chiαΊΏu) β (Luα»ng Γm thanh Opus)
βΌ βΌ βΌ
+---------------------------------------------------------------------------------------+
| CHROME EXTENSION (Manifest V3) |
| - Huy hiα»u Nα»i & NΓΊt Δiα»u khiα»n [π’ Δang ghi | π Dashboard | β‘ Tα»ng hợp AI] |
| - Service Worker (Vượt rà o CSP connect-src của Google Meet an toà n) |
+---------------------------------------------------------------------------------------+
β HTTP POST (cα»ng 8765)
βΌ
+---------------------------------------------------------------------------------------+
| GOOGLE-MEET-MCP COMPANION HTTP SERVER |
| |
| ββββββββββββββββββββ ββββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββ |
| β POST /chunk β β POST /snapshot β β POST /audio β β GET /health β |
| β (Phα»₯ Δα» ThoαΊ‘i) β β (αΊ’nh Slide HD) β β (WebRTC Opus) β β (Kiα»m tra Sα»ngβ |
| βββββββββββ¬βββββββββ βββββββββββ¬βββββββββ βββββββββββ¬βββββββββ βββββββββββββββββ |
| β β β |
| βΌ βΌ βΌ |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ |
| β SessionManager (LΖ°u trα»― Bα»n vα»―ng Cα»₯c bα»: ~/.google_meet_mcp) β |
| β β’ .utterances.jsonl β’ slides/*.jpg β’ audio/*.webm β’ .meta.json β |
| βββββββββββββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββ |
| β |
| ββββββββββββββββββββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββ |
| βΌ βΌ |
| ββββββββββββββββββββββββββββββββββββββββ ββββββββββββββββββββββββββββββββββ |
| β Web Dashboard Trα»±c quan (cα»ng 8765) β β Δα»ng cΖ‘ Tα»ng hợp & Trợ lΓ½ Chat β |
| β - Danh sΓ‘ch Cuα»c hα»p & Thα»ng kΓͺ β β - TΓ³m tαΊ―t Δiα»u hΓ nh β |
| β - TrΓ¬nh duyα»t Slide & ThΖ° viα»n QR β β - Ma trαΊn QuyαΊΏt Δα»nh & Viα»c cαΊ§nβ |
| β - TrΓ¬nh phΓ‘t Audio WebM Δα»ng bα» β β - API Chat Gemini Multimodal β |
| β - Hα»p thoαΊ‘i CΓ i ΔαΊ·t CαΊ£nh bΓ‘o β β - XuαΊ₯t BiΓͺn bαΊ£n Δa Δα»nh dαΊ‘ng: β |
| β (Telegram Bot + Zalo Webhook/OA) β β β’ Markdown β’ HTML In β’ JSON β |
| ββββββββββββββββββββββββββββββββββββββββ ββββββββββββββββββββββββββββββββββ |
+---------------------------------------------------------------------------------------+
β FastMCP stdio (JSON-RPC 2.0)
βΌ
+---------------------------------------------------------------------------------------+
| Hα» SINH THΓI AI AGENT (Google Antigravity / Claude) |
| CΓ΄ng cα»₯: meet_start_session, meet_synthesize_meeting, ... |
+---------------------------------------------------------------------------------------+SΖ‘ Δα» Luα»ng Dα»― liα»u Mermaid
flowchart TD
subgraph Browser["TrΓ¬nh duyα»t: meet.google.com"]
GM[PhΓ²ng hα»p Google Meet]
EXT["Chrome Extension MV3<br/>(Huy hiα»u Nα»i & Service Worker)"]
SCRIPT["Tampermonkey Userscript<br/>(Thu thαΊp NhαΊΉ)"]
GM -->|Phα»₯ Δα», Slide & Audio| EXT
GM -.->|Chα» phα»₯ Δα»| SCRIPT
end
subgraph Server["MΓ‘y chα»§ Companion (Cα»ng 8765)"]
HTTP["HTTP Endpoints<br/>/chunk, /snapshot, /audio, /health"]
SM["SessionManager<br/>(Bα» Δα»m Append-Only)"]
SYN["MeetingSynthesizer<br/>(TΓ³m tαΊ―t, Ma trαΊn Viα»c cαΊ§n lΓ m)"]
CHAT["Δα»ng cΖ‘ Chat AI<br/>(Gemini Multimodal API)"]
ALERT["Bα» phΓ‘t CαΊ£nh bΓ‘o<br/>(Telegram Bot + Zalo OA)"]
DASH["Giao diα»n Web Dashboard<br/>(/dashboard)"]
end
subgraph Storage["LΖ°u trα»― Bα»n vα»―ng (~/.google_meet_mcp)"]
DISK["ThΖ° mα»₯c PhiΓͺn hα»p<br/>β’ .utterances.jsonl<br/>β’ slides/*.jpg<br/>β’ audio/*.webm<br/>β’ exports/"]
end
subgraph Consumers["NgΖ°α»i dΓΉng & TΓ‘c tα» AI"]
USER["NgΖ°α»i dΓΉng qua TrΓ¬nh duyα»t"]
TELEGRAM["KΓͺnh / Chat Telegram"]
ZALO["Ứng dα»₯ng Zalo"]
MCP["Google Antigravity / Claude (FastMCP stdio)"]
end
EXT -->|HTTP POST| HTTP
SCRIPT -.->|HTTP POST /chunk| HTTP
HTTP --> SM
SM <--> DISK
SM --> SYN
SM --> CHAT
SM --> ALERT
HTTP --> DASH
DASH <--> USER
ALERT --> TELEGRAM
ALERT --> ZALO
Server -->|FastMCP stdio| MCP4. CαΊ₯u trΓΊc ThΖ° mα»₯c Dα»± Γ‘n
google-meet-mcp/
βββ .dockerignore
βββ .gitignore
βββ Dockerfile # Docker image bαΊ£o mαΊt khΓ΄ng dΓΉng quyα»n root (UID 10001)
βββ docker-compose.yml # Triα»n khai trα»n gΓ³i tiα»n lợi 1 cΓ’u lα»nh
βββ pyproject.toml # Khai bΓ‘o gΓ³i cΓ i ΔαΊ·t vΓ thΖ° viα»n phα»₯ thuα»c
βββ uv.lock # KhΓ³a phiΓͺn bαΊ£n gΓ³i xΓ‘c Δα»nh
βββ LICENSE # GiαΊ₯y phΓ©p nguα»n mα» MIT
βββ README.md # TΓ i liα»u hΖ°α»ng dαΊ«n song ngα»― hoΓ n chα»nh
β
βββ extension/ # Tiα»n Γch mα» rα»ng Chrome Extension (Manifest V3)
β βββ manifest.json # Khai bΓ‘o quyα»n hαΊ‘n vΓ tΓ i nguyΓͺn tiα»n Γch
β βββ background.js # Service worker vượt rΓ o CSP Google Meet
β βββ content.js # LαΊ―ng nghe DOM phα»₯ Δα», chα»₯p slide, thu Γ’m tab
β βββ popup.html / popup.js # Giao diα»n bαΊt popup kiα»m tra trαΊ‘ng thΓ‘i
β βββ icons/ # Bα» icon Δα» phΓ’n giαΊ£i cao
β
βββ src/google_meet_mcp/ # MΓ£ nguα»n cα»t lΓ΅i Python
β βββ __init__.py
β βββ __main__.py # Δiα»m chαΊ‘y thα»±c thi trα»±c tiαΊΏp
β βββ cli.py # Giao diα»n dΓ²ng lα»nh CLI tΖ°Ζ‘ng tΓ‘c Rich
β βββ config.py # QuαΊ£n lΓ½ ΔΖ°α»ng dαΊ«n vΓ biαΊΏn mΓ΄i trΖ°α»ng
β βββ server.py # MΓ‘y chα»§ FastMCP stdio chuαΊ©n MCP
β β
β βββ auth/ # Luα»ng xΓ‘c thα»±c Google OAuth2
β β βββ google_auth.py # Mα» trΓ¬nh duyα»t xΓ‘c thα»±c vΓ nhαΊn mΓ£ callback
β β
β βββ capture/ # MΓ‘y chα»§ Ingestion & Giao diα»n Dashboard
β β βββ companion_server.py # MΓ‘y chα»§ aiohttp xα» lΓ½ /chunk, /audio, /snapshot, /chat
β β βββ meet_captions.user.js # Userscript Tampermonkey thay thαΊΏ
β β βββ templates/
β β βββ dashboard.html # Ứng dα»₯ng Web SPA hiα»n ΔαΊ‘i
β β
β βββ engine/ # Δα»ng cΖ‘ TrΓ tuα» NhΓ’n tαΊ‘o & Tα»ng hợp Cuα»c hα»p
β β βββ prompts.py # TαΊp hợp cΓ’u lα»nh Δα»nh hΓ¬nh phong cΓ‘ch tΓ³m tαΊ―t
β β βββ synthesizer.py # Kα»Ή thuαΊt Map-Reduce & cα»a sα» trượt tα»ng hợp
β β
β βββ google_client/ # TΖ°Ζ‘ng tΓ‘c API Google
β β βββ meet_api.py # Google Meet REST API v2
β β βββ drive_api.py # BΓ³c tΓ‘ch transcript Google Drive v3
β β
β βββ notifications/ # Hα» thα»ng CαΊ£nh bΓ‘o Δa kΓͺnh
β β βββ alert_detector.py # NhαΊn diα»n gα»i tΓͺn vΓ chuαΊ©n hΓ³a tiαΊΏng Viα»t khΓ΄ng dαΊ₯u
β β βββ telegram.py # Gα»i tin nhαΊ―n Telegram Bot native
β β βββ zalo.py # Gα»i tin nhαΊ―n Zalo Webhook & Zalo OA OpenAPI v3.0
β β
β βββ session/ # QuαΊ£n lΓ½ Dα»― liα»u & LΖ°u trα»― Bα»n vα»―ng
β βββ models.py # MΓ΄ hΓ¬nh dα»― liα»u Pydantic v2 chuαΊ©n hΓ³a
β βββ session_manager.py # Bα» Δα»m append-only ghi trα»±c tiαΊΏp α» cα»©ng
β βββ chat.py # Δα»ng cΖ‘ trợ lΓ½ trΓ² chuyα»n hα»i ΔΓ‘p cuα»c hα»p
β
βββ tests/ # Bα» kiα»m thα» tα»± Δα»ng toΓ n diα»n (495 tests)
βββ conftest.py # Bα» dα»― liα»u mαΊ«u vΓ mock
βββ e2e/ # CΓ‘c kα»ch bαΊ£n kiα»m thα» tΓch hợp 4 tαΊ§ng
β βββ test_tier1_features.py
β βββ test_tier2_boundaries.py
β βββ test_tier3_interactions.py
β βββ test_tier4_workloads.py
βββ test_*.py # CΓ‘c bΓ i kiα»m thα» ΔΖ‘n vα» & tΓch hợp chi tiαΊΏt5. HΖ°α»ng dαΊ«n CΓ i ΔαΊ·t & Khα»i Δα»ng 1-ChαΊ‘m
CΓ‘ch 1: ChαΊ‘y Cα»₯c bα» vα»i Python (KhuyΓͺn dΓΉng khi PhΓ‘t triα»n)
YΓͺu cαΊ§u mΓ‘y tΓnh cΓ i ΔαΊ·t Python 3.10 trα» lΓͺn (khuyαΊΏn nghα» 3.11).
# 1. TαΊ£i mΓ£ nguα»n vα» mΓ‘y
git clone https://github.com/DuongNAD/google-meet-mcp.git
cd google-meet-mcp
# 2. Khα»i tαΊ‘o vΓ kΓch hoαΊ‘t mΓ΄i trΖ°α»ng αΊ£o
python3 -m venv .venv
source .venv/bin/activate
# 3. CΓ i ΔαΊ·t cΓ‘c thΖ° viα»n cαΊ§n thiαΊΏt
pip install -e ".[dev]"
# 4. Khα»i Δα»ng Web Dashboard & Companion Server 1-chαΊ‘m
google-meet-mcp dashboardTrΓ¬nh duyα»t cα»§a bαΊ‘n sαΊ½ tα»± Δα»ng mα» giao diα»n Dashboard tαΊ‘i http://127.0.0.1:8765/dashboard.
CΓ‘ch 2: Triα»n khai Nhanh vα»i Docker & Docker Compose (KhuyΓͺn dΓΉng cho Production)
Triα»n khai container an toΓ n chαΊ‘y bαΊ±ng tΓ i khoαΊ£n thΖ°α»ng appuser (UID 10001, khΓ΄ng quyα»n root, cΓ³ cΖ‘ chαΊΏ healthcheck):
# 1. (TΓΉy chα»n) Khai bΓ‘o khΓ³a API vΓ o mΓ΄i trΖ°α»ng
export GEMINI_API_KEY="khoa-gemini-cua-ban"
export TELEGRAM_BOT_TOKEN="token-bot-telegram"
export TELEGRAM_CHAT_ID="id-chat-telegram"
# 2. BαΊt dα»ch vα»₯ chαΊ‘y ngαΊ§m vα»i Docker Compose
docker compose up -d
# 3. Kiα»m tra trαΊ‘ng thΓ‘i hoαΊ‘t Δα»ng
docker compose ps
curl -s http://localhost:8765/health
# 4. Mα» Dashboard trΓͺn trΓ¬nh duyα»t
open http://localhost:8765/dashboard6. TΓΉy chα»n Thu thαΊp Dα»― liα»u Cuα»c hα»p
BαΊ‘n cΓ³ thα» lα»±a chα»n thu thαΊp dα»― liα»u bαΊ±ng Chrome Extension hoαΊ·c Userscript:
CΓ‘ch 1: Chrome Extension (Manifest V3) β KhuyαΊΏn nghα»
Thu thαΊp ΔαΊ§y Δα»§ Δa phΖ°Ζ‘ng thα»©c: Phα»₯ Δα», αΊ’nh chα»₯p Slide HD vΓ Luα»ng Γm thanh Tab WebRTC.
Mα» trΓ¬nh duyα»t Chrome vΓ truy cαΊp:
chrome://extensions/.BαΊt cΓ΄ng tαΊ―c Developer mode α» gΓ³c trΓͺn cΓΉng bΓͺn phαΊ£i.
NhαΊ₯p vΓ o nΓΊt Load unpacked vΓ chα»n thΖ° mα»₯c
extension/trong dα»± Γ‘n nΓ y.Tham gia bαΊ₯t kα»³ phΓ²ng hα»p Google Meet nΓ o (
https://meet.google.com/*-*-*).BαΊt phα»₯ Δα» trα»±c tiαΊΏp trong Meet (phΓm tαΊ―t
c).Huy hiα»u TrαΊ‘ng thΓ‘i Nα»i sαΊ½ xuαΊ₯t hiα»n α» gΓ³c dΖ°α»i bΓͺn trΓ‘i mΓ n hΓ¬nh cuα»c hα»p:
π’ ChαΊ₯m xanh: ΔΓ£ kαΊΏt nα»i thΓ nh cΓ΄ng vα»i mΓ‘y chα»§ companion (
http://127.0.0.1:8765).π΄ ChαΊ₯m Δα»: MΓ‘y chα»§ chΖ°a chαΊ‘y (kiα»m tra lαΊ‘i
google-meet-mcp companion).Bα» ΔαΊΏm: Thα»ng kΓͺ sα» cΓ’u thoαΊ‘i, sα» slide vΓ khα»i Γ’m thanh ΔΓ£ thu thαΊp theo thα»i gian thα»±c.
Thao tΓ‘c nhanh: NΓΊt mα» "Dashboard", nΓΊt kΓch hoαΊ‘t "Tα»ng hợp AI", nΓΊt bαΊt "Audio".
CΓ‘ch 2: Tampermonkey Userscript (NhαΊΉ & Nhanh)
Thu thαΊp phα»₯ Δα» trα»±c tiαΊΏp mΓ khΓ΄ng cαΊ§n cΓ i extension dαΊ‘ng unpacked.
CΓ i ΔαΊ·t tiα»n Γch Tampermonkey trΓͺn trΓ¬nh duyα»t cα»§a bαΊ‘n.
TαΊ‘o mα»i mα»t script vΓ dΓ‘n toΓ n bα» nα»i dung tα»p
src/google_meet_mcp/capture/meet_captions.user.js.LΖ°u lαΊ‘i vΓ tham gia phΓ²ng hα»p Google Meet. BαΊt phα»₯ Δα» (
c), cΓ’u thoαΊ‘i sαΊ½ tα»± Δα»ng truyα»n vα» cα»ng 8765.
7. BαΊ£ng Lα»nh CLI Chi tiαΊΏt
Bα» cΓ΄ng cα»₯ google-meet-mcp cung cαΊ₯p cΓ‘c lα»nh trα»±c quan:
Lα»nh | CΓΊ phΓ‘p | Γ nghΔ©a & MΓ΄ tαΊ£ |
|
| Khα»i Δα»ng toΓ n diα»n hα» thα»ng. MαΊ·c Δα»nh chαΊ‘y |
|
| Khα»i Δα»ng mΓ‘y chα»§ companion vΓ tα»± Δα»ng bαΊt Web Dashboard trΓͺn trΓ¬nh duyα»t mαΊ·c Δα»nh. |
|
| Khα»i Δα»ng mΓ‘y chα»§ nαΊ‘p phα»₯ Δα» HTTP vΓ phα»₯c vα»₯ Web Dashboard tαΊ‘i cα»ng 8765. |
|
| ChαΊ‘y mΓ‘y chα»§ FastMCP qua luα»ng nhαΊp/xuαΊ₯t chuαΊ©n (stdio) dΓ nh cho Google Antigravity vΓ Claude Desktop. |
|
| Kiα»m tra tΓ¬nh trαΊ‘ng OAuth Google vΓ in danh sΓ‘ch cΓ‘c phiΓͺn hα»p ΔΓ£ lΖ°u trα»― dΖ°α»i dαΊ‘ng bαΊ£ng Rich. |
|
| Mα» trΓ¬nh duyα»t thα»±c hiα»n cαΊ₯p quyα»n Google OAuth2 cho Meet API vΓ Drive API. |
|
| Tα»ng hợp phiΓͺn hα»p ngay tα»« dΓ²ng lα»nh vΓ in tΓ³m tαΊ―t Δiα»u hΓ nh, tΓΉy chα»n xuαΊ₯t ra Markdown. |
8. Giao diα»n Web Dashboard TΖ°Ζ‘ng tΓ‘c
Truy cαΊp Dashboard tαΊ‘i http://127.0.0.1:8765/dashboard Δα» sα» dα»₯ng ΔαΊ§y Δα»§ cΓ‘c tiα»n Γch:
ποΈ QuαΊ£n lΓ½ PhiΓͺn hα»p: Xem danh sΓ‘ch cΓ‘c cuα»c gα»i, thα»ng kΓͺ sα» ngΖ°α»i tham gia, tα»ng sα» cΓ’u nΓ³i, sα» tα»« vΓ thα»i lượng cuα»c hα»p.
π΅ TrΓ¬nh phΓ‘t Γm thanh Δα»ng bα»: Nghe lαΊ‘i cΓ‘c ΔoαΊ‘n ghi Γ’m WebM Opus, bαΊ₯m tua trα»±c tiαΊΏp ΔαΊΏn mα»c thα»i gian cα»§a tα»«ng cΓ’u thoαΊ‘i.
πΌοΈ ThΖ° viα»n Slide & αΊ’nh minh chα»©ng: Duyα»t cΓ‘c slide trΓ¬nh chiαΊΏu chαΊ₯t lượng cao, nhαΊ₯p mα» trα»±c tiαΊΏp cΓ‘c mΓ£ QR vΓ liΓͺn kαΊΏt tΓ i liα»u Δược bΓ³c tΓ‘ch tα»± Δα»ng.
π TαΊ£i BiΓͺn bαΊ£n Δa Δα»nh dαΊ‘ng: XuαΊ₯t biΓͺn bαΊ£n tα»©c thΓ¬ dΖ°α»i dαΊ‘ng:
Markdown (
.md): PhΓΉ hợp chΓ©p vΓ o Obsidian, Notion, GitHub.HTML In αΊ₯n (
.html): TrΓ¬nh bΓ y chuyΓͺn nghiα»p theo chuαΊ©n tΓ i liα»u Δiα»u hΓ nh, sαΊ΅n sΓ ng in ra PDF.JSON (
.json): Dα»― liα»u cΓ³ cαΊ₯u trΓΊc cho cΓ‘c hα» thα»ng phαΊ§n mα»m khΓ‘c.
βοΈ CΓ i ΔαΊ·t CαΊ£nh bΓ‘o Trα»±c quan: Hα»p thoαΊ‘i cαΊ₯u hΓ¬nh vΓ kiα»m tra kαΊΏt nα»i gα»i tin nhαΊ―n ΔαΊΏn Telegram vΓ Zalo.
9. Trợ lΓ½ Hα»i ΔΓ‘p Cuα»c hα»p AI & TrΓ tuα» Gemini
Khung chat tΖ°Ζ‘ng tΓ‘c trα»±c tiαΊΏp trΓͺn Web Dashboard:
ΔαΊ·t cΓ’u hα»i tα»± nhiΓͺn vα» bαΊ₯t kα»³ nα»i dung nΓ o trong cuα»c hα»p:
"Ai Δược giao phα»₯ trΓ‘ch chuαΊ©n bα» hαΊ‘ tαΊ§ng cΖ‘ sα» dα»― liα»u?"
"QuyαΊΏt Δα»nh chα»t vα» ngΓ’n sΓ‘ch quΓ½ 4 lΓ bao nhiΓͺu?"
"GiαΊ£i thΓch sΖ‘ Δα» kiαΊΏn trΓΊc xuαΊ₯t hiα»n α» slide sα» 3."
TΓch hợp Gemini Multimodal API: AI Δα»c hiα»u Δα»ng thα»i cαΊ£ vΔn bαΊ£n phα»₯ Δα» vΓ nα»i dung hΓ¬nh αΊ£nh trong slide trΓ¬nh chiαΊΏu.
NΓΊt TrΓch dαΊ«n TΖ°Ζ‘ng tΓ‘c:
NΓΊt
[MM:SS](vΓ dα»₯[04:15]): NhαΊ₯p vΓ o Δα» tua trΓ¬nh phΓ‘t Γ’m thanh ΔαΊΏn ΔΓΊng giΓ’y diα» n giαΊ£ phΓ‘t biα»u.NΓΊt
[Slide #X](vΓ dα»₯[Slide #2]): NhαΊ₯p vΓ o Δα» trượt slide gallery ΔαΊΏn ΔΓΊng trang tΓ i liα»u liΓͺn quan.
ChαΊΏ Δα» NgoαΊ‘i tuyαΊΏn Tα»± hΓ nh (Heuristic Fallback): HoαΊ‘t Δα»ng trΖ‘n tru ngay cαΊ£ khi khΓ΄ng cΓ³ Internet hoαΊ·c chΖ°a nhαΊp khΓ³a API nhα» Δα»ng cΖ‘ bΓ³c tΓ‘ch ngα»― nghΔ©a cα»₯c bα».
10. Δα»ng cΖ‘ CαΊ£nh bΓ‘o Δa kΓͺnh (Telegram & Zalo)
KhΓ΄ng bao giα» bα» lα»‘ cΓ‘c thΓ΄ng tin quan trα»ng khi Δang bαΊn viα»c khΓ‘c:
βοΈ KΓͺnh Telegram Bot Native: NhαΊn tin nhαΊ―n cαΊ£nh bΓ‘o tα»©c thΓ¬ kΓ¨m tΓͺn ngΖ°α»i gα»i, nα»i dung thoαΊ‘i vΓ nΓΊt bαΊ₯m trα»±c tiαΊΏp mα» Dashboard.
π¬ KΓͺnh Zalo: Hα» trợ cαΊ£ Zalo Webhook (cho hα» thα»ng n8n / bot riΓͺng) vΓ Zalo Official Account (OA) OpenAPI v3.0.
π― NhαΊn diα»n ThΓ΄ng minh & ChuαΊ©n hΓ³a TiαΊΏng Viα»t:
Tα»± Δα»ng bα» dαΊ₯u (
strip_accents) nhαΊn diα»n chuαΊ©n xΓ‘c cΓ‘c cΓ‘ch viαΊΏt tΓͺn (vΓ dα»₯:DΖ°Ζ‘ng,Duong,duongnad).Lα»c cΓ‘c tα»« khΓ³a cαΊ₯p bΓ‘ch (
deadline,gαΊ₯p,hα»i,Ζ‘i,nhα»,urgent).CΖ‘ chαΊΏ chα»ng spam (cooldown) trΓ‘nh gα»i lαΊ·p tin nhαΊ―n khi tΓͺn Δược nhαΊ―c liΓͺn tα»₯c trong thα»i gian ngαΊ―n.
11. ΔαΊ·c tαΊ£ ToΓ n diα»n API RESTful
MΓ‘y chα»§ Companion phα»₯c vα»₯ 14+ endpoint chuαΊ©n RESTful:
PhΖ°Ζ‘ng thα»©c | Endpoint | Chα»©c nΔng | Tham sα» / Body | CαΊ₯u trΓΊc Dα»― liα»u TrαΊ£ vα» |
|
| Kiα»m tra trαΊ‘ng thΓ‘i hoαΊ‘t Δα»ng (Docker Healthcheck) | KhΓ΄ng |
|
|
| Giao diα»n Web Dashboard tΖ°Ζ‘ng tΓ‘c | KhΓ΄ng | Ứng dα»₯ng HTML Web SPA |
|
| Δiα»u hΖ°α»ng trang chα»§ | KhΓ΄ng | Chuyα»n hΖ°α»ng HTTP 302 vα» |
|
| NαΊ‘p cΓ’u thoαΊ‘i phα»₯ Δα» trα»±c tiαΊΏp |
|
|
|
| NαΊ‘p αΊ£nh chα»₯p slide vΓ mΓ£ QR/link |
|
|
|
| NαΊ‘p ΔoαΊ‘n Γ’m thanh Opus WebRTC |
|
|
|
| Khα»i tαΊ‘o phiΓͺn hα»p mα»i |
| Δα»i tượng JSON |
|
| KαΊΏt thΓΊc phiΓͺn vΓ kΓch hoαΊ‘t tα»ng hợp |
|
|
|
| LαΊ₯y danh sΓ‘ch cΓ‘c phiΓͺn hα»p ΔΓ£ lΖ°u |
| MαΊ£ng JSON |
|
| LαΊ₯y chi tiαΊΏt phiΓͺn hα»p | ΔΖ°α»ng dαΊ«n | Δα»i tượng |
|
| Phα»₯c vα»₯ tα»p αΊ£nh slide chαΊ₯t lượng cao | ΔΖ°α»ng dαΊ«n | Nhα» phΓ’n |
|
| PhΓ‘t luα»ng Γ’m thanh WebM Opus (hα» trợ RFC 7233 Range) | ΔΖ°α»ng dαΊ«n | Nhα» phΓ’n |
|
| TαΊ£i xuα»ng biΓͺn bαΊ£n cuα»c hα»p |
| Tα»p ΔΓnh kΓ¨m tαΊ£i vα» |
|
| Trợ lΓ½ Chat AI hα»i ΔΓ‘p cuα»c hα»p |
| Luα»ng SSE hoαΊ·c JSON cΓ’u trαΊ£ lα»i kΓ¨m trΓch dαΊ«n |
|
| Δα»c cαΊ₯u hΓ¬nh cαΊ£nh bΓ‘o hiα»n tαΊ‘i | KhΓ΄ng | Δα»i tượng JSON |
|
| CαΊp nhαΊt cαΊ₯u hΓ¬nh cαΊ£nh bΓ‘o | Dα»― liα»u JSON |
|
|
| Thα» nghiα»m gα»i tin cαΊ£nh bΓ‘o (Telegram/Zalo) |
|
|
|
| KΓch hoαΊ‘t AI tα»ng hợp cuα»c hα»p |
|
|
12. Danh mα»₯c CΓ΄ng cα»₯ FastMCP cho AI Agent (Antigravity, Claude, Cursor)
TΓch hợp google-meet-mcp vΓ o cΓ‘c tΓ‘c tα» AI lαΊp trΓ¬nh:
1. Google Antigravity (~/.gemini/config/mcp_config.json)
{
"mcpServers": {
"google-meet": {
"command": "/duong-dan/google-meet-mcp/.venv/bin/python",
"args": ["-m", "google_meet_mcp.cli", "stdio"],
"env": {
"GOOGLE_MEET_MCP_DATA_DIR": "/Users/tenban/.google_meet_mcp",
"GEMINI_API_KEY": "khoa-gemini-cua-ban"
}
}
}
}2. Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json)
{
"mcpServers": {
"google-meet": {
"command": "/duong-dan/google-meet-mcp/.venv/bin/python",
"args": ["-m", "google_meet_mcp.cli", "stdio"]
}
}
}3. Cursor IDE (.cursor/mcp.json)
{
"mcpServers": {
"google-meet": {
"command": "google-meet-mcp",
"args": ["stdio"]
}
}
}Danh sΓ‘ch CΓ΄ng cα»₯ FastMCP:
meet_start_session: BαΊ―t ΔαΊ§u phiΓͺn hα»p mα»i vα»i bα» Δα»m an toΓ n hα» trợ hα»p 3 tiαΊΏng+.meet_ingest_chunk: Ghi nhαΊn trα»±c tiαΊΏp tα»«ng cΓ’u nΓ³i vΓ o bα» Δα»m α» cα»©ng.meet_get_live_status: Xem nhanh trαΊ‘ng thΓ‘i trα»±c tiαΊΏp (thα»i lượng, sα» tα»«, ngΖ°α»i nΓ³i).meet_list_sessions: Xem danh sΓ‘ch cΓ‘c phiΓͺn hα»p ΔΓ£ lΖ°u trΓͺn α» cα»©ng.meet_fetch_google_transcript: TαΊ£i toΓ n bα» transcript qua Google Meet REST API v2.meet_fetch_drive_transcript: PhΓ’n tΓch tα»p transcript tα»± Δα»ng lΖ°u trΓͺn Google Drive.meet_list_recent_conferences: Liα»t kΓͺ cΓ‘c cuα»c hα»p Google Meet gαΊ§n nhαΊ₯t.meet_synthesize_meeting: Tα»ng hợp sΓ’u toΓ n diα»n: TΓ³m tαΊ―t Δiα»u hΓ nh, Ma trαΊn nhiα»m vα»₯, BαΊ£ng quyαΊΏt Δα»nh.meet_export_minutes: XuαΊ₯t biΓͺn bαΊ£n hα»p hoΓ n chα»nh ra Markdown, HTML hoαΊ·c JSON.meet_check_auth/meet_setup_auth: Kiα»m tra vΓ khα»i Δα»ng luα»ng xΓ‘c thα»±c Google OAuth2.
13. BαΊ£ng Tham chiαΊΏu BiαΊΏn MΓ΄i trΖ°α»ng
BiαΊΏn mΓ΄i trΖ°α»ng | MαΊ·c Δα»nh | Γ nghΔ©a & MΓ΄ tαΊ£ |
|
| ThΖ° mα»₯c gα»c lΖ°u trα»― cΓ‘c phiΓͺn hα»p, slide, audio vΓ xuαΊ₯t dα»― liα»u |
|
| Δα»a chα» IP mΓ‘y chα»§ companion vΓ Web Dashboard lαΊ―ng nghe |
|
| Cα»ng mαΊ‘ng mΓ‘y chα»§ companion vΓ Web Dashboard phα»₯c vα»₯ |
| (KhΓ΄ng cΓ³) | KhΓ³a API Google Gemini phα»₯c vα»₯ chat hα»i ΔΓ‘p vΓ tα»ng hợp thΓ΄ng minh |
| (KhΓ΄ng cΓ³) | Token bot Telegram tαΊ‘o qua |
| (KhΓ΄ng cΓ³) | ID cuα»c trΓ² chuyα»n hoαΊ·c nhΓ³m nhαΊn thΓ΄ng bΓ‘o Telegram |
| (KhΓ΄ng cΓ³) | ΔΖ°α»ng dαΊ«n webhook chuyα»n tiαΊΏp thΓ΄ng bΓ‘o Zalo |
| (KhΓ΄ng cΓ³) | Access token cα»§a Zalo Official Account v3.0 |
| (KhΓ΄ng cΓ³) | ID ngΖ°α»i dΓΉng Zalo ΔΓch Δα» nhαΊn tin nhαΊ―n riΓͺng |
|
| ΔΖ°α»ng dαΊ«n tα»p client credentials Google OAuth2 |
|
| ΔΖ°α»ng dαΊ«n tα»p token ngΖ°α»i dΓΉng Google OAuth2 |
14. CαΊ©m nang Xα» lΓ½ Sα»± cα» & ThαΊ―c mαΊ―c
Sα»± cα» thΖ°α»ng gαΊ·p | NguyΓͺn nhΓ’n gα»c rα» | HΖ°α»ng dαΊ«n khαΊ―c phα»₯c tα»«ng bΖ°α»c |
Xung Δα»t Cα»ng 8765 ( | CΓ³ mα»t tiαΊΏn trΓ¬nh hoαΊ·c mΓ‘y chα»§ khΓ‘c Δang chiαΊΏm dα»₯ng cα»ng 8765. | TΓ¬m mΓ£ PID qua lα»nh |
Extension BΓ‘o Lα»i KαΊΏt Nα»i ( | MΓ‘y chα»§ companion chΖ°a chαΊ‘y hoαΊ·c bα» tΖ°α»ng lα»a chαΊ·n. | ChαΊ‘y lα»nh |
Lα»i CSP Google Meet ( | ChΓnh sΓ‘ch bαΊ£o mαΊt cα»§a Google Meet chαΊ·n kαΊΏt nα»i fetch tα»« nα»i dung trang. | Sα» dα»₯ng bαΊ£n Chrome Extension mα»i nhαΊ₯t ΔΓ£ Δiα»u hΖ°α»ng toΓ n bα» request qua Service Worker ngαΊ§m. |
KhΓ΄ng Thu Δược Γm thanh | ChΖ°a cαΊ₯p quyα»n thu Γ’m thanh tab cho trΓ¬nh duyα»t. | Khi chα»n chia sαΊ» mΓ n hΓ¬nh/tab trong Meet, nhα» tΓch chα»n vΓ o Γ΄ "Share tab audio" (Chia sαΊ» Γ’m thanh tab). |
Docker BΓ‘o Lα»i PhΓ’n quyα»n | ThΖ° mα»₯c trΓͺn mΓ‘y host thuα»c sα» hα»―u cα»§a root thay vΓ¬ UID 10001. | ChαΊ‘y lα»nh |
Lα»i Chat AI Gemini | ChΖ°a cαΊ₯u hΓ¬nh hoαΊ·c sai khΓ³a API Gemini. | ThiαΊΏt lαΊp biαΊΏn mΓ΄i trΖ°α»ng |
KhΓ΄ng NhαΊn Δược Tin Telegram | Sai Bot Token/Chat ID hoαΊ·c chΖ°a tα»«ng nhαΊ―n tin cho Bot. | Kiα»m tra token qua |
15. Kiα»m thα» & ΔαΊ£m bαΊ£o ChαΊ₯t lượng
Hα» thα»ng Δược bαΊ£o vα» bα»i 495 bΓ i kiα»m thα» tα»± Δα»ng chαΊ‘y qua 4 tαΊ§ng kiα»m Δα»nh:
TαΊ§ng 1 (Chα»©c nΔng cα»t lΓ΅i): Kiα»m thα» SessionManager, Synthesizer, Chat Assistant, vΓ bα» phΓ‘t hiα»n nhαΊ―c tΓͺn.
TαΊ§ng 2 (BiΓͺn giα»i hαΊ‘n & NgoαΊ‘i lα»): MΓ΄ phα»ng hα»p nhiα»u giα» liΓͺn tα»₯c, dα»― liα»u ΔαΊ§u vΓ o khiαΊΏm khuyαΊΏt, audio ngαΊ―t quΓ£ng.
TαΊ§ng 3 (TΖ°Ζ‘ng tΓ‘c & Endpoints): Kiα»m tra chuαΊ©n hợp Δα»ng 14+ REST API, phΓ‘t audio Range RFC 7233 vΓ WebSocket.
TαΊ§ng 4 (TαΊ£i trα»ng & Ứng suαΊ₯t cao): MΓ΄ phα»ng tαΊ£i 45,000+ cΓ’u thoαΊ‘i, ghi Δα»m Δα»ng thα»i vΓ kiα»m tra dα»n dαΊΉp bα» nhα» Δα»m an toΓ n.
# ChαΊ‘y bα» test tα»± Δα»ng (495 tests)
.venv/bin/pytest tests/ -v
# ChαΊ‘y kΓ¨m bΓ‘o cΓ‘o Δα» phα»§ mΓ£ nguα»n (Coverage)
.venv/bin/pytest tests/ --cov=google_meet_mcp --cov-report=term-missing16. Cam kαΊΏt An toΓ n & BαΊ£o mαΊt Dα»― liα»u
π Xα» lΓ½ Cα»₯c bα» Tuyα»t Δα»i: ToΓ n bα» phα»₯ Δα», αΊ£nh chα»₯p slide vΓ file ghi Γ’m chα» lΖ°u trα»― trα»±c tiαΊΏp trΓͺn mΓ‘y cα»§a bαΊ‘n (
~/.google_meet_mcp). KhΓ΄ng cΓ³ bαΊ₯t kα»³ dα»― liα»u nΓ o bα» tαΊ£i lΓͺn mΓ‘y chα»§ cα»§a bΓͺn thα»© ba nαΊΏu bαΊ‘n khΓ΄ng chα»§ Δα»ng cαΊ₯u hΓ¬nh khΓ³a API LLM bΓͺn ngoΓ i.π‘οΈ Container Docker ChuαΊ©n Doanh nghiα»p: ChαΊ‘y dΖ°α»i quyα»n ngΖ°α»i dΓΉng thΓ΄ng thΖ°α»ng (
appuser, UID 10001), kΓch hoαΊ‘t chΓnh sΓ‘chno-new-privileges:truevΓ kiα»m tra sα»©c khα»e container Δα»nh kα»³.π BαΊ£o vα» ThΓ΄ng tin NhαΊ‘y cαΊ£m: Token OAuth vΓ API Key Δược lΖ°u tαΊ‘i thΖ° mα»₯c hαΊ‘n chαΊΏ quyα»n truy cαΊp vΓ tα»± Δα»ng Δược loαΊ‘i trα»« khα»i git qua
.gitignore.
π GiαΊ₯y phΓ©p Nguα»n mα» (License)
Dα»± Γ‘n Δược phΓ‘t hΓ nh theo giαΊ₯y phΓ©p mΓ£ nguα»n mα» MIT License.
BαΊ£n quyα»n Β© 2026 thuα»c vα» DuongNAD.
Available Tools
11 toolsmeet_check_authA
Checks Google OAuth2 authentication status, tokens, credentials, and API scopes.
Inputs: no named parameters. Returns: result
meet_export_minutesA
Exports the synthesized meeting minutes to a local Markdown (.md), HTML (.html, print/PDF ready), or structured JSON (.json) document in the exports directory.
Inputs: session_id (required), format. Returns: result
meet_fetch_drive_transcriptB
Finds and reads Google Meet transcript documents auto-saved in Google Drive, and parses them into a durable session.
Inputs: file_id_or_query (required), title. Returns: result
meet_fetch_google_transcriptA
Fetches full transcript entries from Google Meet API v2 for a given conference record, resolves participant names, and creates a local durable session.
Inputs: conference_record_id (required), title. Returns: result
meet_get_live_statusB
Retrieves live status of a meeting: duration, word count, utterance count, speaker breakdown, and recent utterances.
Inputs: session_id (required), recent_lines. Returns: result
meet_ingest_chunkB
Ingests a live spoken line/chunk into an active session in real-time. Automatically flushes to disk immediately.
Inputs: text (required), speaker (required), session_id (required), relative_seconds. Returns: result
meet_list_recent_conferencesC
Queries Google Meet REST API v2 for recent conference records.
Inputs: page_size. Returns: result
meet_list_sessionsC
Lists all locally stored meeting sessions with metadata.
Inputs: limit. Returns: result
meet_setup_authA
Initiates Google OAuth 2.0 flow in the browser to authorize Google Meet, Drive, and Calendar access. Requires credentials.json from Google Cloud Console.
Inputs: open_browser. Returns: result
meet_start_sessionB
Starts a new durable meeting session with append-only disk buffering. Safely handles meetings up to 3+ hours without memory exhaustion or data loss.
Inputs: title, source, meeting_code. Returns: result
meet_synthesize_meetingA
Synthesizes a 3-hour+ meeting session into a comprehensive Executive Meeting Minutes report with Timeline Milestones, Decision Log, Action Items Matrix (PIC & Deadlines), and Participant Analytics. Also returns optimized AI prompts for Antigravity.
Inputs: session_id (required). Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelogβ¦
TDQS
Scored across 11 tools
Every tool targets a distinct action and resource: auth setup vs. auth check, live session ingestion vs. status, local session listing vs. cloud conference listing, and Meet transcript fetching vs. Drive transcript fetching. The only borderline pair is list_sessions and list_recent_conferences, but their descriptions clearly separate local storage from the Meet REST API.
All tools use a consistent meet_ prefix followed by verb_noun names in snake_case, such as check_auth, start_session, ingest_chunk, list_sessions, fetch_google_transcript, and export_minutes. There are no mixed casing styles, vague generic verbs, or unexpected naming deviations.
With 11 tools, the set is well-scoped for a Google Meet transcription and minutes-generation server. Each tool covers a meaningful step in the workflow without redundancy or unnecessary bloat.
The core workflow is well covered: auth, live ingestion, status, listing, transcript retrieval from both Meet and Drive, synthesis, and export. Minor gaps exist around session lifecycle managementβthere is no explicit stop/end session, delete session, or raw transcript exportβbut agents can work around these by using synthesize and export.
Maintenance
Related MCP Connectors
Your AI agent joins Google Meet calls, talks only from what you allowed, and shows its sources.
Meeting bots for Zoom, Google Meet and Teams: record, transcribe, summarize, run voice agents.
Meeting bot and transcripts for Google Meet, Teams and Zoom. Live or after, speakers labelled.
Google Meet meeting transcripts, summaries, and action items, plus a notetaker bot you can send.
Related MCP Servers
- AlicenseBqualityDmaintenanceA Model Context Protocol server that enables AI agents to join and interact with online meetings (Zoom and Google Meet), capturing transcripts and recordings to generate meeting summaries.310MIT
- AlicenseNot gradedqualityDmaintenanceEnables efficient analysis of recorded meetings by transcribing audio, extracting only non-people frames (e.g., slides), and associating them with timestamps for compact LLM input.MIT
- AlicenseNot gradedqualityCmaintenanceLocal-first meeting capture and transcription for Claude Code. Records audio from meeting apps, transcribes locally with whisper.cpp, and produces structured notes via Claude.1Apache 2.0
- FlicenseBqualityCmaintenanceProvides live meeting context to an AI assistant during Google Meet or Zoom calls, enabling real-time transcript reading, decision tracking, and actionable advice in a side panel.132-