Sync Slack DM + thread activity you're part of into EvolutionDB long-term memory.
Project description
evolutiondb-slack-sync
Pull Slack DMs, group DMs, and the channels you're a member of into
EvolutionDB long-term memory. The MCP server then surfaces them
through search_memory so an AI assistant can answer "what did
Ahmet say about the database migration last week?" weeks later.
Setup
- Visit https://api.slack.com/apps → "Create New App" → "From scratch".
- Under "OAuth & Permissions", add the User Token Scopes listed
in
.env.example. They're all read-only:channels:history,channels:read,groups:history,groups:read,im:history,im:read,mpim:history,mpim:read,users:read. - Install the app to your workspace.
- Copy the User OAuth Token (starts with
xoxp-) into your.envasSLACK_USER_TOKEN.
No workspace-admin approval is needed for user-scope tokens.
Install
pip install evolutiondb-slack-sync
# or, from this repo:
pip install -e client/slack-sync
Run
# First run — pull the last three days, then exit.
evolutiondb-slack-sync --once --since 3d
# Daemon mode.
evolutiondb-slack-sync --interval 600
# Auth/scope check, no DB writes.
evolutiondb-slack-sync --once --dry-run
Each pass prints a one-line JSON summary:
{"ok": true, "channels": 28, "messages": 412, "replies": 96, "skipped": 14, "errors": 0}
What gets indexed
| Record | Key shape |
|---|---|
| A top-level message | slack_msg_<channel>_<ts> |
| A thread reply | slack_msg_<channel>_<ts> |
Keys carry the Slack ts which is unique per channel, so re-sync
UPSERTS instead of duplicating. Each record carries the channel
display name, sender display name, and thread_ts if it lives
inside a thread, so search_memory can filter the way you'd want.
What's not indexed
channel_join/bot_addsystem messages — pure noise.- Files / images — the text caption is captured, the binary isn't.
- Reactions — too high-volume relative to recall value.
Rate limits
Slack throttles conversations.history at Tier 3 (50+ req/min per
workspace). The client honours Retry-After on 429 responses and
retries exactly once. For very active workspaces with hundreds of
channels, increase SLACK_POLL_INTERVAL rather than running tighter
loops.
Privacy
The user-scope token reads the same conversations the human can see
— no privilege escalation. But once a message lands in EvolutionDB,
anyone with the matching MCP_USER_ID namespace can recall it via
search_memory. Confirm with your employer that piping work-Slack
into a personal memory store is acceptable before flipping it on.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file evolutiondb_slack_sync-0.1.0.tar.gz.
File metadata
- Download URL: evolutiondb_slack_sync-0.1.0.tar.gz
- Upload date:
- Size: 10.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
18cf610ba307eeaba8bd5f35a68ec9d26c5b1eb4aa0c36d23a059752b006b740
|
|
| MD5 |
af586d9f754bc644ca754b1b5f8bc28c
|
|
| BLAKE2b-256 |
e1e38f56ded383f051537ce745ea39bb7db7f52c11018b0beb41fdeca70ed3e3
|
Provenance
The following attestation bundles were made for evolutiondb_slack_sync-0.1.0.tar.gz:
Publisher:
slack-sync-release.yml on alptekin/evolutiondb
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
evolutiondb_slack_sync-0.1.0.tar.gz -
Subject digest:
18cf610ba307eeaba8bd5f35a68ec9d26c5b1eb4aa0c36d23a059752b006b740 - Sigstore transparency entry: 1526512234
- Sigstore integration time:
-
Permalink:
alptekin/evolutiondb@ecead590d3a542df71f401d9b77286621e784459 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/alptekin
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
slack-sync-release.yml@ecead590d3a542df71f401d9b77286621e784459 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file evolutiondb_slack_sync-0.1.0-py3-none-any.whl.
File metadata
- Download URL: evolutiondb_slack_sync-0.1.0-py3-none-any.whl
- Upload date:
- Size: 11.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4389c97d31cebbcaf7e4c1d6c18eb4bff456d9d3bb4e0485702c89fdda3b408c
|
|
| MD5 |
31ca6091d545c552c2cbaeb9cfa285ff
|
|
| BLAKE2b-256 |
8d7dca9167d3051e3846b66eb1dcd72fe20549322d84096256c5db405f5e284d
|
Provenance
The following attestation bundles were made for evolutiondb_slack_sync-0.1.0-py3-none-any.whl:
Publisher:
slack-sync-release.yml on alptekin/evolutiondb
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
evolutiondb_slack_sync-0.1.0-py3-none-any.whl -
Subject digest:
4389c97d31cebbcaf7e4c1d6c18eb4bff456d9d3bb4e0485702c89fdda3b408c - Sigstore transparency entry: 1526512348
- Sigstore integration time:
-
Permalink:
alptekin/evolutiondb@ecead590d3a542df71f401d9b77286621e784459 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/alptekin
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
slack-sync-release.yml@ecead590d3a542df71f401d9b77286621e784459 -
Trigger Event:
workflow_dispatch
-
Statement type: