Skip to main content

Sync Google Calendar events into EvolutionDB long-term memory.

Project description

evolutiondb-calendar-sync

Pull Google Calendar events into EvolutionDB long-term memory so an AI assistant can answer "when did we meet about the database move?" weeks later, side by side with the chat and email memory that the other connectors write.

Setup

If you already configured evolutiondb-gmail-sync, you can reuse the same OAuth Desktop client. Just enable the Calendar API on the same Google Cloud project.

  1. https://console.cloud.google.com/apis/library/calendar-json.googleapis.comEnable.
  2. APIs & Services → Credentials → reuse the existing Desktop OAuth client (or create one of type Desktop app).
  3. Copy the Client ID + Client secret into .env (GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET).
  4. Make sure your Google account is listed under "Test Users" on the OAuth consent screen.

The package only requests calendar.readonly — it cannot create, edit, or delete events on your calendar.

Install

pip install evolutiondb-calendar-sync
# or, from this repo:
pip install -e client/calendar-sync

First-time auth

evolutiondb-calendar-sync --auth

Opens a browser tab for Google's consent screen and stores the refresh token at ~/.evosql/calendar_token.json (mode 0600). Subsequent runs are silent.

Run

# One pass; pull the last 30 days. Bootstrap.
evolutiondb-calendar-sync --once --since 30d

# Daemon mode, polls every 15 minutes.
evolutiondb-calendar-sync --interval 900

# Auth + scope check without writes.
evolutiondb-calendar-sync --once --dry-run

Each pass prints a one-line JSON summary:

{"ok": true, "calendars": 6, "events": 142, "deleted": 3, "skipped": 1, "errors": 0}

How "incremental" works

Google's Calendar API hands back a nextSyncToken on every list call. We persist it per-calendar and pass it on the next run, so only events that changed since last time come over the wire. A deleted event also flows through — the connector picks it up, removes the matching row from the memory store, and counts it.

If the token is older than 30 days Google returns 410. The connector clears the stale token and re-bootstraps from the --since floor automatically; nothing for you to do.

What gets indexed

Field Source
summary event title
description event body, clipped to 1 kB
location event location string
organizer display name or email of the creator
attendees list of attendee names
start / end RFC 3339 timestamps (or date for all-day)
status confirmed / tentative / cancelled
html_link Google Calendar deep link
calendar_name the calendar this event lives on

Records use the calendar id and event id as the key (gcal_event_<calendar_id>_<event_id>), so re-sync UPSERTs.

Privacy

The token reads what your account can see, including events you were invited to on other people's calendars. Once an event lands in EvolutionDB, anyone with the matching MCP_USER_ID can recall it through search_memory. Use a dedicated Google account for sensitive calendars rather than pointing this at your primary one.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

evolutiondb_calendar_sync-0.1.1.tar.gz (15.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

evolutiondb_calendar_sync-0.1.1-py3-none-any.whl (15.0 kB view details)

Uploaded Python 3

File details

Details for the file evolutiondb_calendar_sync-0.1.1.tar.gz.

File metadata

File hashes

Hashes for evolutiondb_calendar_sync-0.1.1.tar.gz
Algorithm Hash digest
SHA256 b140b51355b8b7091e99c22b596981d6c462b25672775d38e63957027f4db92a
MD5 693444d61c5fc6d05f1bb12ef2cad020
BLAKE2b-256 1a52fd78e04983e11967e412b63de65bc504e66841fe9fd4ff681bdcdebfe63f

See more details on using hashes here.

Provenance

The following attestation bundles were made for evolutiondb_calendar_sync-0.1.1.tar.gz:

Publisher: calendar-sync-release.yml on alptekin/evolutiondb

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file evolutiondb_calendar_sync-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for evolutiondb_calendar_sync-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 79f76988f04c75d3110b2214b88da3aae9d71567d150523621d67f424a0e4d07
MD5 00ccc952e86d4d98ea9e7e1ce07ce382
BLAKE2b-256 e23bfa81a1f273b73348790365fee30bdb541ba5b2b8218fc099683411b1ead2

See more details on using hashes here.

Provenance

The following attestation bundles were made for evolutiondb_calendar_sync-0.1.1-py3-none-any.whl:

Publisher: calendar-sync-release.yml on alptekin/evolutiondb

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page