akasha-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@akasha-mcpsearch my notes for the flaky test fixture race, then save what we find"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
akasha
A local knowledge base that gives coding agents a memory, served over MCP.
The problem
Every agent session starts from zero. Yesterday an agent spent an hour working out why a test fails one run in twenty: two tests share a fixture directory and the cleanup of one races the setup of the other. It fixed the test and the session ended. The reasoning lived in a context window, and the window is gone. Today another agent meets the same flake, reads the same files and derives the same answer, spending the same time and context to get there.
What you already know is not missing, it is scattered. Some of it sits in Claude Code project memory, some in Serena memories, some in a notes folder, some in markdown files inside repos. Each agent writes to its own corner, and none of them searches the others. Pasting notes into prompts does not scale: context is the scarce resource, and every pasted page crowds out the work. Conventions ("migrations are reviewed before merge", "never mock the database in integration tests") get retyped at the start of session after session.
Related MCP server: RepoRecall
How akasha fixes it
akasha builds one local index over the markdown you already have. It is read-only by default and copies nothing: your files stay the source of truth, and the SQLite index derived from them can be deleted and rebuilt at any time.
Agents search it through MCP before they start investigating, and write what they find
back as ordinary markdown with knowledge_write and knowledge_append. The next
session starts where the last one ended. Search is keyword (BM25) and, if enabled, dense
retrieval, fused by reciprocal rank. Results are sized for a context window: a handful of
capped hits, with knowledge_get to page into a document only when one is worth reading.
Conventions are documents of kind=convention. They are delivered automatically at
session start and are read-only to agents; only the CLI can create or change one. Hooks
keep the index fresh without anyone thinking about it (in Claude Code and Gemini CLI): a
session-start hook refreshes it in the background, and a post-tool hook reindexes a note
the moment an agent edits it.
Safety is enforced where the data enters. At index time, secret-shaped strings are redacted and known prompt-injection patterns are neutralised before any agent sees the text. Both are pattern-based: they catch the common shapes, not every secret. Destructive operations are CLI-only; an agent can archive a document, never delete one. There is no account and no server, and nothing leaves your machine (the one exception is a small embedding model, downloaded once if dense search is on).
A day with akasha: an agent running in claude records the flaky-test cause with
knowledge_write. The next morning an agent in gemini is asked about the same flake,
calls knowledge_search first, and finds the finding in one hit instead of an hour of
investigation.
Requirements
Python 3.11+ and uv
A supported agent CLI:
claude,geminiorcopilot.akasha init --allregisters with whichever are on your PATH. Any other MCP client can runakasha serve(stdio) by hand.
Install
The PyPI package is akasha-mcp; the command it installs is akasha.
uv tool install --python 3.12 'akasha-mcp[vectors]'--python matters when your default Python is older than 3.11 (macOS ships 3.9): uv does
not pick an interpreter from the package's requirement on its own, and downloads 3.12 if
you don't have it. Without dense search: uv tool install --python 3.12 akasha-mcp. From git:
uv tool install --python 3.12 'akasha-mcp[vectors] @ git+https://github.com/anuress/akasha'With [vectors] installed, akasha init writes provider = "model2vec" and search is
dense plus keyword. Without it, search is keyword-only: init says so and akasha doctor
keeps saying so. akasha config set embeddings.provider none turns dense search off. An
existing config is never rewritten; to enable it there, set embeddings.provider model2vec
and run akasha index.
Quickstart
akasha initCreates ~/.akasha/ (mode 0700) with config.toml, the SQLite index and a knowledge/
directory for documents agents write. On first run it looks for existing notes to index:
Claude Code project memories (~/.claude/projects/*/memory), and .serena/memories and
graphify-out directories in the immediate subdirectories of ~ (change with
--code-root DIR, repeatable).
akasha init --allRegisters the MCP server with every detected agent CLI through that CLI's own mcp add
command (copilot: its mcp-config.json), and installs the two hooks for claude and
gemini. For claude it also allows the mcp__akasha tools in settings.json so they do
not prompt; skip that with --no-allow. --dry-run prints what would be written and
changes nothing.
akasha index # build or refresh the index
akasha knowledge search "cache expiry" --limit 3
akasha doctor # what is degraded; exit 0 means healthySearch defaults to the repo of the current checkout; --all searches every repo.
Tools
Eleven MCP tools:
Tool | What it does |
| Ranked chunks; current repo first, OR retry when strict finds nothing, |
| One document by id, paged |
| New document; lists fold candidates and can supersede older ones |
| Correct a document in place, whole body or one exact span |
| Append a dated section to a document |
| Hide from default search; reversible |
| Integrity check, read-only |
| Documents in the order written |
| Linked documents: citations and backlinks |
| How many documents carry a feature tag |
| What is degraded about the installation |
Hooks
Two hooks, both fail-open (they never block a session or a tool):
akasha hook session-startprints the repo's conventions, a short brief and an integrity note into the new session. The installed command passes--defer-refreshso it does not wait for an index walk.akasha hook post-toolreads the tool payload on stdin and reindexes the one file an agent just wrote, if it is inside an index root.
Documents of kind=convention are standing rules: they are injected at session start and
are read-only over MCP. Only the CLI can create or change one.
Sources and config
The native knowledge directory (~/.akasha/knowledge) holds documents written through
akasha. Everything else is an indexed root, one [[index]] block in config.toml:
[[index]]
path = "~/notes"
source = "notes"
include = ["**/*.md"] # optional globs
exclude = ["**/cache/**"]
repo = "my-repo" # repo the whole root belongs to
writable = false # default; true lets knowledge_append write into itRoots are read-only by default. Add one without editing the file:
akasha index add ~/notes --source notes --repo my-repo
akasha indexDeleting things
Agents can only archive. Everything else is CLI-only.
Command | Effect |
| Hidden from default search; reversible with |
| Moved to trash; recoverable |
| Brings a trashed document back |
| Permanently deletes trashed documents ( |
Rebuilding and ids
The database is derived from the files:
rm ~/.akasha/akasha.db && akasha indexIds of documents in indexed roots are derived from root and relative path, so links between documents survive a rebuild. Moving or renaming a file changes its id.
Privacy
At index time, secrets are redacted (scan_secrets, on by default) and prompt-injection
shapes are neutralised before text reaches an agent; common secret files (.env*, *.pem,
*.key, *.pfx, *.kdbx, SSH keys, .npmrc, .pypirc, credentials.json and similar)
are denied outright; deny_files and deny_extensions in [security] replace the lists.
A local audit log of events, including redacted query heads, is kept for 90 days (akasha housekeeping prunes it).
Development
uv run pytest -q
uv run --python 3.11 pytest -qLicense
MIT
Related MCP Connectors
Hosted MCP memory for coding agents: persistent across sessions, editable markdown, team sharing.
Shared memory for coding agents. Stop re-explaining your codebase every session.
One memory, every AI. A shared, user-owned markdown memory your AI clients read and write over MCP.
Persistent AI memory shared across Claude, ChatGPT, coding agents, and compatible MCP clients.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceProvides local-first, project-aware durable memory for coding agents, with a human-reviewed Markdown vault, MCP daemon, and dashboard for managing and retrieving shared knowledge.39 PyPI14MIT
- AlicenseNot gradedqualityBmaintenanceProvides persistent, local-first memory for coding agents with Markdown as the source of truth, exposed via CLI, loopback API, MCP, and Codex hooks for context retrieval and durable writes.MIT
- AlicenseNot gradedqualityAmaintenanceA local markdown memory and cross-agent context engine for AI coding assistants. It provides an MCP server with tools to search, add, retrieve, and distill persistent memory across tools like Claude Code, Cursor, and Zed.38 PyPI5MIT
- AlicenseAqualityBmaintenanceEnables coding agents to store, search, and retrieve long-term memory as plain Markdown files with a disposable SQLite index, including note management, decision/bug tracking, and codebase symbol lookup via MCP.8MIT