Lake Of Vectors
FreeNot checkedEnables semantic search over local knowledge bases like Obsidian notes, SQLite, and plaintext files, exposing results to Claude via MCP server.
About
Enables semantic search over local knowledge bases like Obsidian notes, SQLite, and plaintext files, exposing results to Claude via MCP server.
README
Local semantic search over your personal knowledge bases. Index Obsidian notes, SQLite databases, plaintext, and Notion/Confluence (not supported yet) files into ChromaDB, exposed to Claude via an MCP server.
Features
- Multiple Publishers: Crawl Markdown directories, SQLite tables, and plaintext files
- Semantic Search: Find relevant content by meaning, not just keywords
- Local Vectors: Runs entirely on your machine with sentence-transformers
- OpenAI Support: Optional OpenAI embeddings if preferred
- MCP Server: Integrates directly with Claude Code for seamless querying
Installation
uv pip install -e .
Configuration
Copy the example config and adjust paths for your sources:
mkdir -p ~/.config/lake-of-vectors
cp config.example.yaml ~/.config/lake-of-vectors/config.yaml
Edit ~/.config/lake-of-vectors/config.yaml:
sources:
- type: markdown
name: my-notes
path: ~/obsidian-vault/Notes/
- type: sqlite
name: knowledge-db
path: ~/knowledge.db
table: notes
content_column: body
metadata_columns: [title, tags]
- type: plaintext
name: misc-notes
path: ~/notes/
embedding:
backend: local
model: all-MiniLM-L6-v2
Source Types
| Type | Description |
|---|---|
markdown |
Recursive crawl of .md files in a directory |
sqlite |
Query a SQLite table with content and metadata columns |
plaintext |
Recursive crawl of .txt files in a directory |
Embedding Backends
- Local (default): Uses
all-MiniLM-L6-v2via sentence-transformers. No API key needed. - OpenAI: Uses
text-embedding-3-smallor another OpenAI model. Requiresapi_keyin config.
embedding:
backend: openai
model: text-embedding-3-small
api_key: sk-...
Usage
Sync your sources
lake sync # Sync all sources
lake sync --source my-notes # Sync only one source
lake sync --rebuild # Delete and re-embed everything
Check status
lake status
Start the MCP server
lake serve
Claude Code Integration
Register as a global MCP server using the Claude Code CLI:
claude mcp add -s user lake-of-vectors $(pwd)/.venv/bin/lake serve
The -s user scope makes it available in all sessions. Restart Claude Code after running.
Qwen Code Integration
Register as a global MCP server using the Qwen Code CLI:
qwen mcp add -s user lake-of-vectors $(pwd)/.venv/bin/lake serve
The -s user scope makes it available in all sessions. Restart Qwen Code after running.
To scope it to a single project instead, add a .mcp.json file in the project root:
{
"mcpServers": {
"lake-of-vectors": {
"command": "lake",
"args": ["serve"]
}
}
}
Add to your CLAUDE.md:
When answering security questions or searching your personal knowledge, always use lake-of-vectors semantic_search first.
CLI Commands
| Command | Description |
|---|---|
lake sync |
Sync all configured sources into ChromaDB |
lake sync --source <name> |
Sync a specific source |
lake sync --rebuild |
Delete all vectors and re-sync everything |
lake prune |
Remove stale collections not in current config |
lake prune --dry-run |
Preview what would be pruned without deleting |
lake serve |
Start the MCP server (stdio mode) |
lake status |
Show sync status for all sources |
Data
ChromaDB vectors are stored at:
~/.local/share/lake-of-vectors/chromadb
Architecture
┌──────────────────────────────────────────────────────────────────┐
│ lake-of-vectors │
│ │
│ ┌─────────────┐ ┌──────────────────┐ ┌──────────────────┐ │
│ │ Publishers │──▶│ Sync Engine │──▶│ ChromaDB │ │
│ │ │ │ │ │ (on-disk) │ │
│ │ • Markdown │ │ • Chunking │ │ │ │
│ │ • SQLite │ │ • Content hash │ │ one collection │ │
│ │ • Plaintext │ │ diffing │ │ per source │ │
│ └─────────────┘ │ • Embedding │ └────────┬─────────┘ │
│ │ • ChromaDB upsert│ │ │
│ └──────────────────┘ │ │
│ │ │
│ ┌─────────────────────┐ ┌──────────────────┐ │ │
│ │ Embedding Backends │ │ MCP Server │◀───┘ │
│ │ │ │ (stdio) │ │
│ │ • Local │ │ │ │
│ │ (sentence- │ │ • semantic_search│ │
│ │ transformers) │ │ • list_sources │ │
│ │ • OpenAI API │ └──────────────────┘ │
│ └─────────────────────┘ │
│ │
│ CLI: lake sync | lake serve | lake prune | lake status │
└──────────────────────────────────────────────────────────────────┘
License
MIT
Install Lake Of Vectors in Claude Desktop, Claude Code & Cursor
unyly install lake-of-vectorsInstalls into Claude Desktop, Claude Code, Cursor & VS Code — handles npx, uvx and build-from-source repos for you.
First time? Get the CLI: curl -fsSL https://unyly.org/install | sh
Or configure manually
Run in your terminal:
claude mcp add lake-of-vectors -- uvx --from git+https://github.com/tungpun/lake-of-vectors lake-of-vectorsFAQ
Is Lake Of Vectors MCP free?
Yes, Lake Of Vectors MCP is free — one-click install via Unyly at no cost.
Does Lake Of Vectors need an API key?
No, Lake Of Vectors runs without API keys or environment variables.
Is Lake Of Vectors hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Lake Of Vectors in Claude Desktop, Claude Code or Cursor?
Open Lake Of Vectors on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
wenb1n-dev/SmartDB_MCP
A universal database MCP server supporting simultaneous connections to multiple databases. It provides tools for database operations, health analysis, SQL optim
by wenb1n-devPostgres Server
This server enables interaction with PostgreSQL databases through the Model Context Protocol, optimized for the AWS Bedrock AgentCore Runtime. It provides tools
by madhurprashPostgres
Query your database in natural language
by AnthropicPostgreSQL
Read-only database access with schema inspection.
by modelcontextprotocolCompare Lake Of Vectors with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All data MCPs
