Open Brain Knowledge MCP Server

Open Brain Knowledge MCP Server

A persistent, cross-session knowledge base for AI agents that indexes session history into a searchable SQLite database with full-text search, enabling recall of past sessions, stored knowledge, and summaries.

Category
访问服务器

README

Open Brain Knowledge MCP Server

A persistent, cross-session knowledge base for AI agents. Built on the Model Context Protocol (MCP), this server gives AI coding assistants like Claude Code long-term memory — they can recall what happened in previous sessions, store permanent knowledge, and search across their entire history.

The problem: AI agents start from zero every session. They forget what you worked on, what decisions were made, and what errors were resolved.

The solution: Open Brain indexes every session into a searchable SQLite database with full-text search (FTS5). Agents can query it with kb_recall to find anything from any previous session — errors, decisions, code patterns, stored facts — instantly.

Why Not Just Use Claude Code's Built-in Memory?

Claude Code has a file-based memory system (~/.claude/projects/<project>/memory/) — but it's just markdown files loaded into context at session start. It's manual, not searchable, and not connected to session history.

Open Brain Knowledge is fundamentally different — it's an automated, searchable, indexed knowledge base that captures everything across every session and makes it queryable.

Capability Claude Code Built-in Open Brain Knowledge
Cross-session recall No — each session starts from zero Yes — kb_recall searches all past sessions
Full-text search over history No Yes — FTS5 with ranked results
Persistent knowledge storage No Yes — kb_store / kb_forget
Project-scoped vs global memory No Yes — scoped by default, global on demand
Session indexing No Yes — automatic via SessionEnd hook
Session summarization No Yes — kb_summarize + kb_store_summary
Auto-tagging No Yes — tech keywords, error types, file extensions
TTL-based pruning No Yes — 90-day default
Searchable by category/tags/time No Yes — filter by error, project, timeframe

Claude Code's memory is like sticky notes. Open Brain Knowledge is a searchable database with full-text indexing.

Project Scoping vs Global Memory

When you're working on multiple projects, you don't want session history from Project A polluting searches in Project B. But you do want general knowledge (preferences, processes, learned facts) available everywhere.

Open Brain Knowledge solves this with scoped-by-default, global-on-demand architecture:

How scoping works

Data Type Default Behavior Override
Session chunks & summaries Scoped to project when project is passed global: true searches all projects
Stored knowledge Global by default (available everywhere) scope: "project" restricts to one project

Examples

# Search only the current project's history (recommended default)
kb_recall({ queries: ["auth bug"], project: "/path/to/myapp" })

# Search everything across all projects
kb_recall({ queries: ["auth bug"], global: true })

# Store a fact available everywhere
kb_store({ content: "Deploy process: ...", key: "deploy-process" })

# Store a fact only relevant to one project
kb_store({
  content: "Uses Clerk for auth with custom middleware",
  key: "auth-setup",
  scope: "project",
  project_dir: "/path/to/myapp"
})

# List knowledge for current project (global + project-scoped)
kb_list({ project: "/path/to/myapp" })

Design principles

  • Session data is project-scoped by default — agents should always pass their working directory as project when calling kb_recall
  • Stored knowledge is global by default — facts, preferences, and decisions are typically useful across projects
  • Global knowledge always surfaces — even in project-scoped searches, knowledge with no project_dir is included
  • Single database — no schema splits or sync headaches; scoping is done via filtering

How It Works

┌─────────────────┐     ┌──────────────────┐     ┌───────────────────┐
│  Claude Code     │────▶│  context-mode     │────▶│  Session .db      │
│  (AI Agent)      │     │  (MCP plugin)     │     │  files            │
└─────────────────┘     └──────────────────┘     └────────┬──────────┘
        │                                                  │
        │  kb_recall / kb_store                           │ SessionEnd hook
        │                                                  │ (auto-index.mjs)
        ▼                                                  ▼
┌─────────────────────────────────────────────────────────────────────┐
│                    Open Brain Knowledge MCP                         │
│                                                                     │
│  ┌─────────────┐  ┌──────────┐  ┌────────────┐  ┌──────────────┐  │
│  │  sessions    │  │  chunks   │  │  knowledge  │  │  summaries   │  │
│  │  (metadata)  │  │  (FTS5)  │  │  (FTS5)     │  │  (FTS5)      │  │
│  └─────────────┘  └──────────┘  └────────────┘  └──────────────┘  │
│                                                                     │
│                    ~/.claude/context-mode/knowledge.db               │
└─────────────────────────────────────────────────────────────────────┘
  1. context-mode (dependency MCP plugin) captures session events as .db files during each Claude Code session
  2. When a session ends, the SessionEnd hook (auto-index.mjs) automatically indexes new events into the knowledge base
  3. Events are chunked (max 2000 chars), categorized, and auto-tagged with tech keywords, error types, and file extensions
  4. All content is indexed with SQLite FTS5 (porter stemming + unicode61 tokenizer) for fast, ranked full-text search
  5. Agents query the knowledge base via MCP tools (kb_recall, kb_store, etc.)

Dependencies

Required: context-mode MCP Plugin

Open Brain Knowledge depends on context-mode to capture session data. context-mode records everything that happens during a Claude Code session (prompts, tool results, file changes, errors, commands) into per-session SQLite .db files.

Install context-mode:

npm install -g @anthropic/context-mode
# or follow the context-mode repo's installation instructions

context-mode must be registered as a Claude Code plugin. After installation, verify it appears in your Claude Code settings:

// ~/.claude/settings.json
{
  "enabledPlugins": {
    "context-mode@context-mode": true
  }
}

Runtime Dependencies

Package Version Purpose
@modelcontextprotocol/sdk ^1.26.0 MCP server framework (StdioServerTransport)
better-sqlite3 ^12.6.2 SQLite database driver with FTS5 support
zod ^3.25.0 Schema validation for tool parameters

Dev Dependencies

Package Version Purpose
typescript ^5.7.0 TypeScript compiler
tsx ^4.21.0 TypeScript execution for development
@types/better-sqlite3 ^7.6.13 Type definitions
@types/node ^22.19.11 Node.js type definitions

Installation

The recommended install location is ~/.claude/knowledge-mcp/ — right alongside the ~/.claude/context-mode/ directory. Both are Claude Code infrastructure and belong together.

~/.claude/
├── context-mode/        # Session capture (dependency)
│   ├── sessions/        # Per-session .db files
│   └── knowledge.db     # The knowledge base (created by this server)
├── knowledge-mcp/       # ← This server lives here
│   ├── src/
│   ├── build/
│   ├── scripts/
│   └── package.json
├── settings.json
└── projects/

1. Clone and build

cd ~/.claude
git clone https://github.com/YOUR_USERNAME/open-brain-knowledge.git knowledge-mcp
cd knowledge-mcp
npm install
npm run build

2. Register as an MCP server in Claude Code

Add the server via the Claude Code CLI:

claude mcp add open-brain-knowledge -- node ~/.claude/knowledge-mcp/build/server.js

Or manually add it to your Claude Code settings file (~/.claude/settings.json):

{
  "mcpServers": {
    "open-brain-knowledge": {
      "command": "node",
      "args": ["~/.claude/knowledge-mcp/build/server.js"]
    }
  }
}

3. Set up the SessionEnd auto-index hook

The SessionEnd hook automatically indexes new session data when a Claude Code session ends. Add it to your Claude Code settings:

// ~/.claude/settings.json
{
  "hooks": {
    "SessionEnd": [
      {
        "type": "command",
        "command": "node ~/.claude/knowledge-mcp/scripts/auto-index.mjs"
      }
    ]
  }
}

4. Verify installation

Start a new Claude Code session and ask the agent to run kb_stats. You should see output showing the knowledge base tables are initialized.

MCP Tools Reference

Open Brain Knowledge exposes 10 tools via MCP:

Search & Recall

kb_recall

Search across all indexed sessions, stored knowledge, and session summaries. This is the primary tool agents use to remember things. By default, results are scoped to the project you specify — always pass your current working directory as project for best results.

Parameter Type Required Description
queries string[] Yes Search queries — batch multiple questions in one call
sessions number No Limit to last N sessions
since string No Time window (e.g. "7 days", "30 days", "2 hours")
category enum No Filter: prompt, tool_result, file_change, file_read, error, command_output, knowledge, summary, other
project string No Your current working directory — scopes results to this project
global boolean No Search across ALL projects instead of scoping (default: false)
tags string[] No Filter by tags (e.g. ["typescript", "error:enoent"])
verbose boolean No Return full content instead of snippets (default: false)
limit number No Results per query (default: 5)

Example usage by an agent:

# Project-scoped search (recommended)
kb_recall({
  queries: ["authentication bug", "login error fix"],
  project: "/home/user/myapp",
  since: "7 days",
  category: "error",
  verbose: true
})

# Global search across all projects
kb_recall({
  queries: ["deploy process"],
  global: true
})

Indexing

kb_index

Index a specific session .db file. Supports incremental updates — if the session was already indexed but has new events, only new data is processed.

Parameter Type Required Description
db_file string Yes Absolute path to a session .db file

kb_reindex

Scan the sessions directory and index all new or updated .db files. Incremental by default.

Parameter Type Required Description
force boolean No Drop and rebuild the entire knowledge base (default: false)

Knowledge Management

kb_store

Store a piece of knowledge permanently. By default, knowledge is stored globally (available across all projects). Set scope to "project" and pass a project_dir to restrict it to a specific project.

Parameter Type Required Description
content string Yes The knowledge to store
key string No Short label for retrieval (e.g. "deploy-process")
tags string[] No Tags for categorization
source string No Origin (default: "manual")
scope enum No "global" (default) = available everywhere. "project" = scoped to a project.
project_dir string No Project directory to scope to (only used when scope is "project")

kb_forget

Remove stored knowledge by ID or key.

Parameter Type Required Description
id number No Knowledge entry ID
key string No Knowledge key

kb_list

List all manually stored knowledge entries. Pass project to see only global + project-scoped entries for that directory.

Parameter Type Required Description
limit number No Max entries to return (default: 20)
project string No Filter to global + this project's knowledge entries

Summarization

kb_summarize

Returns unsummarized session chunks for the calling agent to read and summarize. No external API needed — the agent itself writes the summary.

Parameter Type Required Description
session_id string No Summarize a specific session
last number No Return last N unsummarized sessions (default: 5)

kb_store_summary

Store an agent-generated session summary.

Parameter Type Required Description
session_id string Yes The session ID
summary string Yes Summary text (3-8 sentences)

Maintenance

kb_stats

Show knowledge base statistics — sessions indexed, chunks, tags, stored knowledge, summaries, disk usage, breakdowns by project and category.

kb_prune

Remove sessions older than their TTL (default: 90 days).

Database Schema

The knowledge base lives at ~/.claude/context-mode/knowledge.db (SQLite, WAL mode).

Table Purpose
sessions Session metadata (id, project_dir, timestamps, event_count, TTL)
chunks Session events broken into searchable chunks (max 2000 chars)
chunks_fts FTS5 virtual table over chunks (porter + unicode61 tokenizer)
tags Many-to-many chunk tags (auto-extracted: tech keywords, error types, file extensions)
knowledge Manually stored knowledge (permanent, optionally project-scoped via project_dir)
knowledge_fts FTS5 virtual table over knowledge
summaries Agent-generated session summaries
summaries_fts FTS5 virtual table over summaries

Auto-Tagging

Content is automatically tagged during indexing:

  • Tech keywordstypescript, react, convex, docker, claude, etc. (~80 keywords)
  • Tool namestool:read, tool:bash, tool:edit, etc.
  • Error typeserror:enoent, error:typeerror, error:econnrefused, etc.
  • File extensionsext:ts, ext:py, ext:json, etc.
  • Event categoriesprompt, tool_result, file_change, error, command_output, etc.

Hardening Memory Instructions

To make AI agents reliably use the knowledge base, you need to add hardened memory instructions to your Claude Code configuration. Without these, agents will default to saying "I don't remember" instead of searching the knowledge base.

What are hardened memory instructions?

They are rules placed in Claude Code's memory system that tell the agent to always check the knowledge base before claiming it has no memory of something. This transforms the agent from a stateless assistant into one with persistent recall.

Step 1: Add to CLAUDE.md (project-level)

Add the following to any project's CLAUDE.md file where you want agents to have persistent memory:

## Persistent Memory

This project uses Open Brain Knowledge MCP for cross-session memory.

- When asked about previous sessions or past work, ALWAYS call `kb_recall` before responding
- Always pass your current working directory as `project` when calling `kb_recall` to scope results
- Never say "I don't have memory of that" without first searching the knowledge base
- Use broad AND specific queries to maximize recall (e.g., both the topic name and related keywords)
- Store project-specific decisions with `kb_store({ scope: "project", project_dir: "<this dir>" })`
- Store general knowledge (preferences, processes) with `kb_store` (global by default)

Step 2: Add to Claude Code's auto-memory system

If you use Claude Code's built-in memory (the ~/.claude/projects/<project>/memory/ directory), create a feedback memory file that reinforces the behavior:

Create ~/.claude/projects/<project>/memory/feedback_use_knowledge_base.md:

---
name: Use Open Brain Knowledge MCP for previous session recall
description: When the user asks about previous sessions or past conversations, always use kb_recall from Open Brain Knowledge MCP before saying "I don't remember"
type: feedback
---

When the user asks about something from a previous session, ALWAYS search Open Brain Knowledge MCP (`kb_recall`) before responding. Never say "I don't have any memory of that" without checking first.

**Why:** Open Brain stores cross-session context. Saying "I don't remember" without checking is incorrect — the knowledge may be there.

**How to apply:**
1. When the user references a previous session or asks "what were we talking about", immediately call `kb_recall` with relevant queries.
2. Use broad and specific query variations to maximize recall (e.g., both the topic name and related keywords).
3. Only after checking Open Brain and finding nothing should you tell the user the information wasn't found.

Step 3: Add to MEMORY.md index

In your ~/.claude/projects/<project>/memory/MEMORY.md, add a pointer to the feedback file:

## Feedback
- [feedback_use_knowledge_base.md](feedback_use_knowledge_base.md) — Always check Open Brain kb_recall before saying "I don't remember" when asked about previous sessions

Step 4: Test the hardening

Store a test marker in one session:

Agent: kb_store({ content: "TEST MARKER — purple octopus test", key: "test-marker", tags: ["test"] })

Start a new session and ask about it:

User: "We were talking about a purple octopus, why?"
Agent: [should call kb_recall before responding]

If the agent finds the marker without prompting, your hardened instructions are working.

Optional: Session-start recall hook

For even stronger memory behavior, you can instruct the agent to proactively check the knowledge base at the start of every session. Add this to your feedback memory:

---
name: Read memory at session start
description: Always read user profile and key memory files at the start of every session
type: feedback
---

Read memory files at the start of every session before responding.

**Why:** The user expects continuity across sessions. Forgetting context feels impersonal and wastes time.

**How to apply:** At the beginning of each session, read MEMORY.md and relevant memory files so you know the user's name, preferences, and current project context.

Development

# Run in development mode (hot reload via tsx)
npm run dev

# Build for production
npm run build

# Run production build
npm start

Project Structure

knowledge-mcp/
├── src/
│   ├── server.ts      # MCP server — tool definitions and handlers
│   ├── db.ts          # SQLite database layer, schema, queries
│   ├── indexer.ts      # Session file indexing (incremental)
│   └── tags.ts        # Auto-tag extraction (regex-based)
├── scripts/
│   └── auto-index.mjs  # SessionEnd hook for automatic indexing
├── build/              # Compiled JavaScript output (gitignored)
├── package.json
└── tsconfig.json

License

MIT

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选