knowledge-base-server
Provides bidirectional sync with an Obsidian vault, auto-indexing notes and changes so human-curated knowledge is searchable by AI agents.
Enables OpenAI ChatGPT Custom GPT Actions to query and write to the knowledge base through the REST API and OpenAPI specification with API key authentication.
Captures YouTube video transcripts via yt-dlp or the kb_capture_youtube tool for ingestion and retrieval in the knowledge base.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@knowledge-base-serversearch my notes for the Docker networking pattern"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
knowledge-base-server
Make every AI agent you use smarter.
A persistent memory system that captures, classifies, synthesizes, and retrieves knowledge for AI agents. One brain, multiple agents, compounding intelligence. Production-proven with 200+ documents, three agents (Claude, Codex, Gemini), and daily use.
This is not just a search engine. It is an intelligence pipeline that turns raw information into refined, retrievable knowledge -- and gets smarter every session.
The Problem
AI agents are stateless. Every session starts from zero. You end up:
Copy-pasting context between sessions
Re-explaining your codebase, architecture, and preferences
Watching agents hallucinate because they lack YOUR information
Losing debugging insights that took hours to discover
Running multiple agents that can't share what they know
The smarter the model, the more painful the amnesia. Context is the bottleneck, not intelligence.
Related MCP server: wadachi
The Solution
knowledge-base-server sits between your knowledge and your AI agents. It ingests everything -- your Obsidian vault, code, documents, YouTube transcripts, X bookmarks, terminal sessions -- and serves it through MCP and REST APIs. Every agent you use reads from and writes to the same brain.
Your AI gets smarter every day. Every session builds on the last.
Obsidian Vault ------+
Code Repos ----------+
YouTube Transcripts --+---> [ KB Server ] ---> SQLite + FTS5 ---> [ MCP ] ---> Claude Code
X/Twitter Bookmarks -+ | | Codex CLI
Web Clippings -------+ Port 3838 Embeddings [ REST ] --> Gemini CLI
Terminal Sessions ----+ Web Dashboard Semantic Search ChatGPT
Bug Fix Captures -----+ Any MCP ClientObsidian is the source of truth -- the human layer where you organize, link, and curate knowledge. The KB server is the optimized retrieval layer that makes it AI-ready with minimal token usage.
How It Works: The Intelligence Pipeline
This is the core differentiator. Raw information flows through seven layers to become actionable intelligence:
1. Capture Layer
Ingest from everywhere:
Obsidian vault -- bidirectional sync, auto-indexes on changes
YouTube transcripts -- via yt-dlp or
kb_capture_youtubeX/Twitter bookmarks -- browser export to markdown, auto-ingest
Web articles -- Obsidian Web Clipper or
kb_capture_webTerminal sessions --
kb_capture_sessionrecords what worked, failed, and whyBug fixes --
kb_capture_fixrecords symptom, cause, and resolutionCode, PDFs, text -- 20+ file types with automatic type detection
Every source enters the system as a raw capture, ready for processing.
2. Classification Layer
The kb_classify tool runs AI classification on unprocessed content:
Assigns document type (research, idea, workflow, lesson, fix, decision, session)
Auto-generates tags and project routing
Writes structured summaries and key topics
Adds confidence scoring
Enforces frontmatter discipline on every note
Raw clippings become structured, searchable knowledge automatically.
3. Promotion Pipeline
Raw captures get refined into higher-value knowledge artifacts:
Captures in inbox get normalized into sources
Sources get promoted to insights, lessons, decisions, runbooks
The
kb_promotetool extracts structured knowledge from raw materialHigher-value knowledge ranks higher in retrieval
The system distinguishes signal from noise automatically
4. Synthesis Layer
The kb_synthesize tool connects dots across sources:
Reads recent notes across all types and projects
Identifies recurring themes, patterns, and bottlenecks
Surfaces opportunities and workflow improvements
Generates cross-cutting insights that no single source contains
This is where raw information becomes actionable intelligence
5. Three-Tier Memory (Cold / Warm / Hot)
Not all knowledge is equal. The system uses three tiers to prevent context pollution:
Tier | What Lives Here | When Retrieved | Example |
Hot | Active project context, recent sessions, current decisions | First, always | "How did we fix auth yesterday?" |
Warm | Accumulated lessons, research, validated workflows | When relevant to query | "What's our Docker networking pattern?" |
Cold | Raw captures, archived sources, old terminal logs | Only when deep-diving | "What did that YouTube video say about caching?" |
Why three tiers? Without tiering, a search for "authentication" returns every raw article you ever clipped alongside your actual auth architecture decision. The tiers ensure agents get signal, not noise. Hot knowledge is always fresh and relevant. Cold knowledge is preserved but doesn't pollute active context.
6. Token-Optimized Retrieval
Every token costs money and context window space. The retrieval system minimizes waste:
kb_contextreturns summaries and metadata WITHOUT full content -- 90%+ token savingskb_searchuses FTS5 with BM25 ranking, title boosting, and AND-first precisionkb_search_smartcombines keyword and semantic search for conceptual querieskb_readloads full content only when needed, after context identifies relevant docsAgents get the right information in the fewest possible tokens
7. The Self-Learning Loop
This is the core innovation. The system compounds intelligence over time:
Sessions 1-10: AI makes mistakes. You correct. Fixes get captured.
Sessions 10-50: AI recognizes patterns. Starts getting things right more often.
Sessions 50-100: AI knows your codebase, preferences, architecture patterns.
Sessions 100+: One-shot clean code. Accumulated context covers everything.The loop in detail:
AI agent attempts a task
Output gets evaluated (human judgment -- the irreplaceable element)
Corrections and findings get captured (
kb_capture_session,kb_capture_fix)KB server ingests the session data
kb_synthesizeorganizes and connects to existing knowledgeAgent instructions auto-update with lessons learned
Next session starts with better context
Repeat -- compounding improvement
This is NOT fine-tuning. NOT RLHF. It is self-modifying instructions through operational history. The model doesn't change. The context it receives does. And context is everything.
Features
Core
SQLite FTS5 full-text search with BM25 ranking and highlighted snippets
Semantic/vector search via local HuggingFace embeddings (Xenova/all-MiniLM-L6-v2) — no API keys needed
Hybrid search mode (
kb_search_smart) combining keyword + semantic for conceptual queriesWeb dashboard for browsing, searching, and managing documents
CLI for all operations (
kb start,kb search,kb ingest,kb setup)One-command MCP registration (
kb register)Interactive setup wizard (
kb setup) with agent-compatible auto mode
Ingestion
20+ file types: Markdown, text, code, PDFs, JSON, YAML, XML, CSV
Auto-ingest on first run (~/knowledgebase + Claude memory directories)
Duplicate detection via content hashing
Obsidian vault bidirectional sync with incremental indexing
YouTube transcript capture
X/Twitter bookmark ingestion
Web article capture with metadata
Intelligence
AI auto-classification (type, tags, summary, key topics, confidence)
Knowledge promotion pipeline (raw -> structured)
Cross-source synthesis (themes, patterns, opportunities)
Three-tier memory (cold/warm/hot) with tier-aware retrieval
Token-optimized context briefings (90%+ savings over full reads)
Session and fix capture for operational learning
Safety review for destructive actions (multi-model consensus)
Integration
MCP server (stdio for local, StreamableHTTP for remote)
REST API with OpenAPI 3.1 specification
ChatGPT Custom GPT Actions via OpenAPI import
OAuth 2.1 with OIDC discovery for remote access
API key authentication for scripts and automation
systemd service with auto-restart for production deployment
Security
bcrypt password hashing with HttpOnly session cookies
Dual auth: API keys (fast path) + OAuth 2.1 Bearer tokens (signed JWTs bound to the MCP resource)
No self-registration: OAuth accounts are created by the operator with
kb auth add-userThree separate API keys for Claude, OpenAI, and Gemini
Safety review tool checks KB history before destructive actions
No external dependencies for core functionality
Quickstart
Prerequisites
Node.js >= 18.0.0
That's it. No external databases, no Docker required, no cloud dependencies.
Install
git clone https://github.com/willynikes2/knowledge-base-server.git
cd knowledge-base-server
npm install
npm linkFirst Run (Interactive Setup Wizard)
kb setupThe wizard detects your environment, asks which AI agents you use, configures everything, and runs your first ingest. Takes about 60 seconds.
For agent-driven installation (no prompts):
kb setup --auto --password=yourpass --vault=~/obsidian-vault --agents=claude,codex --deploy=systemdManual Setup
KB_PASSWORD=yourpassword kb start # Start server on port 3838
kb register # Register MCP with Claude, Codex, and Gemini
kb register --agents=claude,codex # Register only a subset
kb ingest ~/obsidian-vault # Ingest your knowledge
kb search "docker networking" # Search from terminal
kb status # Check statsConnect to Local Agents
After kb register, Claude Code, Codex CLI, and Gemini CLI automatically point at kb mcp. Restart the sessions you want to update, then test it:
> Search the knowledge base for recent bug fixesYour agent will use kb_search and return results from your accumulated knowledge.
Don't Want to Self-Host? Use Memstalker
Memstalker is the hosted version of knowledge-base-server. Same engine, zero infrastructure.
Self-Hosted (Free) | Memstalker Hosted | |
Cost | Free forever | From $12/mo |
Setup | Clone, install, configure | Sign up, connect your agents |
Infrastructure | You run the VPS | We handle everything |
Updates |
| Automatic |
Multi-device sync | You configure | Built-in |
Backups | You manage | Automatic |
All 16 MCP tools | Yes | Yes |
Obsidian integration | Yes | Yes |
REST API + ChatGPT | Yes | Yes |
Self-host if: You want full control, have a VPS, and enjoy running your own infrastructure.
Use Memstalker if: You want persistent AI memory without managing servers. Connect your agents in minutes.
First 500 early adopters get Pro at $12/mo forever (normally $25): memstalker.com
MCP Tools
Core tools (stdio + HTTP)
All 16 core tools are available via both stdio and HTTP:
Tool | Description |
| Full-text search with BM25 ranking and highlighted snippets |
| Hybrid keyword + semantic search for conceptual queries |
| Token-efficient briefing -- summaries only, 90%+ savings. Use BEFORE kb_read |
| Read full document content by ID |
| List documents filtered by type or tag |
| Write a new note to the Obsidian vault |
| Ingest raw text directly into the database |
| Auto-classify unprocessed notes (type, tags, summary) |
| Promote raw source into structured knowledge |
| Generate cross-source synthesis connecting recent knowledge |
| Record a debugging/coding session with findings |
| Record a bug fix with symptom, cause, resolution |
| Capture a web article with content and metadata |
| Capture a YouTube transcript with metadata |
| Show vault indexing stats by type and project |
| Review a destructive action against KB history |
Local-only bus tools (stdio only)
The stdio MCP server also exposes a lightweight append-only message bus for cross-model coordination:
Tool | Description |
| Send a markdown message to a local channel |
| Read messages newer than a cursor |
| Long-poll until a new message arrives or timeout elapses |
Resource template: bus://{channel}
Shell shims:
bus-send ticket:PF-1884 "report ready" --sender codex --kind result
bus-inbox ticket:PF-1884 --since 0
bus-wait ticket:PF-1884 --since 12 --timeout-ms 30000See docs/message-bus.md for channel conventions and cross-model usage.
Mistake ledger tools (local stdio only)
Tool | Description |
| Record a mistake a reviewer or test caught, with its fix |
| Get up to 3 approved "known pitfalls" that match a task |
CLI Commands
kb setup Interactive setup wizard (--auto for agent mode)
kb start Start the dashboard + API server (default :3838)
kb stop Stop the running server
kb mcp Start MCP stdio server (used by AI tools)
kb register Register MCP server with Claude Code
kb ingest <path> Ingest a file or directory
kb search <query> Search documents from terminal
kb status Show stats and server status
kb classify Auto-classify unprocessed vault notes
kb summarize Generate AI summaries for unsummarized notes
kb capture-x Ingest X/Twitter bookmarks from export
kb safety-check Review a planned action against KB history
kb mistakes Mistake ledger: import-sdd, import-seed, record, record-run, list, stats
kb patterns Patterns from repeated mistakes: draft, list, page, set-statusArchitecture
+------------------+
| AI Agents |
| Claude | Codex |
| Gemini | ChatGPT |
+--------+---------+
|
MCP (stdio) | REST API (/api/v1/)
MCP (HTTP) | OpenAPI 3.1
|
+--------+---------+
| KB Server |
| Express :3838 |
+--------+---------+
|
+-------------------+-------------------+
| | |
+--------+-------+ +-------+--------+ +-------+--------+
| SQLite + FTS5 | | Embeddings | | Obsidian |
| documents | | all-MiniLM | | Vault Sync |
| vault_files | | L6-v2 local | | (bidirectional)|
| embeddings | | cosine sim | | source of truth|
+----------------+ +----------------+ +----------------+Data directory: ~/.knowledge-base/
kb.db-- SQLite database with FTS5 indexfiles/-- Ingested file copiesconfig.json-- Password hash and settings
Supported File Types
Category | Extensions |
Markdown | .md |
Text | .txt, .log, .json, .yaml, .yml, .xml, .csv |
Code | .js, .ts, .jsx, .tsx, .py, .go, .rs, .java, .rb, .sh, .bash, .c, .cpp, .h, .hpp, .html, .css, .sql, .toml |
.pdf (with text extraction) | |
Config | .env, .ini, .cfg, .conf |
Content Ingestion Examples
Obsidian Vault
# Set vault path in .env
OBSIDIAN_VAULT_PATH=~/obsidian-vault
# Or ingest manually
kb ingest ~/obsidian-vaultThe vault indexer tracks file hashes for incremental updates -- only changed files get re-indexed.
YouTube Transcripts
# Download transcript
yt-dlp --write-auto-sub --skip-download -o transcript https://youtube.com/watch?v=VIDEO_ID
# Or use the MCP tool directly from your AI agent:
# kb_capture_youtube with URL and transcript textX/Twitter Bookmarks
# Export bookmarks to markdown using twitter-web-exporter (browser extension)
# Then ingest:
kb ingest ~/bookmarks/x_bookmarks.md
# Or use the built-in capture command:
kb capture-x ~/path/to/x_bookmarks.mdTerminal Sessions
From your AI agent after a debugging session:
Use kb_capture_session to record:
- goal: "Fix authentication flow for email users"
- commands_worked: "docker exec postgres psql query"
- commands_failed: "curl returned 401 - missing jellyfin_user_id"
- root_causes: "Email login path didn't propagate jellyfin_user_id to frontend"
- fixes: "Added jellyfin_user_id to auth response schema"
- lessons: "Always check all auth paths when adding fields to user response"Bug Fixes
Use kb_capture_fix to record:
- title: "Library page blank for email login users"
- symptom: "Library page shows empty, no media items loaded"
- cause: "jellyfin_user_id not included in email auth response"
- resolution: "Added field to shared auth schema, redeployed"Multi-Agent Setup
Claude Code (MCP -- Native)
kb register # Writes to ~/.claude.json, ~/.codex/mcp.json, ~/.gemini/mcp.jsonAll 16 MCP tools become available in Claude Code immediately.
Codex / Other MCP Agents
Point your MCP client at the stdio transport:
{
"mcpServers": {
"knowledge-base": {
"command": "node",
"args": ["/path/to/knowledge-base-server/bin/kb.js", "mcp"]
}
}
}ChatGPT plugin (remote MCP with OAuth)
The HTTP MCP endpoint at https://your-domain.com/mcp signs clients in through OAuth. A ChatGPT plugin only shows its Connect button when the plugin's mcp.json declares that. Without the auth block, ChatGPT treats the server as needing no sign-in, and the server refuses every request.
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/mcp.schema.json",
"mcpServers": {
"knowledge-base": {
"type": "streamable-http",
"url": "https://your-domain.com/mcp",
"extensions": {
"com.openai": {
"auth": {
"type": "oauth",
"client": { "mode": "dcr" },
"baseScopes": ["openid", "offline_access"]
}
}
}
}
}
}dcr: ChatGPT registers itself as an OAuth client. The package holds no client ID, secret or API key.Endpoints are found through discovery (
/.well-known/oauth-protected-resource/mcp), so no URL overrides are needed.offline_accessgets ChatGPT a refresh token. Without it you sign in again every hour.Sign in with the account created by
kb auth add-user <email>. Public sign-up is off.
ChatGPT Custom GPTs (REST API)
Import the OpenAPI spec from
https://your-domain.com/openapi.jsonSet authentication to API Key with header
X-API-KeyChatGPT can now search, read, and write to your knowledge base
REST API endpoints at /api/v1/:
GET /api/v1/search?q=query-- Full-text searchGET /api/v1/search/smart?q=query-- Semantic searchGET /api/v1/context?q=query-- Token-efficient briefingGET /api/v1/documents-- List documents`GET /api/v1/docu
This server cannot be deployed
Maintenance
Related MCP Connectors
A second brain for your AI agent. Shared memory for your team's AI agents, plus public and private knowledge bases — works with ChatGPT, Claude, Cursor and any MCP client.
Persistent memory for AI agents across Claude, ChatGPT and any MCP client.
Persistent AI memory shared across Claude, ChatGPT, coding agents, and compatible MCP clients.
- memnodeOAuthdev.memnode
Persistent, inspectable memory for AI agents with lineage, correction, and a hosted MCP endpoint.
Related MCP Servers
- AlicenseBqualityCmaintenancePersistent memory engine for AI coding agents. Single Go binary, zero runtime dependencies, MCP-native. Stores, searches, and deduplicates memories across sessions using embedded SQLite with hybrid FTS + semantic search, memory decay, relation graph, and token-budget context assembly.1023MIT
- AlicenseBqualityBmaintenancePersistent memory for AI agents built on the LLM Wiki pattern: a plain-Markdown brain (also a valid Obsidian vault) with SQLite metadata, local semantic search via fastembed (no API keys), one-call session context with project auto-detection, and a decision log with rationale. Works with Claude Code, Claude Desktop, Cursor, and any MCP client.31MIT
- AlicenseAqualityAmaintenanceThe open-source, self-organizing memory for all your AI tools. Persistent memory over MCP (remember, recall, observe): background agents extract entities, resolve conflicts, and keep cited syntheses current in an append-only, encrypted, single-tenant vault.36AGPL 3.0
- AlicenseNot gradedqualityBmaintenanceProvides AI companion agents a local-first, append-first long-term memory backend with layered memory, hybrid recall, review-based updates, and a continuity sub-brain, exposed via REST and MCP interfaces.2MIT