Skip to content

MattGaiser/meetingsmcp

Repository files navigation

MeetingsMCP

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

Features

  • 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 /meetings commands directly in Claude Code

Architecture

┌─────────────────┐     ┌──────────────────┐     ┌─────────────────┐
│  Recall.ai API  │────▶│  Sync Pipeline   │────▶│  Local Storage  │
│  (recordings)   │     │  (chunking,      │     │  SQLite +       │
└─────────────────┘     │   embeddings)    │     │  LanceDB        │
                        └──────────────────┘     └─────────────────┘
                                                        │
                        ┌──────────────────┐            │
                        │  Claude Code     │◀───────────┘
                        │  /meetings skill │
                        └──────────────────┘

Requirements

  • Python 3.10+ (3.11+ recommended)
  • API Keys:
    • Recall.ai (meeting recording/transcription)
    • OpenAI (embeddings)
    • Anthropic (optional, for AI summaries and enrichment)

Installation

Quick Setup (All Platforms)

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.py

The setup script will:

  1. Create a Python virtual environment
  2. Install all dependencies
  3. Guide you through API key configuration
  4. Verify everything is working

Manual Installation

Windows

# 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

macOS / Linux

# 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

Configuration

  1. Create environment file:

    cp .env.example .env
  2. Edit .env with 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
  3. Verify configuration:

    python setup.py --check
    # Or via skill:
    python skill/run.py setup

Setting Up Recall.ai

  1. Create an account at recall.ai
  2. Get your API key from the dashboard
  3. Connect your calendar for automatic meeting recording (optional)
  4. Configure webhooks for real-time sync (optional)

Usage

CLI Commands

# 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

Claude Code Integration

Installing as a Claude Code Plugin

  1. 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
  2. Restart Claude Code to load the plugin.

  3. 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
    

Background Auto-Sync

Set up automatic meeting syncing in the background:

python skill/run.py auto-sync

This 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.

Manual Daemon Control

# 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()"

Date Filters

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

Participant Filters

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.

Project Structure

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

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, ERROR

Cost Estimate

For ~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

Troubleshooting

"RECALL_API_KEY missing"

Make sure you've created a .env file with your Recall API key:

cp .env.example .env
# Edit .env with your API keys

"No meetings found"

  1. Check that you have completed recordings in Recall.ai
  2. Run sync to pull new meetings: python meetings.py sync
  3. Verify your Recall region matches your account

Embeddings failing

Ensure your OpenAI API key is valid and has credits available.

Windows: "python" not found

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 .

Windows: Virtual environment won't activate

If you get an execution policy error, run PowerShell as Administrator and execute:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Permission errors on Linux/macOS

Make sure you have write permissions to the project directory:

chmod -R u+w /path/to/MeetingsMCP

LanceDB/Tantivy installation fails

These 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/

Plugin not loading in Claude Code

  1. Verify the plugin is installed: claude plugin list
  2. Ensure the symlink is correct: ls -la ~/.claude/plugins/marketplaces/local/plugins/meetings
  3. Restart Claude Code after installing
  4. Check that the virtual environment has all dependencies installed

Development

Running Tests

source .venv/bin/activate
pytest tests/ -v

Code Style

# Format code
ruff format .

# Check linting
ruff check .

License

MIT

About

AI-powered meeting transcript management. A Claude Code plugin for syncing meetings from Recall.ai, semantic search, summaries, and action item tracking.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages