AI-powered meeting transcript management and querying system. Turns your Zoom/Google Meet/Teams meetings into a searchable, queryable knowledge base.
Version: 0.3.0
- Automatic Sync: Pulls meeting recordings and transcripts from Recall.ai
- Smart Search: Semantic search across all your meeting transcripts
- Natural Language Q&A: Ask questions about your meetings in plain English
- Meeting Summaries: Auto-generated summaries with key decisions and action items
- Action Item Tracking: Extract and track action items across meetings
- Participant Filtering: Filter searches and queries by speaker/participant
- Background Sync: Optional daemon for automatic meeting syncing
- Claude Code Integration: Use
/meetingscommands directly in Claude Code
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Recall.ai API │────▶│ Sync Pipeline │────▶│ Local Storage │
│ (recordings) │ │ (chunking, │ │ SQLite + │
└─────────────────┘ │ embeddings) │ │ LanceDB │
└──────────────────┘ └─────────────────┘
│
┌──────────────────┐ │
│ Claude Code │◀───────────┘
│ /meetings skill │
└──────────────────┘
- Python 3.10+ (3.11+ recommended)
- API Keys:
- Recall.ai (meeting recording/transcription)
- OpenAI (embeddings)
- Anthropic (optional, for AI summaries and enrichment)
The easiest way to install is using the automated setup script:
# Clone or download the project
cd /path/to/MeetingsMCP
# Run the setup script
python setup.pyThe setup script will:
- Create a Python virtual environment
- Install all dependencies
- Guide you through API key configuration
- Verify everything is working
# Navigate to project directory
cd C:\path\to\MeetingsMCP
# Create virtual environment
python -m venv .venv
# Activate virtual environment
.venv\Scripts\activate
# Install dependencies
pip install -e .
# Or if you prefer requirements.txt
pip install -r requirements.txt# Navigate to project directory
cd /path/to/MeetingsMCP
# Create virtual environment
python3 -m venv .venv
# Activate virtual environment
source .venv/bin/activate
# Install dependencies
pip install -e .
# Or if you prefer requirements.txt
pip install -r requirements.txt-
Create environment file:
cp .env.example .env
-
Edit
.envwith your API keys:# Required RECALL_API_KEY=your_recall_api_key RECALL_REGION=us-east-1 # Options: us-east-1, us-west-2, eu-central-1, ap-northeast-1 OPENAI_API_KEY=your_openai_api_key # For embeddings # Optional (for AI summaries and enrichment) ANTHROPIC_API_KEY=your_anthropic_api_key
-
Verify configuration:
python setup.py --check # Or via skill: python skill/run.py setup
- Create an account at recall.ai
- Get your API key from the dashboard
- Connect your calendar for automatic meeting recording (optional)
- Configure webhooks for real-time sync (optional)
# Activate virtual environment first
source .venv/bin/activate # macOS/Linux
.venv\Scripts\activate # Windows
# Sync meetings from Recall.ai
python meetings.py sync
python meetings.py sync --since 2025-01-01
# Search transcripts
python meetings.py search "pricing discussion"
python meetings.py search "roadmap" --date "this week"
python meetings.py search "budget" --participant "Sarah"
# Ask questions
python meetings.py ask "What did we decide about Q2?"
python meetings.py ask "What did Kyle say about the pilot?" --participant "Kyle"
# Generate summaries
python meetings.py summary "this week"
python meetings.py summary "January" --focus "product decisions"
python meetings.py summary "last week" --participant "John"
# List meetings
python meetings.py list
python meetings.py list --date "last 7 days" --platform zoom
python meetings.py list --participant "Sarah"
# View action items
python meetings.py actions
python meetings.py actions --assigned "John" --date "this week"
# Find decisions
python meetings.py decisions
python meetings.py decisions --topic "budget" --date "January"
# List all participants
python meetings.py participants
# Show meeting details
python meetings.py show <meeting_id>
# Statistics
python meetings.py stats-
Set up a local marketplace (one-time setup):
# Create marketplace directory mkdir -p ~/.claude/plugins/marketplaces/local/.claude-plugin mkdir -p ~/.claude/plugins/marketplaces/local/plugins # Create marketplace.json cat > ~/.claude/plugins/marketplaces/local/.claude-plugin/marketplace.json << 'EOF' { "$schema": "https://anthropic.com/claude-code/marketplace.schema.json", "name": "local", "description": "Local plugins", "owner": { "name": "Your Name", "email": "your@email.com" }, "plugins": [ { "name": "meetings", "description": "AI-powered meeting transcript management", "version": "0.3.0", "source": "./plugins/meetings", "category": "productivity" } ] } EOF # Symlink the MeetingsMCP project ln -s /path/to/MeetingsMCP ~/.claude/plugins/marketplaces/local/plugins/meetings # Register the marketplace with Claude Code claude plugin marketplace add local ~/.claude/plugins/marketplaces/local # Install the plugin claude plugin install meetings@local
-
Restart Claude Code to load the plugin.
-
Use the skill:
/meetings sync /meetings search "budget discussion" /meetings ask "What were the key decisions from last week?" /meetings summary "this week" /meetings actions /meetings list /meetings stats /meetings participants
Set up automatic meeting syncing in the background:
python skill/run.py auto-syncThis will guide you through setting up:
- Linux/macOS: A systemd user service or launchd agent
- Windows: A Task Scheduler task
The daemon runs every 30 minutes (configurable) and syncs new meetings automatically.
# Check daemon status
python -c "from src.daemon import MeetingSyncDaemon; d = MeetingSyncDaemon(); print(d.status())"
# Start manually (runs in background)
python -c "from src.daemon import MeetingSyncDaemon; MeetingSyncDaemon().start()"
# Stop
python -c "from src.daemon import MeetingSyncDaemon; MeetingSyncDaemon().stop()"The following natural language date filters are supported:
| Filter | Description |
|---|---|
today |
Today only |
yesterday |
Yesterday only |
this week |
Monday to today |
last week |
Previous Monday to Sunday |
this month |
First of month to today |
last month |
Previous month |
last N days |
Last N days (e.g., "last 7 days") |
YYYY-MM-DD |
Specific date |
January, Feb, etc. |
Specific month |
Filter by participant/speaker in search, ask, and summary commands:
# Search what a specific person said
/meetings search "roadmap" --participant "Kyle"
# Ask about what someone said
/meetings ask "What did Owen say about the pilot?" --participant "Owen"
# Summarize a person's contributions
/meetings summary "last week" --participant "Sarah"
# List meetings with a participant
/meetings list --participant "John"Participant matching is case-insensitive and supports partial names.
MeetingsMCP/
├── src/
│ ├── config.py # Configuration management
│ ├── recall_client.py # Recall.ai API client
│ ├── cli.py # Command-line interface
│ ├── daemon.py # Background sync daemon
│ ├── logging_config.py # Centralized logging
│ ├── db/
│ │ ├── sqlite_store.py # Meeting metadata storage (with transaction support)
│ │ └── vector_store.py # LanceDB vector storage
│ ├── pipeline/
│ │ ├── sync.py # Sync orchestrator
│ │ ├── chunker.py # Transcript chunking
│ │ ├── embeddings.py # Embedding generation
│ │ └── enricher.py # AI enrichment (with retry logic)
│ ├── query/
│ │ ├── search.py # Search functionality
│ │ └── rag.py # RAG Q&A engine
│ └── utils/
│ └── retry.py # Retry decorator with exponential backoff
├── skill/
│ ├── skill.json # Skill definition
│ ├── run.py # Skill runner
│ └── handlers/ # Command handlers
├── data/
│ ├── meetings.db # SQLite database
│ ├── vectors/ # LanceDB storage
│ └── transcripts/ # Raw transcript JSONs
├── tests/ # Test suite (103 tests)
├── .env # Environment variables (create from .env.example)
├── pyproject.toml # Project dependencies
├── setup.py # Automated setup script
└── meetings.py # Main entry point
Logs are written to ~/.meetingsmcp/logs/ (or %USERPROFILE%\.meetingsmcp\logs\ on Windows):
meetingsmcp.log- Main application log- Logs rotate daily, keeping 7 days of history
Set log level via environment variable:
export MAXIMUMPM_LOG_LEVEL=DEBUG # Options: DEBUG, INFO, WARNING, ERRORFor ~6 hours of meetings per day, 20 days per month:
| Service | Cost |
|---|---|
| Recall.ai recording | ~$60/mo |
| Recall.ai transcription | ~$18/mo |
| OpenAI embeddings | ~$2/mo |
| Total | ~$80/mo |
Make sure you've created a .env file with your Recall API key:
cp .env.example .env
# Edit .env with your API keys- Check that you have completed recordings in Recall.ai
- Run sync to pull new meetings:
python meetings.py sync - Verify your Recall region matches your account
Ensure your OpenAI API key is valid and has credits available.
Make sure Python is in your PATH. You may need to use py instead of python:
py -m venv .venv
.venv\Scripts\activate
py -m pip install -e .If you get an execution policy error, run PowerShell as Administrator and execute:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUserMake sure you have write permissions to the project directory:
chmod -R u+w /path/to/MeetingsMCPThese packages have native dependencies. Try:
# On Ubuntu/Debian
sudo apt-get install build-essential
# On macOS
xcode-select --install
# On Windows, ensure Visual C++ Build Tools are installed
# Download from: https://visualstudio.microsoft.com/visual-cpp-build-tools/- Verify the plugin is installed:
claude plugin list - Ensure the symlink is correct:
ls -la ~/.claude/plugins/marketplaces/local/plugins/meetings - Restart Claude Code after installing
- Check that the virtual environment has all dependencies installed
source .venv/bin/activate
pytest tests/ -v# Format code
ruff format .
# Check linting
ruff check .MIT