Meeting Chief Lite
Minimal meeting transcript sync and search MCP. Downloads meetings from Otter.ai, stores them in SQLite, and provides semantic search via MCP tools.
Features
- Otter.ai Sync: Download meeting transcripts automatically
- Semantic Search: Find relevant transcript chunks using embeddings
- Keyword Search: Fallback for exact text matching
- MCP Tools: 3 focused tools for Claude/Cursor integration
Tools
| Tool | Description |
|---|---|
meetings | List, get, and browse meeting transcripts |
search | Semantic and keyword search across transcripts |
status | System health, sync status, and management |
Quick Start
1. Configure Environment
cp .env.example .env
# Edit .env with your credentials:
# - OTTER_EMAIL
# - OTTER_PASSWORD
# - OPENROUTER_API_KEY
2. Run with Docker
# Build and run
docker compose up -d
# Or run directly
docker run -it \
-e OTTER_EMAIL=your@email.com \
-e OTTER_PASSWORD=yourpassword \
-e OPENROUTER_API_KEY=sk-or-v1-xxx \
-v meeting-chief-data:/data \
ghcr.io/smcdonnell7/meeting-chief-lite
3. Configure MCP Client
Cursor (~/.cursor/mcp.json):
{
"mcpServers": {
"meeting-chief-lite": {
"command": "docker",
"args": ["run", "-i", "--rm",
"-e", "OTTER_EMAIL",
"-e", "OTTER_PASSWORD",
"-e", "OPENROUTER_API_KEY",
"-v", "meeting-chief-data:/data",
"ghcr.io/smcdonnell7/meeting-chief-lite"
]
}
}
}
Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"meeting-chief-lite": {
"command": "docker",
"args": ["run", "-i", "--rm",
"-e", "OTTER_EMAIL=your@email.com",
"-e", "OTTER_PASSWORD=yourpassword",
"-e", "OPENROUTER_API_KEY=sk-or-v1-xxx",
"-v", "meeting-chief-data:/data",
"ghcr.io/smcdonnell7/meeting-chief-lite"
]
}
}
}
Usage Examples
# List recent meetings
meetings operation:list limit:10
# Get specific meeting
meetings operation:get id:meeting_123
# Search transcripts
search query:"API migration" mode:semantic
# Search with date filter
search query:"budget" after:2026-01-01
# Check system status
status operation:health
# Sync from Otter.ai
status operation:run_sync sync_days:30
# Generate embeddings for new meetings
status operation:generate_embeddings
Database
SQLite database with 7 tables:
meetings- Meeting metadata and transcriptstranscript_chunks- Parsed transcript segmentstranscript_vectors- Embeddings for semantic searchembedding_jobs- Embedding generation queuesync_runs- Sync audit logspeakers- People rosterapp_settings- Configuration
Development
# Install dependencies
npm install
# Build
npm run build
# Run locally
npm start
License
MIT