Claude Code Plugin
The engram Claude Code plugin lives in skill/engram/ and ships:
- A
/engram-setupcommand to register your server - A
SessionStarthook that surfaces stored memories at the start of every session - A
PostToolUsehook that nudges memory capture after you change repo state
There is no bundled MCP server. Connect the plugin to your own engram deployment. Install covers obtaining the binary; Agent Setup covers MCP registration and curation skills across supported runtimes. The standalone plugin adds the hooks described below.
Install the plugin
Section titled “Install the plugin”On a Claude Code whose plugin CLI works, engram setup --apply installs this plugin for you — engram’s own marketplace and plugin (seanb4t/engram, engram@engram), added when absent, updated when outdated, and left alone when current. See Agent Setup for installation. The commands below are the by-hand route.
claude plugin marketplace add seanb4t/engramclaude plugin install engram@engramOr, if you have a local clone, add its repository root (which contains the marketplace manifest):
claude plugin marketplace add /path/to/engramclaude plugin install engram@engramRegister your server with /engram-setup
Section titled “Register your server with /engram-setup”Run /engram-setup in Claude Code (with an optional URL argument):
/engram-setup https://engram.example.com/mcpSupply the complete MCP endpoint, including its configured path. The command gathers the endpoint and one of four auth choices: OAuth, pre-registered OAuth client, bearer token, or none.
With a setup-capable binary present, /engram-setup previews across detected
runtimes, shows every registration and skills result, and asks for confirmation
before applying the same inputs. It reports failures without automatically
retrying or switching to fallback. See Agent Setup for
runtime support and credential requirements.
With no engram binary on PATH, the standalone command retains its
Claude-only fallback through Claude’s own CLI. That registers a user-scope server
available in every project. It does not perform the binary’s cross-runtime skill
installation. Exact native commands and the fallback procedure live in the
generated setup command reference.
For a pre-registered OAuth client, provide the non-secret client ID and make
MCP_CLIENT_SECRET available in the scripted Claude process’s inherited
environment; there is no interactive stdin. For bearer mode, supply ENGRAM_TOKEN
in the runtime environment and keep command references literal. Do not paste
secret values into commands or chat. Native registration does not use
--token-file.
After successful OAuth registration, run /mcp, select engram, and authenticate
in the browser. Registration alone does not complete that login.
To change the URL later on the standalone fallback path:
claude mcp remove engram --scope user# then re-run /engram-setupIf engram setup reports the registration as preserved — it carries something setup did not author and cannot reproduce — setup leaves it untouched and never runs this command for you; the preserved row’s reason names the exact step. See the results section of the setup guide.
SessionStart hook — memory recall
Section titled “SessionStart hook — memory recall”At the start of every session the session-start-memory-recall hook computes the two-tier memory scope (spine + optional workspace overlay) from the local git context and injects an instruction for Claude to call list_memory over its own OAuth-authenticated MCP connection. Recall is model-mediated because hooks cannot hold OAuth tokens.
If engram returns 401/403, Claude reports once that memories are unavailable and continues — it does not block.
PostToolUse hook — capture nudge
Section titled “PostToolUse hook — capture nudge”After a mutating tool fires (Edit/Write/NotebookEdit), the posttooluse-memory-capture-nudge hook emits a silent additionalContext reminder to capture any durable facts established this session. The nudge fires at most once per session (throttled by a session_id-keyed marker file in $TMPDIR).
Use the curating-memory skill to store memories correctly: search before store, supersede on contradiction, default scope to the spine.