
Enzyme
- 51 repo stars
- Updated July 6, 2026
- jshph/enzyme
Enzyme is a MCP server that provides semantic search and pattern discovery across a local Obsidian or markdown vault via ENZYME_VAULT_PATH.
About
Enzyme is a local MCP server that turns an Obsidian or plain markdown vault into something an agent can search semantically instead of brute-forcing filenames. developers who keep product research, meeting notes, and architecture drafts in a vault can set ENZYME_VAULT_PATH and let Claude Code or Cursor pull relevant passages and recurring patterns while scoping features or writing docs. It supports the idea and research lane of the Skillselion journey and still helps during build when your spec lives beside daily notes. Packages ship as signed mcpb binaries for common platforms with stdio transport. Beginner-friendly setup is mostly choosing the vault path; advanced users benefit when vaults are large and backlinked. It complements skills—it does not replace structured PM tools or team wikis.
- Semantic search and pattern discovery over Obsidian and markdown vaults
- ENZYME_VAULT_PATH points at your local vault directory
- Distributed as versioned .mcpb bundles (macOS arm64 and linux x86_64 listed)
- Stdio MCP under the Enzyme title—local-first, no cloud vault upload implied
- Knowledge MCP—not a generic web scraper or Notion OAuth integration
Enzyme by the numbers
- Data as of Jul 7, 2026 (Skillselion catalog sync)
claude mcp add Enzyme -- npx -y jshph/enzymeAdd your badge
Show developers this MCP server is listed on Skillselion. Paste this into your README.
| repo stars | ★ 51 |
|---|---|
| Last updated | July 6, 2026 |
| Repository | jshph/enzyme ↗ |
What it does
Semantic search and pattern discovery across your Obsidian or markdown vault so agents cite the right notes while you research and plan.
Who is it for?
Best when you run a personal Obsidian or markdown knowledge base and want research-grade recall inside Claude Code or Cursor.
Skip if: Skip if you're storing docs only in cloud SaaS with no local vault, or workflows needing live web search instead of private notes.
What you get
After you register Enzyme with your vault path, the agent retrieves semantically relevant notes and patterns without leaving the MCP session.
- Semantic retrieval over vault notes in agent workflows
- Pattern discovery across linked markdown content
- Local stdio MCP integration without mandatory cloud sync
By the numbers
- Server version 0.3.3
- mcpb releases for macOS arm64 and linux x86_64 listed
- Config env ENZYME_VAULT_PATH
README.md
🧬 Enzyme
Don't let your agent get lost in your knowledge base. Enzyme compiles 1,000+ documents into a concept graph in under 20 seconds. 8ms queries on device.
Website · Docs · Discord · Getting Started
Enzyme reads a knowledge base — markdown files, Obsidian vaults, Readwise exports, any text corpus — and compiles it into a concept graph. The graph captures the cross-cutting themes in your material as catalysts: pre-computed questions that an agent can search through instead of grepping through your files.
No conversation history needed. No runtime reasoning. The expensive work happens once at init. After that, queries run locally in ~8ms on an on-device embedding model.
Install
curl -fsSL https://raw.githubusercontent.com/jshph/enzyme/main/install.sh | bash
On macOS you can also use Homebrew:
brew install jshph/enzyme/enzyme-cli
App plugins are optional and installed separately inside Claude Code or Codex:
claude plugin marketplace add jshph/enzyme
claude plugin install enzyme
The repo includes marketplace metadata at the root and the actual plugin bundle under plugins/enzyme/. That nested layout is intentional: Claude Code and Codex marketplaces discover installable plugins from repository subdirectories, while the root files point each marketplace at the shared bundle.
MCP server
If you prefer MCP over the plugin, Enzyme ships a stdio MCP server that works with any MCP-compatible client (Claude Desktop, Cursor, etc):
claude mcp add enzyme -- enzyme mcp
The MCP server exposes init, petri, catalyze, and status tools — you can initialize and explore your vault entirely from the client without running CLI commands separately.
Quick start
For agent-guided setup, install the runtime instructions from your markdown vault:
cd /path/to/your/vault
enzyme install codex # Codex / Pi / generic .agents
enzyme install claude # Claude Code
Then ask your agent: "Use Enzyme to inspect and initialize this vault." The skill will scan the workspace, confirm the setup stance, persist ~/.enzyme/config.toml, run enzyme init, and demonstrate petri/catalyze.
Terminal-only setup is also supported:
enzyme scan --write-config
$EDITOR ~/.enzyme/config.toml
enzyme init # compiles concept graph — under 20s for 1k docs
What it does
Enzyme reads the structure of your knowledge base — tags, links, folders, timestamps — and builds semantic clusters with temporal weight on every entity. From those clusters it generates catalysts: thematic questions that cut across your content and surface connections keyword search can't reach.
A search for "why we keep rewriting the auth layer" finds the ADR from six months ago, a retro note about scope creep, and a Readwise highlight on accidental complexity — even if none of those share keywords with the query.
Core concepts
- Entities — the tags, links, and folders in your content. Each one becomes a semantic cluster.
- Catalysts — pre-computed themes Enzyme discovers across your material. Searching through catalysts connects content that keyword and vector search miss.
- Petri — the compiled index: what's trending, what entities exist, and what catalysts are anchored to each.
- Apply — project your concept graph onto an unfamiliar corpus.
enzyme apply /path/to/other/repomaps your catalysts onto new content. See apply docs.
Example: petri output
enzyme petri renders a readable tree in an interactive terminal. When stdout is piped or captured, it emits JSON for tools like jq:
enzyme petri | jq '.entities[:2]'
[
{
"name": "system-design",
"type": "tag",
"activity_trend": "active",
"frequency_12m": 84,
"catalysts": [
{
"text": "What does the commitment to simplicity cost when the pressure to ship keeps winning?",
"context": "velocity vs craft in infrastructure",
"era": "2024-Q3"
},
{
"text": "Where does the analysis of user needs gather information that delays rather than clarifies the core value?",
"context": "research as avoidance",
"era": "2025-Q1"
}
]
},
{
"name": "working-with-others",
"type": "tag",
"activity_trend": "rising",
"frequency_12m": 47,
"catalysts": [
{
"text": "What assumptions about leadership are held by those who are good at building things?",
"context": "craft vs delegation",
"era": "2024-Q4"
},
{
"text": "How does the goal of not depending on others shape the approach to collaboration?",
"context": "independence vs team trust",
"era": "2025-Q2"
}
]
}
]
Each entity has catalysts spanning different eras — questions that cut across months of writing. These are what the agent searches through, not your raw text.
Example: catalyze query
enzyme catalyze "why we keep rewriting the auth layer"
{
"query": "why we keep rewriting the auth layer",
"results": [
{
"file_path": "retros/2024-q3-platform-retro.md",
"content": "scoped auth extraction as a two-week project for the third time. real blocker wasn't the token service — nobody wanted to own the session model. every proposal added a layer instead of removing one.",
"similarity": 1.46
},
{
"file_path": "adrs/007-auth-service-extraction.md",
"content": "the monolith's session handling has become the bottleneck for every team shipping independently. chose separation of concerns over the coordination cost of a new service boundary.",
"similarity": 1.24
},
{
"file_path": "reading/highlights-accelerate.md",
"content": "'Teams that can deploy independently are twice as likely to be in the high-performer category.' — we keep choosing the rewrite over the boundary.",
"similarity": 1.13
}
],
"top_contributing_catalysts": [
{
"entity": "system-design",
"text": "What does the commitment to simplicity cost when the pressure to ship keeps winning?",
"relevance_score": 0.74
}
]
}
The query matched no keywords in the retro or the ADR. The catalyst bridged them — the retro talked about "scope creep" and the ADR talked about "separation of concerns," but the underlying tension was the same.
Why compile-time?
Most memory tools build understanding at runtime — they need conversation history before they know anything about your content. Enzyme works the other way: it extracts the conceptual structure from what already exists. The first agent conversation is as rich as the hundredth.
This matters when you're building on imported content (reading highlights, curated collections, research corpora). There's no cold start. The intelligence layer is ready from the moment the content is indexed.
Requirements
- A folder of markdown files (Obsidian vaults, Readwise exports, any
.mdcorpus) - macOS (Apple Silicon or Intel) or Linux (x86_64 or aarch64)
- First vault init works out of the box via Enzyme's hosted bootstrap; login is used for refresh, publishing, account credits, and additional vaults. You can also bring your own OpenAI-compatible key with
--use-env-llm.
Links
- enzyme.garden — landing page
- Docs — how it works, catalysts, apply, for teams
- Setup guide — install and configure
Recommended MCP Servers
How it compares
Local vault semantic-search MCP—not a skills.sh markdown skill or public web RAG plugin.
FAQ
Who is Enzyme for?
It is for developers and founders who keep research and specs in Obsidian or markdown folders and want MCP-powered semantic search on that local vault.
When should I use Enzyme?
Use it during idea and research (and adjacent docs work) when you need the agent to surface related notes, themes, and patterns across many linked markdown files.
How do I add Enzyme to my agent?
Download the matching enzyme-mcp mcpb release for your platform, set ENZYME_VAULT_PATH to your vault root, and register the stdio server in your MCP client configuration.