Skip to main content

persistent-kb-mcp

A Model Context Protocol (MCP) server that gives any MCP-capable AI agent a persistent, searchable knowledge base stored locally in a single SQLite file. Survives session restarts, context compaction, and machine reboots.

PyPI License: MIT

What it does

Exposes 5 MCP tools for interacting with a local SQLite knowledge base:

Tool Purpose
kb_add Save a fact, lesson, decision, or reference (with title, kind, tags)
kb_search Full-text search via SQLite FTS5
kb_show Fetch a single entry's full content + metadata
kb_list Browse entries, filter by kind / tag / date
kb_tag Add or remove tags on an existing entry

Storage default: ~/.persistent-kb/kb.sqlite (override via KB_DB).

Why

AI coding agents lose everything between sessions. This server lets your agent save and recall facts across sessions — without sending data to a cloud service.

Install

Requires Python 3.10+.

pip install canola-persistent-kb-mcp

Or from source:

pip install git+https://github.com/0x67108864/persistent-kb-mcp.git

Configure your agent

Claude Code

Add to your ~/.claude/mcp.json (or the project-local equivalent):

{
  "mcpServers": {
    "persistent-kb": {
      "command": "persistent-kb-mcp"
    }
  }
}

Restart Claude Code and the 5 kb_* tools become available.

Codex CLI / Cursor / other MCP-capable runtimes

Each runtime has its own way of registering MCP servers; the command is always persistent-kb-mcp. Refer to your runtime's MCP configuration documentation.

Quickstart

Once configured, try these in your agent:

"Remember that Stripe's standard payout schedule in Japan is 7 days, 
domestic card fee is 3.6% + ¥40."
→ agent calls kb_add(title=..., kind="reference", tags="stripe,japan", content=...)

(later, in a new session)
"What did we learn about Stripe payouts in Japan?"
→ agent calls kb_search(query="stripe payout japan")
→ retrieves the saved reference and uses it

Configuration

Env var Default Purpose
KB_DB ~/.persistent-kb/kb.sqlite DB file location

Why not Letta / mem0 / OpenAI memory?

Concern This server Cloud memory
Network required ❌ ✅
API key required ❌ ✅
Data leaves your machine ❌ ✅
Vendor lock-in None (SQLite) Service-specific
Cost Free Per-token / per-call

Use this when local-first matters. Use cloud memory when you actually want cross-device sync.

Development

git clone https://github.com/0x67108864/persistent-kb-mcp.git
cd persistent-kb-mcp
python -m venv .venv && source .venv/bin/activate
pip install -e .
python -m persistent_kb_mcp  # runs the server on stdio

Schema

The SQLite schema is created automatically on first use. It defines:

  • entries — primary table (id, title, kind, content, timestamps, optional superseded_by)
  • tags — many-to-many between entries and tag strings
  • entries_fts — FTS5 virtual table for keyword search
  • relations — typed links between entries

See src/persistent_kb_mcp/db.py for the DDL.

Roadmap

  • v0.2 — optional vector embedding for semantic search
  • v0.3 — export/import for cross-machine sync
  • v0.4 — time-decay scoring for relevance

Related

License

MIT — see LICENSE.

Author

canola_oil — https://0x67108864.github.io/

Release files for canola-persistent-kb-mcp 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for canola-persistent-kb-mcp 0.1.0
File Size Uploaded
canola_persistent_kb_mcp-0.1.0.tar.gz 8.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for canola-persistent-kb-mcp 0.1.0
File Interpreter ABI Platform
canola_persistent_kb_mcp-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 17.7 kB

Release files / canola_persistent_kb_mcp-0.1.0.tar.gz

Download URL canola_persistent_kb_mcp-0.1.0.tar.gz
Size 8.2 kB
Tags Source
SHA-256 checksum
How to use checksums
dd96afe57d7c94cbcef18140311dbbd9e37bfb22979c4f30d057f995e9ed6d0b
BLAKE2b-256 checksum
How to use checksums
36c58ed230a08a58a4b10bf2ce0dd695a368cdc635cbcccbdf68d8308753b61a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / canola_persistent_kb_mcp-0.1.0-py3-none-any.whl

Download URL canola_persistent_kb_mcp-0.1.0-py3-none-any.whl
Size 9.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1527c83fce046dae72e2d67db3c068a0a0d5bbb0faa98b2ac70c214497816f18
BLAKE2b-256 checksum
How to use checksums
1c89a036b9a7504f84049999776463e91a9557c85d49b3177734cf6c50736fae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page