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.0.tar.gz (15.1 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.0-py3-none-any.whl (14.9 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for evolutiondb_calendar_sync-0.1.0.tar.gz
Algorithm Hash digest
SHA256 4323595426a42900a3191649b80caadc493ccf23b9570221272f97f985e5b587
MD5 5378e9449ee39d863cfd1bffca5870bd
BLAKE2b-256 662ef9513dccc0f80abda7ffebbde5ae7bb2f4b4e044147236258edb4d4dd0c8

See more details on using hashes here.

Provenance

The following attestation bundles were made for evolutiondb_calendar_sync-0.1.0.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.0-py3-none-any.whl.

File metadata

File hashes

Hashes for evolutiondb_calendar_sync-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 31c314b5cc78b85e07de924355da1688d3c88002fd2916432f5b6d9756a3c1a0
MD5 c6cbd82cdc0ef4aec84c8ed6a5e6aaf9
BLAKE2b-256 dd53d6c4fbaba1b4c5d02b27e0e5797efa2a0121700b6f5e2bbad441f8835e95

See more details on using hashes here.

Provenance

The following attestation bundles were made for evolutiondb_calendar_sync-0.1.0-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