Prototyp · Vorschau: alle Server aus der offiziellen Registry, alle 30 Minuten synchronisiert. Bewertungen und Benutzerkonten folgen in einem späteren Schritt.
PopNx MCPMCP-Server für alle, die KI nutzen · in einfachen Worten erklärt

Inkwell

von veronchenkoVersion 0.14.0i★ –iLäuft auf deinem Computer
Name in der Registryio.github.veronchenko/inkwell-memory

Installieren

Überblick

Beschreibung vom Entwickler (englisches Original)

Persistent memory for AI agents: Markdown entries, hybrid search, typed graph links

Die drei Säulen von PopNx MCP

Diese drei werden nie zu einer Punktzahl zusammengefasst: Meinungen, Messungen und Beliebtheit sind verschiedene Dinge.

Was du damit machen kannst

Für diesen Server haben wir noch keine Zusammenfassung in einfacher Sprache geschrieben. Unten stehen die Fakten, die wir aus der Registry gelesen haben.

  • Verbindung: Läuft auf deinem Computer
  • Transport: stdio
  • Kategorie: Suche & KI-Gedächtnis

Installation

Wähle die KI-App, die du nutzt, und kopiere die Einstellungen.

Bevor du installierst

  • Basischecks: 1 von 1 bestanden
  • Läuft auf deinem Computer mit den Rechten deines Benutzerkontos (Dateien, Netzwerk, Apps).
  • Das trägst du selbst ein: INKWELL_DATA_PATH, INKWELL_ENABLE_DASHBOARD

Du brauchst

Welche App nutzt du?

Wähle oben deine App. Wir merken sie uns, damit der Button beim nächsten Mal „In … installieren“ anzeigt.

Öffne Claude Desktop → Settings → Developer → Edit Config und füge dies in claude_desktop_config.json ein

{
  "mcpServers": {
    "inkwell-memory": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "INKWELL_DATA_PATH",
        "-e",
        "INKWELL_ENABLE_DASHBOARD",
        "docker.io/foreigndmitryi/inkwell-memory:0.14.0"
      ],
      "env": {
        "INKWELL_DATA_PATH": "your-value",
        "INKWELL_ENABLE_DASHBOARD": "your-value"
      }
    }
  }
}

Führe das in deinem Terminal aus

claude mcp add inkwell-memory --env INKWELL_DATA_PATH=your-value --env INKWELL_ENABLE_DASHBOARD=your-value -- docker run -i --rm -e INKWELL_DATA_PATH -e INKWELL_ENABLE_DASHBOARD docker.io/foreigndmitryi/inkwell-memory:0.14.0

Trag die leeren Werte ein, bevor du ihn startest.

In Cursor öffnen

Oder kopier die Einstellungen selbst

In .cursor/mcp.json in deinem Projekt oder in ~/.cursor/mcp.json einfügen

{
  "mcpServers": {
    "inkwell-memory": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "INKWELL_DATA_PATH",
        "-e",
        "INKWELL_ENABLE_DASHBOARD",
        "docker.io/foreigndmitryi/inkwell-memory:0.14.0"
      ],
      "env": {
        "INKWELL_DATA_PATH": "your-value",
        "INKWELL_ENABLE_DASHBOARD": "your-value"
      }
    }
  }
}

Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.

In VS Code öffnen

Oder kopier die Einstellungen selbst

In .vscode/mcp.json in deinem Projekt einfügen

{
  "servers": {
    "inkwell-memory": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "INKWELL_DATA_PATH",
        "-e",
        "INKWELL_ENABLE_DASHBOARD",
        "docker.io/foreigndmitryi/inkwell-memory:0.14.0"
      ],
      "env": {
        "INKWELL_DATA_PATH": "your-value",
        "INKWELL_ENABLE_DASHBOARD": "your-value"
      }
    }
  }
}

Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.

Dieser Server läuft auf deinem Computer, und ChatGPT kann sich nur mit Servern im Internet verbinden. Wähle eine andere App.

Deine Auswahl bleibt in einem Cookie auf diesem Gerät; kein Konto nötig.

Werte, die du selbst einträgst

  • INKWELL_DATA_PATH env
    Knowledge base root inside the container; matches the volume mount target
  • INKWELL_ENABLE_DASHBOARD env
    Set to 0 to skip the web dashboard process and run the MCP server only

Diese Einstellungen werden aus dem Registry-Eintrag des Entwicklers erzeugt. Wenn in der README etwas anderes steht, folge der README.

Was er kann

Läuft auf deinem Computer; die Tool-Liste erscheint nach der Installation in deiner KI-App.

Basischecksi

Wir prüfen Informationen, die jeder sehen kann; den Code haben wir nicht gelesen. Checks, die nicht zutreffen, werden nicht mitgezählt. · Geprüft am 7. Nov. 2026

  • ✓ Bestanden

    Entwickler passt zum Repo

    Der Registry-Name wurde mit dem GitHub-Konto veronchenko bestätigt, dem das Repo gehört

  • … Noch nicht geprüft

    Wird noch gepflegt

    Dieses Repo haben wir noch nicht von GitHub gelesen

  • … Noch nicht geprüft

    Hat eine Lizenz

    Dieses Repo haben wir noch nicht von GitHub gelesen

  • – Nicht zutreffend

    Endpunkt antwortet

    Dieser Server läuft auf deinem Computer; es gibt keinen Endpunkt im Internet

  • – Nicht zutreffend

    Anmeldung mit OAuth

    Läuft auf deinem Computer und nutzt stattdessen lokale Einstellungen

  • … Noch nicht geprüft

    Keine versteckten Anweisungen in Tool-Beschreibungen

    Läuft auf deinem Computer; Tool-Listen können wir nur von Endpunkten im Internet lesen

Im Vergleich mit anderen in Suche & KI-Gedächtnisi

  • Mehr Sterne als 0 % der anderen 7251 Server in dieser Kategorie
  • Neuer in der Registry veröffentlicht als 30 % der anderen 7251 Server in dieser Kategorie
  • Basischecks gleich gut wie oder besser als bei 100 % der anderen 7251 Server in dieser Kategorie

Verglichen mit allen aktiven Servern dieser Kategorie in der Registry. Sterne zählen nur, wenn dem Herausgeber das Repo gehört.

Häufige Fragen

Ist Inkwell sicher?

Er hat 1 von 1 zutreffenden Basischecks bestanden. Den Code haben wir nicht gelesen. Bevor du einen Schlüssel oder Token hinzufügst, sieh nach, welche Zugriffe der Server verlangt, und nutze einen Schlüssel, der nur die Berechtigungen hat, die du brauchst.

Welche Schlüssel oder Codes braucht er?

Die Registry nennt keinen erforderlichen Schlüssel, manche Server bitten dich aber bei der ersten Nutzung, dich anzumelden.

Läuft er auf meinem Computer oder in der Cloud?

Er läuft auf deinem Computer. Deine KI-App startet ihn bei Bedarf, und die Daten laufen nicht über die Server des Entwicklers (außer der Server ruft selbst einen Onlinedienst auf).

Wird er noch gepflegt?

Das GitHub-Repo wurde zuletzt – geändert, und die neueste Version (0.14.0) kam vor 3 Monaten in die Registry.

Welche Apps können ihn nutzen?

Apps, die MCP unterstützen, etwa Claude Desktop, Claude Code, Cursor und VS Code. Außerdem brauchst du Docker auf deinem Computer.

Was kann ich stattdessen nutzen?

In derselben Kategorie: Context7, Codebase Memory, Exa

Alternativen

Server derselben Kategorie von anderen Entwicklern, sortiert nach Sternen.

So liest du eine Karte:★ GitHub-SterneiDrei Säulen: Bewertungen · Checks · NutzungiAktualisiert = neueste Version in der Registry veröffentlichti

Context7

von upstash

Up-to-date docs for AI agents

Computer oder Cloud★ 64.224MITAktualisiert heute
Installieren

Codebase Memory

von DeusData

Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.

Läuft auf deinem Computer★ 48.148MITAktualisiert vor 20 Tagen
Installieren

Exa

von exa-labs

Connect AI agents to Exa for web search, content fetching, and multi-step research.

Läuft in der Cloud★ 5.213MITAktualisiert letzten Monat
Installieren

README vom Entwickler

README öffnen

Unverändert aus dem Repo des Entwicklers übernommen. PopNx MCP hat den Inhalt weder geprüft noch empfiehlt es ihn. HTML, Bilder und Skripte wurden entfernt. Links führen von dieser Website weg.

Inkwell — Persistent Knowledge Base MCP Server

Inkwell is a self-hosted Model Context Protocol server that gives AI agents persistent memory across sessions and projects. Three things set it apart from the other memory servers: plain Markdown files are the source of truth (the index is a throwaway cache you can delete and rebuild), entries are connected by a typed `kb://` graph rather than dumped into a flat pile, and updates are bi-temporal — superseding a fact keeps the old version readable instead of overwriting it.

Docker Hub: foreigndmitryi/inkwell-memory · Website: veronchenko.github.io/inkwell-memory

Formerly Engram. Renamed in 0.14.0 — there are a dozen unrelated projects called "Engram" and the name had stopped being findable. Not affiliated with any of them, nor with the Engram keyboard layout. See the changelog for what the rename breaks.

Table of Contents

  • Concept
  • Features
  • Comparison
  • Measured Against a Plain Markdown Wiki
  • Design Patterns
  • Architecture
  • Quick Start
  • Search
  • Tools
  • Dashboard
  • Graph Relations
  • Usage Examples
  • Prompt Your Agent
  • Configuration
  • Storage Format
  • Development
  • License

Concept

Agent conversations end and take their context with them. Inkwell is the piece that survives: a knowledge base an agent searches *before* acting and writes to *after* resolving something non-obvious, so the next session — same project or a different one — starts with what was already learned instead of re-deriving it.

It deliberately stores zero discoverable information. If a fact can be pulled from code, git history, config files, or existing docs, it does not belong in Inkwell — that's what greps and re-reads are for. What belongs is the kind of knowledge a conversation would otherwise lose: a decision and the alternatives it ruled out, a bug's root cause and fix, a procedure learned the hard way, a preference stated once that should hold from then on.

Two things keep the base usable as it grows:

  • Atomicity — one entry, one fact. remember warns (non-blocking) on Markdown headers, more than 3 paragraphs, or content past 512 B/1 KB, pushing multi-fact dumps back into separate linked entries instead of a wall of text no search will rank well.
  • The graph, not a pile — entries link to each other via kb://uuid#type references, so related facts (a hub project, its features, a diagnostic tied to one of them) stay navigable both ways instead of living as isolated rows.

Features

  • Hybrid search — SQLite FTS5 (BM25, Porter stemming) fused with cosine similarity over local Model2Vec embeddings *and* an IDF-weighted exact-match channel over title/tags via Reciprocal Rank Fusion; finds entries by meaning or by a literal proper noun BM25/embeddings alone would dilute among lexically-similar distractors, with zero cloud dependency
  • Typed graph relations — kb://uuid#type links between entries, resolved both directions (outgoing + backlinks) on every recall, with an optional second hop (hops=2) to see how two entries connect through an intermediate one
  • Schema-enforced entry types — hub, decision, diagnostic, feature, procedure, integration, pattern, snippet, preference, idea — declared in schema.json and exposed to the client as an enum, so an invalid type can't be written; filterable on search/list
  • `doctor` integrity pass — one schema-driven check over the Markdown files for dangling and superseded links, undeclared types, missing template fields, supernodes, and tag/type collisions
  • `part_of` structural membership — links a detail entry (decision, diagnostic, feature, procedure, integration, ...) to its hub, enforced per type by the schema; filterable on search/list, grouped alongside kb:// back-links in a hub's recall digest
  • Bi-temporal versioning — remember(..., supersede=True) creates a new version instead of overwriting; old versions stay in history (include_superseded=True) instead of being lost
  • Duplicate detection & link suggestions — remember matches near-identical titles to avoid duplicate entries, and returns suggested_links (embedding-similarity matches) so related facts get cross-referenced instead of orphaned
  • Atomicity guardrails — non-blocking warnings on structural anti-patterns (headers, >3 paragraphs, oversized content) so the base stays one-fact-per-entry as it scales
  • Web dashboard — force-directed graph view, hybrid search, and a CRUD panel over the same knowledge base the MCP tools use (see Dashboard)
  • Three transports — stdio (agent-managed), SSE, streamable-http — so the same server works for a single local agent or a shared multi-agent deployment
  • Markdown as source of truth — the SQLite index is a rebuildable cache; delete it and rebuild, no data is ever lost

Comparison

InkwellMem0Zep / GraphitiLangMem
Source of truthMarkdown files on diskVector DB / managed APITemporal knowledge graphVector store (LangChain-backed)
SearchBM25 + local Model2Vec embeddings (RRF fusion)Vector similarityGraph traversal + embeddingsVector similarity
RelationsExplicit kb://uuid#type links, agent-authoredImplicit (LLM-extracted facts)Auto-extracted temporal graph edgesNone built-in
Temporal modelBi-temporal valid_at/supersede on writeFact overwriteNative temporal graph (bi-temporal edges)None built-in
DeploymentSelf-hosted, single Docker image, no cloud dependencyHosted API or self-hosted + vector DBSelf-hosted, needs Neo4jLibrary, no server
Design centerDeliberately minimal — zero discoverable info, agent decides what's worth keepingAutomatic fact extraction from conversationsAutomatic entity/relationship extractionComposable memory primitives for LangGraph agents

Inkwell trades automatic extraction (Mem0, Zep) for an agent-curated, atomic, explicitly-linked knowledge base — no LLM-driven ingestion pipeline, no graph database dependency, and the on-disk Markdown stays human-readable and diffable.

Measured Against a Plain Markdown Wiki

Inkwell was benchmarked against the same knowledge base packaged as an ordinary Markdown wiki — one file per topic, organized in folders by project and category (decision, diagnostic, feature, procedure, ...), each project with an index page and cross-links between related pages, browsed with Read/Grep/Glob/Bash. Same content, two ways of finding it — for equivalent fact coverage, Inkwell's search/recall used:

InkwellWikiImprovement
Tool calls104186-44%
Total tokens3.87M5.91M-35%
Cost$1.31$1.62-19%
Wall time (sum)577s760s-24%
Fact rate1.0000.964+3.7%

32 questions (single-hop, multi-hop, negative, cross-lingual, supersede) over 5,070 entries — 70 curated facts across 4 fictional projects plus 5,000 real-text distractor entries, so retrieval has to work at a scale that doesn't fit in an agent's context:

wiki/

├── Ledgerbird/ ) ├── Pipewren/ ) 4 curated projects — 70 real ├── Snipfox/ ) decisions/diagnostics/features/ ├── Featherstore/ ) procedures/integrations/snippets │ ├── README.md <- project index page, links to every entry below │ ├── decision/ │ │ ├── offline-engine-duckdb-over-spark.md │ │ ├── online-value-serialization-msgpack.md │ │ └── ... (2 more) │ ├── diagnostic/ │ │ ├── redis-memory-doubling-from-ttl-less-deprecated-feature-groups.md │ │ └── training-serving-skew-from-tz-naive-event-timestamps.md │ ├── feature/ (4 entries) │ ├── integration/ (2 entries) │ ├── procedure/ (1 entry) │ └── snippet/ (1 entry) ├── _shared/ cross-project patterns & preferences └── haystack-project-00000.../00199/ 200 distractor projects x 25 pages │ = 5,000 real-text (Wikipedia) pages ├── README.md <- same index-page shape as a real project ├── decision/ (2 entries) ├── feature/ (3 entries) ├── idea/ (7 entries) ├── pattern/ (4 entries) ├── procedure/ (1 entry) └── snippet/ (2 entries)

Every category folder is a flat list of one-file-per-entry, and every project folder (real or distractor) has its own README.md index page linking to all of them — structurally identical, so the wiki arm can't tell curated fact from distractor by shape alone.

An agent that already knows *where* to look doesn't need to grep, re-read, and re-grep its way there — the efficiency edge holds for equivalent fact coverage. Retrieval ranking has also been improving: adding an IDF-weighted exact-match channel (below) moved MRR from 0.851 to 0.857 and recall@5 from 0.851 to 0.869, with no regression across any language.

Design Patterns

  • Reciprocal Rank Fusion — BM25 and embedding rankings are computed independently and merged by rank position rather than raw score, avoiding the need to normalize incomparable similarity metrics.
  • Rebuildable cache over source of truth — the SQLite index is fully derived from the Markdown files (rebuild regenerates it from scratch); the database is never the only copy of a fact.
  • Bi-temporal versioning — supersede writes a new entry and points the old one at it via superseded_by, instead of overwriting in place, so history stays queryable (include_superseded).
  • HATEOAS-style graph traversal — every recall response carries its own outgoing/incoming kb:// links, so navigating the knowledge graph doesn't require a separate query per hop.
  • Shared domain layer, two transports — the dashboard's REST API and the MCP tools both call the same KnowledgeBase/SQLiteBackend methods, so there is exactly one code path for writes regardless of which surface triggered them.

Architecture

Markdown files  --->  Search index  --->  MCP  --->  Agent

(source of truth) (SQLite FTS5 + (server.py) (Claude Code, Model2Vec, ChatGPT, ...) rebuildable cache)

Markdown files in /entries/ are the only source of truth. The SQLite index (search_backend.py) is a disposable cache built from them — BM25 + Model2Vec embeddings fused via Reciprocal Rank Fusion, plus the kb:// relation graph — and can always be regenerated with rebuild. server.py exposes that index to an agent as MCP tools (remember/recall/search/...); the dashboard is an alternate entry point at the same layer, hitting the same KnowledgeBase/index directly over REST instead of MCP, so remember/delete behave identically whether called by an agent or edited by hand in the browser.

  • `src/server.py` — MCP tool definitions (remember, recall, search, list, tags, forget, rebuild, doctor), one process, stdio/SSE/streamable-http transport
  • `src/database.py` — KnowledgeBase: M

Nur der Anfang wird gezeigt; den Rest findest du im Repo

PopNx fragen