en un clic
google-calendar-management
// Create, update, delete, and query Google Calendar events using gcallm CLI, MCP tools, or direct API calls.
// Create, update, delete, and query Google Calendar events using gcallm CLI, MCP tools, or direct API calls.
| name | Google Calendar Management |
| description | Create, update, delete, and query Google Calendar events using gcallm CLI, MCP tools, or direct API calls. |
Three access methods, in order of preference:
Best for creating events from natural language or file input.
# Direct text
gcallm "Meeting with Sarah tomorrow at 3pm"
# From file (preferred for multi-event)
cat /tmp/gcal/events.txt | gcallm
# From clipboard
gcallm
# From screenshot
gcallm -s "Add events from this screenshot"
# Ask questions
gcallm ask "What's on my calendar today?"
gcallm ask "Am I free Thursday afternoon?"
When the google-calendar MCP server is connected, these tools are available:
mcp__google-calendar__list-events # List events in a time range
mcp__google-calendar__search-events # Search by query string
mcp__google-calendar__create-event # Create event
mcp__google-calendar__update-event # Update event (supports recurring with modificationScope)
mcp__google-calendar__delete-event # Delete event
Use modificationScope to control which instances are affected:
all — update/delete the entire seriesthis — only this instancethisAndFollowing — this and all future instances| ID | Color |
|---|---|
| 1 | Lavender |
| 2 | Sage |
| 3 | Grape |
| 4 | Flamingo |
| 5 | Banana |
| 6 | Tangerine |
| 7 | Peacock |
| 8 | Graphite |
| 9 | Blueberry |
| 10 | Basil |
| 11 | Tomato (Red) |
When MCP tools are unavailable, use the REST API with stored OAuth tokens.
/Users/wz/.config/google-calendar-mcp/tokens.json
TOKEN=$(python3 -c "import json; print(json.load(open('/Users/wz/.config/google-calendar-mcp/tokens.json'))['normal']['access_token'])")
# List events
curl -s -H "Authorization: Bearer $TOKEN" \
"https://www.googleapis.com/calendar/v3/calendars/primary/events?timeMin=2026-01-01T00:00:00Z&timeMax=2026-12-31T23:59:59Z&singleEvents=true"
# Search events
curl -s -H "Authorization: Bearer $TOKEN" \
"https://www.googleapis.com/calendar/v3/calendars/primary/events?q=SEARCH_TERM&timeMin=...&timeMax=...&singleEvents=true"
# Create event
curl -s -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
"https://www.googleapis.com/calendar/v3/calendars/primary/events" \
-d '{"summary":"Event Title","location":"Place","colorId":"11","start":{"dateTime":"2026-02-03T09:00:00","timeZone":"America/New_York"},"end":{"dateTime":"2026-02-03T10:00:00","timeZone":"America/New_York"},"recurrence":["RRULE:FREQ=WEEKLY;COUNT=16;BYDAY=TU"]}'
# Update event (single instance)
curl -s -X PATCH -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
"https://www.googleapis.com/calendar/v3/calendars/primary/events/EVENT_ID" \
-d '{"colorId":"11"}'
# Delete event (entire recurring series — use base recurring event ID, no instance suffix)
curl -s -X DELETE -H "Authorization: Bearer $TOKEN" \
"https://www.googleapis.com/calendar/v3/calendars/primary/events/RECURRING_EVENT_ID"
# Delete single instance
curl -s -X DELETE -H "Authorization: Bearer $TOKEN" \
"https://www.googleapis.com/calendar/v3/calendars/primary/events/EVENT_ID_WITH_INSTANCE_SUFFIX"
abc123 — represents the seriesabc123_20260203T140000Z — represents one occurrencerecurringEventId pointing back to the baseRRULE:FREQ=WEEKLY;COUNT=16;BYDAY=TU # Every Tuesday for 16 weeks
RRULE:FREQ=WEEKLY;COUNT=16;BYDAY=MO,WE # Mon & Wed for 16 weeks
RRULE:FREQ=WEEKLY;COUNT=16;BYDAY=TU,TH # Tue & Thu for 16 weeks
RRULE:FREQ=DAILY;COUNT=5 # Daily for 5 days
RRULE:FREQ=WEEKLY;UNTIL=20260530T000000Z # Weekly until date
| Code | Meaning |
|---|---|
| 200 | Success (GET/PATCH) |
| 204 | Success (DELETE) |
| 401 | Token expired — need to refresh or re-auth via MCP server |
| 404 | Event not found |
| 409 | Conflict (duplicate) |
wzhu@college.harvard.eduAmerica/New_YorkprimaryUse when transcribing audio files with speaker diarization. Triggers on TRANSCRIBE keyword.
Rule-based methodology for essay development. Load this index first, then load specific essay type file based on task.
Comprehensive guide for managing Claude Code snippets v2.0 - discovering locations, creating snippets from files, searching by name/pattern/description, and validating configurations. Use this skill when users want to create, search, or manage snippet configurations in their Claude Code environment. Updated for LLM-friendly interface with TTY auto-detection.
Style guide and primer for writing in Warren Zhu's voice. Use when drafting emails, essays, blog posts, technical documents, consulting deliverables, presentations, or any writing for or as Warren. Covers philosophical sensibilities, stylistic patterns, characteristic moves, tone calibration, and professional/technical writing registers. Also useful when understanding Warren's intellectual background and preferences for advising him.
Use when interacting with Harvard Canvas LMS - fetching courses, assignments, grades, submissions, modules, calendar events. Trigger with CANVAS keyword.
Interact with Google Drive API using PyDrive2 for uploading, downloading, searching, and managing files. Use when working with Google Drive operations including file transfers, metadata queries, search operations, folder management, batch operations, and sharing. Authentication is pre-configured at ~/.gdrivelm/. Includes helper scripts for common operations and comprehensive API references. Helper script automatically detects markdown formatting and sets appropriate MIME types.