Skip to main content
Glama
README.md
# Daily Briefing MCP Server

An MCP (Model Context Protocol) server that aggregates calendar events, meeting summaries, action items, and travel information from multiple sources into personalized daily briefings.

## Features

- **Multi-Source Aggregation**: Combines data from Google Calendar, TripIt, Fireflies.ai, and other iCal feeds
- **Daily Briefings**: Generate comprehensive daily summaries with schedule, conflicts, and action items
- **Conflict Detection**: Automatically detects overlapping events and back-to-back meetings
- **Focus Time**: Identifies available time slots for deep work
- **Meeting Summaries**: Includes AI-generated summaries from Fireflies.ai meetings
- **Travel Alerts**: Highlights upcoming travel and related alerts
- **Multiple Output Formats**: Markdown, plain text, or JSON

## Quick Start

### 1. Configure Data Sources

```bash
# Google Calendar (iCal feed)
export BRIEFING_GOOGLE_CALENDAR_URL="https://calendar.google.com/calendar/ical/..."

# TripIt (iCal feed)
export BRIEFING_TRIPIT_ICAL_URL="https://www.tripit.com/feed/ical/private/..."

# Fireflies.ai (optional)
export BRIEFING_FIREFLIES_API_KEY="your-api-key"
```

### 2. Run the Server

```bash
# Install
pip install -e .

# Run
python -m daily_briefing
```

## Configuration

All configuration via environment variables with `BRIEFING_` prefix:

### Server Settings

| Variable | Description | Default |
|----------|-------------|---------|
| `BRIEFING_TRANSPORT` | Transport mode: `stdio` or `streamable-http` | `stdio` |
| `BRIEFING_HOST` | HTTP server host | `0.0.0.0` |
| `BRIEFING_PORT` | HTTP server port | `8003` |
| `BRIEFING_LOG_LEVEL` | Log level | `INFO` |
| `BRIEFING_TIMEZONE` | Timezone for scheduling | `America/New_York` |

### Calendar Sources

| Variable | Description |
|----------|-------------|
| `BRIEFING_GOOGLE_CALENDAR_URL` | Google Calendar iCal feed URL |
| `BRIEFING_GOOGLE_CALENDAR_NAME` | Display name for Google Calendar |
| `BRIEFING_GOOGLE_CALENDAR_ENABLED` | Enable Google Calendar (default: true) |
| `BRIEFING_TRIPIT_ICAL_URL` | TripIt private iCal feed URL |
| `BRIEFING_TRIPIT_ENABLED` | Enable TripIt (default: true) |
| `BRIEFING_ADDITIONAL_ICAL_URLS` | Comma-separated additional iCal URLs |
| `BRIEFING_ADDITIONAL_ICAL_NAMES` | Comma-separated names for additional sources |

### Fireflies.ai

| Variable | Description |
|----------|-------------|
| `BRIEFING_FIREFLIES_API_KEY` | Fireflies.ai API key |
| `BRIEFING_FIREFLIES_ENABLED` | Enable Fireflies (default: true) |

### Briefing Settings

| Variable | Description | Default |
|----------|-------------|---------|
| `BRIEFING_WORK_START_HOUR` | Work day start hour | `9` |
| `BRIEFING_WORK_END_HOUR` | Work day end hour | `17` |
| `BRIEFING_CONFLICT_BUFFER_MINUTES` | Min buffer between meetings | `15` |
| `BRIEFING_MEETING_LOOKBACK_DAYS` | Days to look back for meetings | `1` |
| `BRIEFING_TRAVEL_LOOKAHEAD_DAYS` | Days to look ahead for travel | `7` |

## Available Tools

| Tool | Description |
|------|-------------|
| `health_check` | Check server health and source connections |
| `get_daily_briefing` | Generate comprehensive daily briefing |
| `get_todays_schedule` | Get today's events and conflicts |
| `get_action_items` | Get pending action items from meetings |
| `get_recent_meetings` | Get summaries of recent meetings |
| `get_upcoming_travel` | Get upcoming travel information |
| `check_availability` | Find available time slots on a date |
| `get_week_overview` | Get overview of the upcoming week |

## Example Usage

### Claude Desktop Configuration

```json
{
  "mcpServers": {
    "daily-briefing": {
      "command": "python",
      "args": ["-m", "daily_briefing"],
      "env": {
        "BRIEFING_GOOGLE_CALENDAR_URL": "https://calendar.google.com/...",
        "BRIEFING_TRIPIT_ICAL_URL": "https://tripit.com/feed/...",
        "BRIEFING_FIREFLIES_API_KEY": "your-api-key"
      }
    }
  }
}
```

### Example Queries

```
"Give me my daily briefing"
"What's on my schedule today?"
"Do I have any scheduling conflicts?"
"What action items do I have from recent meetings?"
"When am I free for a 1-hour meeting today?"
"What does my week look like?"
"Any upcoming travel?"
```

### Sample Briefing Output

```markdown
# Daily Briefing - Wednesday, January 15, 2025

## Today's Schedule

- **09:00 AM - 09:30 AM** (30m)
  - Team Standup
- **02:00 PM - 03:00 PM** (60m)
  - Product Review
  - *Location:* Conference Room A

## Available Focus Time

- 09:30 AM - 02:00 PM (270m)

## Travel Alerts

✈️ Flight in 3 days: Flight to San Francisco

## Recent Meeting Summaries

### Sprint Planning
*January 14, 2025*

Team discussed sprint goals and assigned tasks.

**Action Items:**
- [ ] Review PR #123
- [ ] Update documentation

## Pending Action Items

- [ ] Review PR #123
  - *From: Sprint Planning*

## Today's Stats

| Metric | Value |
|--------|-------|
| Total Meetings | 2 |
| Meeting Time | 1.5 hours |
| Focus Time | 4.5 hours |
```

## Development

### Install Dependencies

```bash
pip install -e ".[dev]"
```

### Run Tests

```bash
pytest
```

### Run with Debug Logging

```bash
BRIEFING_LOG_LEVEL=DEBUG python -m daily_briefing
```

## Docker

```bash
# Build
docker build -t daily-briefing .

# Run
docker run \
  -e BRIEFING_GOOGLE_CALENDAR_URL="..." \
  -e BRIEFING_TRIPIT_ICAL_URL="..." \
  -p 8003:8003 \
  daily-briefing
```

## Kubernetes Deployment

```bash
helm install daily-briefing ./helm/daily-briefing \
  --set briefing.googleCalendar.url="YOUR_GOOGLE_CALENDAR_URL" \
  --set briefing.tripit.icalUrl="YOUR_TRIPIT_URL"
```

## Architecture

```
┌─────────────────────────────────────────────────────────────────┐
│                    Daily Briefing MCP Server                     │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────────────┐  │
│  │   Google     │  │   TripIt     │  │    Fireflies.ai      │  │
│  │   Calendar   │  │   (Travel)   │  │    (Meetings)        │  │
│  └──────┬───────┘  └──────┬───────┘  └──────┬───────────────┘  │
│         │                 │                  │                   │
│         └─────────────────┼──────────────────┘                   │
│                           │                                      │
│                    ┌──────▼───────┐                              │
│                    │  Aggregator  │                              │
│                    └──────┬───────┘                              │
│                           │                                      │
│         ┌─────────────────┼─────────────────┐                    │
│         │                 │                 │                    │
│   ┌─────▼─────┐    ┌─────▼─────┐    ┌─────▼─────┐              │
│   │  Conflict │    │   Free    │    │  Action   │              │
│   │ Detection │    │   Slots   │    │   Items   │              │
│   └───────────┘    └───────────┘    └───────────┘              │
│                           │                                      │
│                    ┌──────▼───────┐                              │
│                    │  Formatters  │                              │
│                    │ (MD/Text/JSON)│                              │
│                    └──────────────┘                              │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘
```

## License

MIT