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 "Install 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-mcpSummarize 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: ChatterBox MCP Server
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, but the verb 'Checks' clearly conveys a read-only inspection with no mutating side effects. It also enumerates the specific aspects inspected: status, tokens, credentials, and API scopes. This is sufficient behavioral disclosure for a simple status-checking tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every element earns its place by specifying exactly what the tool checks.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters, an output schema, and a simple read-only purpose, this description provides adequate context for an agent to select and invoke it. The only gap is explicit guidance about when to prefer this over related auth tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema coverage is 100%, so there is no parameter information for the description to add. The description appropriately omits parameter details because none exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Checks') and identifies a clear resource: Google OAuth2 authentication status, tokens, credentials, and API scopes. This distinguishes it from its sibling meet_setup_auth, which is about establishing authentication rather than checking it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool should be used when an agent needs to verify the current OAuth2 authentication state before proceeding with Google Meet operations. However, it does not explicitly state when to use it versus alternatives like meet_setup_auth or provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | markdown | |
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose the filesystem side effect (writes local documents to the exports directory) and adds useful format traits (HTML is print/PDF ready, JSON is structured). However, it omits what happens when a session has no synthesized minutes, overwrite behavior, and auth prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with the verb 'Exports' leading. Every clause earns its place: resource, three formats with useful traits, and the destination. There is no repetition of schema fields or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with an output schema covering return values, the description covers the essentials: what is exported, available formats, and where files land. Remaining gaps are moderate given zero annotations and schema descriptions - the unstated prerequisite of meet_synthesize_meeting, exact format string values, and auth/overwrite behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It adds real meaning to the format parameter by enumerating Markdown/.md, HTML/.html, and JSON/.json, and it scopes session_id to a session whose minutes were synthesized. Yet it never gives the exact accepted string values for format or defines the session lifecycle relationship beyond the adjective 'synthesized.'
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource combination ('Exports the synthesized meeting minutes') plus concrete output formats and a destination. Among the siblings, none perform exports, so this tool is inherently distinguished from meet_synthesize_meeting (which produces minutes) and the fetch/list tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied rather than explicit: calling the minutes 'synthesized' signals the prerequisite of meet_synthesize_meeting, but the description never names the sibling, states 'run after synthesis completes,' or mentions auth requirements via meet_check_auth. No exclusions or alternative routing are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meet_fetch_drive_transcriptB
Finds and reads Google Meet transcript documents auto-saved in Google Drive, and parses them into a durable session.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | ||
| file_id_or_query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses a side effect ('parses them into a durable session') but does not state authentication prerequisites, whether a session is created or updated, or the lifecycle impact. The read-then-persist behavior is only partially transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence that leads with the main action and resource. No filler; every clause adds information about the tool's behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite an output schema, the description omits prerequisites (auth/session existence) and parameter semantics, and only vaguely explains the 'durable session' side effect. For a tool with no annotations and a low-coverage schema, this is not complete enough to invoke reliably in all cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must clarify the two parameters. It does not explain how file_id_or_query behaves when it is a query versus an ID, and the optional title is left entirely ambiguous. The word 'Finds' provides only a weak hint.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a specific verb sequence ('finds and reads... parses') and a concrete resource: Google Meet transcripts auto-saved in Google Drive. It is clear enough to distinguish from siblings like meet_fetch_google_transcript, though it does not explicitly name the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The source ('auto-saved in Google Drive') and destination ('durable session') imply when to use it, but the description gives no explicit guidance on when not to use it or what alternative to choose, such as meet_fetch_google_transcript or meet_start_session.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | ||
| conference_record_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It does disclose the external API source, participant-name resolution, and the non-obvious side effect of creating a local durable session. However, it does not mention authentication prerequisites, idempotency, or failure behavior, which are relevant for an external API call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with no filler, front-loaded with the main action and followed by useful secondary behaviors. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main input, source, resolution behavior, and side effect, and the output schema makes return values unnecessary to describe. Gaps remain: no stated requirement for prior authentication/setup and no semantics for the optional title parameter, leaving the tool slightly incomplete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It gives some meaning to conference_record_id by saying 'for a given conference record,' but it entirely omits the optional title parameter, leaving its purpose and default behavior unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (fetches full transcript entries), a specific source (Google Meet API v2), and a target input (a given conference record). It also clearly distinguishes itself from the Drive-transcript sibling by naming the Meet API source.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when a conference_record_id is available and full transcript entries plus participant names are needed. However, it does not explicitly mention alternatives such as meet_fetch_drive_transcript or any conditions for avoiding this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meet_get_live_statusB
Retrieves live status of a meeting: duration, word count, utterance count, speaker breakdown, and recent utterances.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | ||
| recent_lines | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses read-only intent via 'Retrieves' and lists response contents, but omits auth expectations (significant given meet_check_auth/meet_setup_auth siblings), the precondition that the session must be active/live, and error behavior for stale or nonexistent sessions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One efficient sentence with the verb and resource front-loaded, followed by a tight enumeration of response fields. No filler; every element names a distinct piece of returned data and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values are covered elsewhere and the field enumeration is a helpful bonus. The tool is low-complexity (2 params, 1 required), but the description fails to state the live-session prerequisite and session_id provenance, both of which an agent needs to call it correctly without erroring.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate but only weakly does. 'Recent utterances' loosely hints at recent_lines' purpose, yet session_id provenance is never explained ā an agent cannot tell it should come from meet_start_session or meet_list_sessions ā and the mapping from recent_lines to the returned utterances is only implicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('Retrieves'), clear resource ('live status of a meeting'), and an explicit enumeration of the returned data (duration, word count, utterance count, speaker breakdown, recent utterances). The 'live status' framing distinguishes it from the transcript-fetching siblings (meet_fetch_google_transcript, meet_fetch_drive_transcript) and session-management tools without needing to open their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The 'live' qualifier implies it is meant for in-progress meetings, but there is no explicit statement of when to prefer it over transcript-fetching or session-list tools, and no mention that a session must already exist before calling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meet_ingest_chunkB
Ingests a live spoken line/chunk into an active session in real-time. Automatically flushes to disk immediately.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| speaker | Yes | ||
| session_id | Yes | ||
| relative_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does add one meaningful behavior, 'automatically flushes to disk immediately', indicating persistence, but it omits critical operational details such as authentication requirements, failure behavior when no active session exists, whether chunks are appended, and whether calls are idempotent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exactly two sentences with no filler. It front-loads the primary purpose and then adds a concise behavioral detail about immediate disk flushing; every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a write operation with no annotations and 0% parameter documentation, the description is too thin to fully prepare an agent. It does not explain how to supply relative_seconds, what speaker values should look like, whether an active session must already exist, or what happens if the session is invalid.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for undocumented parameters. It indirectly maps 'spoken line/chunk' to the text parameter and 'active session' to session_id, but it never explains the speaker or relative_seconds parameters, their formats, or semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('ingests'), a specific resource ('live spoken line/chunk'), and a clear context ('active session', 'real-time'), which makes the tool's purpose unmistakable. It is distinguishable from sibling tools like fetch_google_transcript or export_minutes by its ingestion focus, though it does not explicitly name those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'live spoken line/chunk into an active session in real-time' implies it should be used during an ongoing meeting, when streaming spoken content into the session. However, it gives no explicit guidance on when to prefer this tool over alternatives, nor does it state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meet_list_recent_conferencesC
Queries Google Meet REST API v2 for recent conference records.
| Name | Required | Description | Default |
|---|---|---|---|
| page_size | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states that the tool queries an API, implying a read operation, but it does not mention auth requirements, pagination behavior, rate limits, or any other side effects. This is minimal transparency for an API-backed tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that clearly states the action, the API version, and the object. It is front-loaded and contains no filler, making it appropriately concise for a simple list operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, has an output schema, and only one optional parameter, so the description is mostly sufficient for basic invocation. However, it lacks any mention of auth prerequisites or when to choose this over related Meet tools, leaving some contextual gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not compensate by explaining the page_size parameter. The parameter is simple and self-explanatory from its name and default value, but the description adds no semantic meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Queries') and a specific resource ('Google Meet REST API v2') with a clear object ('recent conference records'). It is not a tautology, but it does not distinguish itself from the sibling tool meet_list_sessions, so it stops short of a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives like meet_list_sessions or meet_fetch_google_transcript. The description gives no context about prerequisites such as authentication being set up or when a caller should choose this over a sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meet_list_sessionsC
Lists all locally stored meeting sessions with metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden. It does disclose a read-only operation and local scope, but it does not explain how the 'limit' parameter interacts with the claim of listing 'all' sessions, nor does it mention auth requirements or session-state filtering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It efficiently conveys the core action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-optional-parameter tool with an output schema, the description is minimally adequate. However, it is incomplete in distinguishing this tool from meet_list_recent_conferences and in clarifying the behavior of the limit parameter relative to 'all' sessions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description never mentions the only parameter, limit. While 'limit' is fairly self-explanatory from the schema title and default value, the description's use of 'all' creates ambiguity about whether the limit actually truncates the result set.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Lists') and clearly identifies the resource: locally stored meeting sessions with metadata. It is understandable on its own, but it does not differentiate itself from the sibling tool meet_list_recent_conferences, which may appear similar to an agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as meet_list_recent_conferences. The phrase 'locally stored' hints at a scope distinction, but no explicit context, exclusions, or conditions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| open_browser | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations available, the description carries the disclosure burden and does so meaningfully: it explicitly says the tool initiates an OAuth flow, runs in the browser, authorizes three specific API scopes, and needs a credential file. It does not mention token persistence or blocking behavior, but the browser-flow framing is sufficiently transparent for the core operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence packs the action, scope, and prerequisite with no filler. The key behavior is front-loaded, and every phrase earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an interactive setup tool, the description covers the action, authorized scopes, browser behavior, and required credential file. Since an output schema exists, explaining return values is not the description's responsibility. The main missing context is a note about headless environments or open_browser=false, but the definition is otherwise nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the only parameter is open_browser. The description's 'in the browser' reinforces that parameter's meaning, but it does not explain the behavior when open_browser=false or why an agent would set it that way. For a single simple boolean, this partial compensation is adequate but not detailed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Initiates') and names the exact resource: the Google OAuth 2.0 flow, scoped to Meet, Drive, and Calendar access. This clearly distinguishes it from the sibling tools, none of which perform auth setup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a hard prerequisite: credentials.json from Google Cloud Console. It implies this is the setup step before other Meet tools, but it never explicitly says when to run it, when not to, or how it relates to meet_check_auth.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Cuį»c hį»p trį»±c tiįŗæp | |
| source | No | live_stream | |
| meeting_code | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden ā and it delivers meaningfully. It discloses durability, append-only disk buffering, a 3+ hour capacity, and the specific failure modes it prevents (memory exhaustion, data loss). It does not disclose idempotency, auth requirements, or what happens if called twice with the same meeting_code, but the core behavior is well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with the main action front-loaded and every clause earning its place. The durability guarantee and the 3+ hour claim are packed efficiently without filler or repetition of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values are handled, and the description covers core behavior well. However, with 0% parameter coverage, no annotations, and no positioning relative to siblings ā especially the auth tools and meet_ingest_chunk ā the agent lacks enough context to invoke this tool correctly within the larger meeting workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description mentions none of the three parameters (title, source, meeting_code). The unexplained defaults ā including the Vietnamese default 'Cuį»c hį»p trį»±c tiįŗæp' and source='live_stream' ā leave an agent without any basis for choosing parameter values or understanding what meeting_code is for.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ā 'Starts a new durable meeting session' ā with 'durable' and 'append-only disk buffering' adding discriminating detail. The action clearly contrasts with sibling tools that list, fetch, ingest, synthesize, or export, so an agent can tell them apart without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives, and no prerequisites are stated. Given siblings like meet_check_auth and meet_setup_auth, an agent is left to guess whether authentication must happen first. The tool's position in the session pipeline (start ā ingest ā synthesize ā export) is never indicated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does state the transformation ('synthesizes into a report') and lists the output sections, which tells the agent what to expect. However, it does not disclose whether the operation is read-only, requires authentication, is asynchronous, or has prerequisites like a completed/ingested session.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that leads with the core action and packs the output components into a list. The final clause about AI prompts adds non-obvious value. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a simple one-parameter schema and an output schema, so the description does not need to enumerate return values. However, it omits call preconditions: whether the session must be finished, ingested, or whether '3-hour+' is a hard requirement. Auth and status could have been clarified, leaving the agent to infer setup steps from sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one parameter (session_id) with no description, and schema coverage is 0%. The description references 'meeting session' twice, which connects session_id to a meeting session, but it does not specify where to obtain the ID (e.g., meet_list_sessions), its format, or any constraints. Some meaning is added, but not enough to fully compensate for zero schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Synthesizes') and resource ('a 3-hour+ meeting session'), and details the report components (Timeline Milestones, Decision Log, Action Items Matrix, Participant Analytics). This clearly differentiates it from sibling tools like meet_fetch_*_transcript and meet_export_minutes, which have different actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used when a comprehensive minutes report is needed from a long meeting session, but it does not provide explicit guidance on when to prefer it over meet_export_minutes, fetch transcripts, or other alternatives. No when-not conditions or alternative tool names are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
11 tool updates
v0.1.0- First observed
meet_check_auth - First observed
meet_export_minutes - First observed
meet_fetch_drive_transcript - First observed
meet_fetch_google_transcript - First observed
meet_get_live_status - First observed
meet_ingest_chunk - First observed
meet_list_recent_conferences - First observed
meet_list_sessions - First observed
meet_setup_auth - First observed
meet_start_session - First observed
meet_synthesize_meeting
TDQS
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
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
AI agents that join live Google Meet, Teams, and Zoom calls as speaking participants.
Search meetings, export summaries and transcripts, and manage recordings from any AI tool.
Search recordings, summarize meetings, create clips, and automate workflows from your AI assistant.
- MyGhostsOAuthapp.myghosts
Send AI bots to attend meetings on your behalf. Get recordings, transcripts, and summaries.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceThe Google Meet MCP Server enables AI agents to create, manage, and retrieve Google Meet meetings. Built on the Model Context Protocol, it exposes tools for scheduling, updating, and deleting meetings, making it easy to integrate Google Meet functionalities162MIT
- 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 gradedqualityBmaintenanceEnables AI coding agents to capture screen and voice recordings, extract timestamped frames, and receive structured Markdown reports with context for bug fixing and UI feedback.1218MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/DuongNAD/google-meet-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server