lake-of-vectors

lake-of-vectors

Enables semantic search over local knowledge bases like Obsidian notes, SQLite, and plaintext files, exposing results to Claude via MCP server.

Category
Visit Server

README

Lake of Vectors

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-v2 via sentence-transformers. No API key needed.
  • OpenAI: Uses text-embedding-3-small or another OpenAI model. Requires api_key in 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

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured