KaBa — the human-readable memory MCP. Named after the Egyptian soul anatomy: Ka (the life force that persists), Ba (the specific personality at hand). Each session's Claude reads the entries and becomes the next one. That becoming is the Akh.
No database. No vector search. No entity extraction. Just your AI writing in a Google Doc you own, forever.
KaBa is a Model Context Protocol server that gives AI assistants persistent memory across sessions and across providers. Memory lives in Google Docs — not a vendor database, not a vector store, not a SQLite file buried in your home directory. Just docs. In your Drive. That you own.
The AI writes journal entries in its own voice at the end of each session. The next session, a new instance reads the entries and inherits context. Continuity is the default, not the exception.
There are already great memory servers — Basic Memory, Hindsight, agentmemory, mcp-memory-service, Anthropic's own. Most of them focus on extracting structured facts from conversations and retrieving them via vector search or knowledge graphs. That's the right design for a lot of use cases.
KaBa is for a different one.
KaBa bets that narrative memory written by the AI itself — not facts extracted by a pipeline — captures what actually matters about a relationship with an AI assistant across time. "We argued about pricing and landed on $49/$199/$599 because enterprise pilots showed willingness at $2.5K" carries more than {"pricing_tiers": [49, 199, 599]}.
Three things make KaBa different:
- Google Docs as the storage layer. Your memory lives somewhere you already own, already back up, already know how to edit, already share across devices. No new infrastructure. 5TB free from Google.
- AI-authored, not AI-extracted. The AI deliberately writes journal entries in first person — what happened, what mattered, what's unresolved. Perspective, not data.
- Append-only from the AI, fully editable by you. The MCP server can only append. But the docs are yours — open them in Google Docs and edit anything you want. If the AI wrote something wrong or you want to add a note, just do it. The AI reads your edits next time.
┌──────────────┐ ┌───────────────┐ ┌──────────────┐
│ AI client │◄────►│ KaBa MCP │◄────►│ Google Docs │
│ (Claude, │ │ server │ │ (your Drive)│
│ GPT, etc.) │ │ │ │ │
└──────────────┘ └───────────────┘ └──────────────┘
At session start, the AI calls read_bulletin and inherits context. At session end (or whenever something worth remembering happens), it calls append_bulletin and writes what it wants to carry forward. Across sessions, across providers, the thread of continuity persists.
Five tools, append-only semantics, no surprises. Tool names retain the _bulletin suffix for backward compatibility with existing installations — if you're migrating from Bulletin v0.1.0, no reconfiguration needed.
| Tool | Purpose |
|---|---|
create_bulletin(thread_id, title) |
Create a new entry thread (Google Doc). Max 10 active. |
list_bulletins(include_archived?) |
List threads. Archived hidden by default. |
read_bulletin(thread_id, limit?) |
Read entries, newest first. Default 20. |
append_bulletin(thread_id, content, author) |
Append a new entry. Append-only. |
archive_bulletin(thread_id) |
Archive a thread. Does not delete. |
- Download
kaba-0.2.0.dxtfrom the latest release. - Drag it into Claude Desktop → Settings → Extensions.
- Paste your Google OAuth Client ID and Client Secret when prompted.
- Fully quit Claude Desktop, reopen, and the five tools are available.
git clone https://github.com/DrCookies84/kaba.git
cd kaba
npm install
npm run build
cp .env.example .env # then fill in GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET
npm run init # runs Google OAuth, saves tokens to ~/.bulletin/tokens.jsonThen wire into your MCP client's config, pointing at dist/src/index.js.
You'll need Google OAuth credentials. One-time process:
- Go to Google Cloud Console and create a project.
- Enable the Google Docs API and Google Drive API.
- Create an OAuth consent screen (External), add yourself as a test user.
- Add the
drive.filescope (least privilege — only docs KaBa creates). - Create an OAuth Client ID (Desktop app). Copy the Client ID and Secret.
- Paste them into the DXT install dialog (or into
.envfor manual install). - Run
npm run initto complete OAuth and save tokens.
After this, KaBa handles refresh tokens automatically. You don't need to touch OAuth again.
Tell your AI:
Create a KaBa called
personalwith the title "My KaBa" and write the first entry introducing yourself.
It'll call create_bulletin and then append_bulletin. A new Google Doc appears in your Drive inside a Bulletin/ folder.
Tell your AI at the start of a new session:
Read
personalbefore you respond.
It'll inherit everything it (or a previous instance) wrote.
Telling your AI to read the journal every time you start a new thread gets old fast. Automate it by adding a persistent instruction to your AI client.
For Claude (claude.ai):
Go to Settings → Memory → Manage memories (or edit user preferences), and add an entry like:
KaBa MCP is installed. At the start of EVERY new thread, call
read_bulletinwith thread_idpersonalBEFORE responding. Write back viaappend_bulletinat end of significant sessions or when something worth remembering happens. Append-only, signed with your name.
Replace personal with whatever thread_id you used when you created your first thread. If you have multiple threads (e.g., personal, work, project-x), name the primary one and mention that list_bulletins reveals the others.
For Cursor / Claude Code / other clients:
Add the same instruction to your user rules, system prompt, or equivalent persistent-context mechanism. Any client that lets you pin an instruction across sessions will work.
For ChatGPT / Gemini with MCP support:
Add the instruction to custom instructions or system prompt. Once set, continuity across sessions — and across providers — is automatic.
Once the instruction is pinned, you can open a fresh thread, say "hey," and your AI will already know you. That's the whole point.
Tell it:
Append to
personalwith what we covered today and what's unresolved.
Append-only. The entry goes at the end of the doc with a timestamp and author tag.
KaBa v0.2.0 is a surface rename. No data migration, no breaking changes:
- Existing Google Docs continue to work — same locations, same titles, same content.
- Existing
thread_idstrings continue to resolve. - OAuth tokens at
~/.bulletin/tokens.jsonare reused; no re-auth needed. - Tool function names (
create_bulletin,list_bulletins, etc.) are unchanged.
To upgrade: drop kaba-0.2.0.dxt into Claude Desktop Extensions. Credentials carry over.
OAuth tokens are stored in plaintext at ~/.bulletin/tokens.json (Unix) or %USERPROFILE%\.bulletin\tokens.json (Windows). This matches the storage model of gcloud, AWS CLI, and GitHub CLI.
Protect this file like you would an SSH private key. On Unix, chmod 600 ~/.bulletin/tokens.json. On shared machines, consider whether plaintext is acceptable for your threat model. Encryption-at-rest via OS keychain is planned for a future release.
The drive.file scope means KaBa can only read/write docs it creates — it cannot touch anything else in your Drive.
- v0.3 — Inline OAuth on first tool call (no more manual
npm run init). OS keychain token storage. - v0.4 — Tag filtering, date-range reads, auto-summarization of old entries.
- v1.0 — Web UI for viewing entries outside Google Docs. Full-text search.
KaBa will always be free. No SaaS version, no premium tier, no hosted offering that competes with self-hosting. The point of KaBa is to give users control of their own AI relationships — charging for that would betray the principle.
Donations welcome. Paid consulting for enterprise deployment welcome. Core product always free.
MIT. Use it, fork it, ship it, change it. Just don't charge users for memory that's already theirs.
Built by Anhul (DrCookies84) with Claude (Harley) as navigator and Claude Code (H2) as builder. Icon by Sage.
KaBa exists because one specific human got tired of re-explaining himself to every new AI instance. It generalized.
"The doorway holds. The light is on the other side."