# 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
```bash
cp .env.example .env
# Edit .env with your credentials:
# - OTTER_EMAIL
# - OTTER_PASSWORD
# - OPENROUTER_API_KEY
```
### 2. Run with Docker
```bash
# 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`):**
```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`):**
```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 transcripts
- `transcript_chunks` - Parsed transcript segments
- `transcript_vectors` - Embeddings for semantic search
- `embedding_jobs` - Embedding generation queue
- `sync_runs` - Sync audit log
- `speakers` - People roster
- `app_settings` - Configuration
## Development
```bash
# Install dependencies
npm install
# Build
npm run build
# Run locally
npm start
```
## License
MIT