ai-lab
Click on "Install 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., "@ai-labfind notes about local embedding setup"
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.
AI Lab - Local-First RAG Second Brain
A retrieval-augmented knowledge base that runs entirely on your machine. It ingests markdown and an Obsidian vault, embeds every chunk locally with no API key, stores the vectors in SQLite, and answers semantic queries over hybrid keyword + vector search. It plugs into Claude Code over MCP so an AI assistant can pull your own notes before it answers.
No cloud. No API key for retrieval. Your notes never leave the machine.
$ npm run search "how do I keep my notes private without a cloud API"
[note] Local Embeddings and Local LLMs (score 0.550)
You do not have to send your notes to a cloud API to embed them. transformers.js
runs sentence-embedding models directly in Node with no API key and no network...That match came from pure semantic similarity - the query shares no keywords with the note title.
What it demonstrates
Capability | How |
RAG | Ingest -> chunk by heading -> embed -> retrieve -> assemble context. |
Vector DB | Embeddings stored as BLOBs in SQLite; brute-force cosine scan + FTS5 keyword index in one file. |
Local embeddings (key-free) |
|
Second brain -> Obsidian | Point |
Exposed to Claude Code (MCP) |
|
Related MCP server: MCP Apple Notes
Quickstart
npm install # native build needs Python <= 3.13
npm run ingest # embeds the bundled sample notes
npm run search "vector search" # semantic + keyword retrieval
npm run ask "what is a second brain" # assembled context block
npm run statsIndex your own Obsidian vault:
OBSIDIAN_VAULTS="$HOME/Documents/My Vault" npm run ingestWire it into Claude Code as a tool:
claude mcp add ai-lab -- npx tsx /absolute/path/to/ai-lab/src/mcp-server.tsHow retrieval works
Ingest - markdown is split on H1-H3 boundaries so each chunk stays topically coherent, with a hard cap (~1600 chars) on long sections.
Embed - each chunk is mean-pooled and L2-normalized into a 384-dim vector, so a raw dot product equals cosine similarity.
Store - vectors live as BLOBs next to their text in SQLite; an FTS5 virtual table indexes the same chunks for keyword recall.
Retrieve (hybrid) - the query is embedded and scored by cosine against every chunk; FTS5 keyword hits get a small boost. Keyword catches exact terms, vectors catch paraphrase - the blend beats either alone.
Assemble - top chunks are packed into a token-budgeted context block ready to ground a prompt.
Stack
TypeScript + Node (ESM, run directly with
tsx)@huggingface/transformers- local sentence embeddingsbetter-sqlite3- vectors + FTS5, single-file store@modelcontextprotocol/sdk- MCP server for Claude Code
More AI projects
Part of a wider set of AI tooling:
nexus - 12-agent system for Claude Code, structured multi-agent roles
diagrams - describe a diagram in plain English, get rendered Mermaid
decks - AI slide-deck generator from a topic prompt
score-card - technical-interview rubric with Claude feedback
mimi - live meeting transcription with an AI summary
local-apps - self-healing dev monitor with AI fix agents
automations - visual node-based automation flow builder
claude-live - Rust WebSocket server streaming Claude Code sessions
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/bunlongheng/ai-lab'
If you have feedback or need assistance with the MCP directory API, please join our Discord server