enzyme

enzyme

Enables interaction with a knowledge base via Enzyme's concept graph, exposing init, petri, catalyze, and status tools for MCP-compatible clients. Supports in-client exploration and search of vaults using pre-computed catalysts.

Category
Visit Server

README

<div align="center">

๐Ÿงฌ 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.

Discord License Release Downloads

Website ยท Docs ยท Discord ยท Getting Started

</div>

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/useenzyme/enzyme/main/install.sh | bash

On macOS you can also use Homebrew:

brew install useenzyme/enzyme/enzyme-cli

App plugins are optional and installed separately inside Claude Code or Codex:

claude plugin marketplace add useenzyme/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.
  • Target search โ€” search an unfamiliar corpus through your vault's catalysts with enzyme catalyze "query" --target /path/to/other/repo. Enzyme prepares the target automatically on first use.

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 .md corpus)
  • 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

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured