|
| 1 | +# Meet Plugin |
| 2 | + |
| 3 | +Google Calendar integration for Claude Code, providing AI-powered tools to find meeting times and schedule events seamlessly. |
| 4 | + |
| 5 | +## Features |
| 6 | + |
| 7 | +- 🔍 **Smart Time Finding** - Find overlapping free time across multiple participants' calendars |
| 8 | +- 📅 **Natural Language Event Creation** - Create calendar events using intuitive natural language descriptions |
| 9 | +- 🌐 **Timezone Handling** - Automatic timezone detection and conversion for global teams |
| 10 | +- 🤖 **Google Meet Integration** - Automatically adds Google Meet links to virtual meetings |
| 11 | +- ⚡ **Intelligent Parsing** - Understands relative dates, time expressions, and participant lists |
| 12 | +- 🎯 **Business Hours Optimization** - Prioritizes business hours and excludes weekends by default |
| 13 | + |
| 14 | +## Prerequisites |
| 15 | + |
| 16 | +- Claude Code installed |
| 17 | +- Google Calendar API access configured |
| 18 | +- Google Calendar MCP server(bundled) |
| 19 | + |
| 20 | +## Setup |
| 21 | + |
| 22 | +### 1. Google Cloud Setup |
| 23 | + |
| 24 | +1. Go to the [Google Cloud Console](https://console.cloud.google.com) |
| 25 | +2. Create a new project or select an existing one |
| 26 | +3. Enable the [Google Calendar API](https://console.cloud.google.com/apis/library/calendar-json.googleapis.com) for your project. Ensure that the right project is selected from the top bar before enabling the API |
| 27 | +4. Create OAuth 2.0 credentials: |
| 28 | + - Go to **Credentials** |
| 29 | + - Click **"Create Credentials"** > **"OAuth client ID"** |
| 30 | + - Choose **"User data"** for the type of data that the app will be accessing |
| 31 | + - Add your app name and contact information |
| 32 | + - Add the following scopes: |
| 33 | + - `https://www.googleapis.com/auth/calendar.events` |
| 34 | + - `https://www.googleapis.com/auth/calendar` |
| 35 | + - Select **"Desktop app"** as the application type (Important!) |
| 36 | + - Download the auth key |
| 37 | + |
| 38 | +### 2. Environment Configuration |
| 39 | + |
| 40 | +After completing previous step, you must specify the credentials file path using the `GOOGLE_OAUTH_CREDENTIALS` environment variable prior to starting Claude Code, this tells the `google-calendar-mcp` MCP server where to look for auth keys. |
| 41 | + |
| 42 | +```bash |
| 43 | +export GOOGLE_OAUTH_CREDENTIALS=~/.config/client_secret_xxxxxxxxx.json |
| 44 | +claude |
| 45 | +``` |
| 46 | + |
| 47 | +## Installation |
| 48 | + |
| 49 | +```bash |
| 50 | +# Add the marketplace (one-time setup) |
| 51 | +/plugin marketplace add openshift-eng/ai-helpers |
| 52 | + |
| 53 | +# Install the plugin |
| 54 | +/plugin install meet@ai-helpers |
| 55 | +``` |
| 56 | + |
| 57 | +## Available Commands |
| 58 | + |
| 59 | +### `/meet:find-time` - Find Overlapping Free Time |
| 60 | + |
| 61 | +Find overlapping available time with multiple participants by analyzing calendar availability and suggesting optimal meeting times. |
| 62 | + |
| 63 | +**Usage:** |
| 64 | +```bash |
| 65 | +# Basic usage with two people |
| 66 | + |
| 67 | + |
| 68 | +# Including custom date range |
| 69 | + |
| 70 | + |
| 71 | +# Multiple participants with longer timeline |
| 72 | + |
| 73 | +``` |
| 74 | + |
| 75 | +**Features:** |
| 76 | +- Analyzes free/busy information across all participants |
| 77 | +- Filters out blocks shorter than requested duration |
| 78 | +- Excludes weekends unless specifically requested |
| 79 | +- Prioritizes business hours |
| 80 | +- Provides alternative suggestions if no perfect matches found |
| 81 | +- Displays times in user's primary calendar timezone |
| 82 | + |
| 83 | +See [commands/find-time.md](commands/find-time.md) for full documentation. |
| 84 | + |
| 85 | +--- |
| 86 | + |
| 87 | +### `/meet:create-event` - Create Calendar Events |
| 88 | + |
| 89 | +Create new calendar events using natural language descriptions with automatic Google Meet integration and intelligent parsing. |
| 90 | + |
| 91 | +**Usage:** |
| 92 | +```bash |
| 93 | +# Simple meeting |
| 94 | +/meet:create-event Team standup tomorrow at 9am for 30 minutes |
| 95 | + |
| 96 | +# Meeting with specific attendees |
| 97 | +/meet:create-event Project review Friday 2pm with [email protected] and [email protected] |
| 98 | + |
| 99 | +# Detailed planning session |
| 100 | +/meet:create-event Quarterly planning session next Monday 10am-12pm with the whole engineering team |
| 101 | + |
| 102 | +# Quick 1:1 meeting |
| 103 | +/meet:create-event Coffee chat with Sarah tomorrow 3pm for 45 minutes |
| 104 | + |
| 105 | +# All-hands meeting |
| 106 | +/meet:create-event Monthly all-hands meeting first Friday of next month 2-3pm with leadership team |
| 107 | +``` |
| 108 | + |
| 109 | +**Features:** |
| 110 | +- Natural language parsing for dates, times, and attendees |
| 111 | +- Automatic Google Meet link generation |
| 112 | +- Intelligent defaults (1-hour duration, virtual location) |
| 113 | +- Handles relative dates ("tomorrow", "next Friday", "in 2 hours") |
| 114 | +- Timezone conversion and validation |
| 115 | +- Email validation for attendees |
| 116 | +- Graceful error handling with helpful suggestions |
| 117 | + |
| 118 | +See [commands/create-event.md](commands/create-event.md) for full documentation. |
| 119 | + |
| 120 | +--- |
| 121 | + |
| 122 | +## Workflow Examples |
| 123 | + |
| 124 | +### Planning a Team Meeting |
| 125 | + |
| 126 | +1. **Find available time:** |
| 127 | + ```bash |
| 128 | + |
| 129 | + ``` |
| 130 | + |
| 131 | +2. **Create the meeting:** |
| 132 | + ```bash |
| 133 | + |
| 134 | + ``` |
| 135 | + |
| 136 | +### Scheduling a Quick Sync |
| 137 | + |
| 138 | +```bash |
| 139 | +# One command to create immediate meeting |
| 140 | +/meet:create-event Quick sync with John tomorrow 11am for 15 minutes |
| 141 | +``` |
| 142 | + |
| 143 | +### Cross-timezone Meeting |
| 144 | + |
| 145 | +```bash |
| 146 | +# Find time considering global participants |
| 147 | + |
| 148 | + |
| 149 | +# Create with specific timezone considerations |
| 150 | +/meet:create-event Global standup next Monday 8am PST with [email protected], [email protected], [email protected] |
| 151 | +``` |
| 152 | + |
| 153 | +## Troubleshooting |
| 154 | + |
| 155 | +### "Could not access calendar for {email}" |
| 156 | +- Verify the email address is correct |
| 157 | +- Ensure the user has shared their calendar or given appropriate permissions |
| 158 | +- Check that your Google Calendar API credentials have the necessary scopes |
| 159 | + |
| 160 | +### "No overlapping free time found" |
| 161 | +- Try a shorter meeting duration |
| 162 | +- Expand the date range (more days ahead) |
| 163 | +- Consider including weekend options |
| 164 | +- Check if participants have conflicting recurring meetings |
| 165 | + |
| 166 | +### OAuth/Authentication Issues |
| 167 | +- Verify `GOOGLE_OAUTH_CREDENTIALS` environment variable is set correctly |
| 168 | +- Ensure the credentials file exists and is readable |
| 169 | +- Check that the Google Calendar API is enabled in your Google Cloud project |
| 170 | +- Verify OAuth scopes include calendar access |
| 171 | + |
| 172 | +### MCP Server Issues |
| 173 | +- Ensure `@cocal/google-calendar-mcp` is available via npm |
| 174 | +- Check that the MCP server is properly configured |
| 175 | +- Verify network connectivity for API calls |
| 176 | + |
| 177 | +For command-specific troubleshooting, see the individual command documentation. |
| 178 | + |
| 179 | +## Security and Privacy |
| 180 | + |
| 181 | +- **Credentials**: OAuth credentials are stored locally and never transmitted to AI Helpers |
| 182 | +- **Calendar Data**: Free/busy information is queried in real-time and not stored |
| 183 | +- **Privacy**: Only calendar availability is accessed, not detailed event content |
| 184 | +- **Scope**: The plugin only requests minimal necessary Calendar API permissions |
| 185 | + |
0 commit comments