Personal Semantic Search MCP
A Model Context Protocol (MCP) server that enables semantic search over your local notes and documents. Built for use with Claude Code and other MCP-compatible clients.
Features
Semantic Search: Find notes by meaning, not just keywords
Multiple File Types: Supports Markdown, Python, HTML, JSON, CSV, and plain text
Smart Chunking: Preserves document structure with header hierarchy
Fast Local Embeddings: Uses
all-MiniLM-L6-v2(384 dimensions, runs on CPU)ChromaDB Storage: Persistent vector database with incremental indexing
File Watching: Optional real-time re-indexing on file changes
Architecture
Installation
Configuration
Claude Code Setup
Add to your ~/.claude/.mcp.json:
Then enable in ~/.claude/settings.json:
Usage
MCP Tools (via Claude Code)
Once configured, Claude Code can use these tools:
Tool | Description |
| Semantic search with natural language queries |
| Index or re-index your vault |
| Show indexing statistics |
CLI Usage
Module Overview
File | Purpose |
| FastMCP server exposing tools via stdio |
| High-level search and indexing API |
| Sentence-transformer embeddings |
| ChromaDB storage and retrieval |
| Document chunking with overlap |
| Multi-format text extraction |
| File system change detection |
How It Works
File Reading: Extracts text from various formats (Markdown, Python, HTML, etc.)
Chunking: Splits documents into ~500 token chunks with 50 token overlap, preserving header hierarchy
Embedding: Converts chunks to 384-dimensional vectors using
all-MiniLM-L6-v2Storage: Stores vectors in ChromaDB with metadata (file path, headers, timestamps)
Search: Embeds queries and finds nearest neighbors by cosine similarity
Performance Notes
First startup: ~10 seconds (loading sentence-transformers model)
Indexing speed: ~100 documents/minute (depends on size)
Search latency: <100ms after warmup
Model size: ~80MB (downloaded on first run)
Requirements
Python 3.10+
~500MB disk space (model + dependencies)
Works on CPU (no GPU required)
License
MIT