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., "@Personal Semantic Search MCPsearch for notes about Python authentication patterns"
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.
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
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Claude Code │────▶│ MCP Server │────▶│ ChromaDB │
│ (MCP Client) │ │ (FastMCP) │ │ (Vectors) │
└─────────────────┘ └──────────────────┘ └─────────────────┘
│
▼
┌──────────────────┐
│ Sentence- │
│ Transformers │
│ (Embeddings) │
└──────────────────┘Installation
# Clone the repository
git clone https://github.com/Ethan2298/personal-semantic-search-mcp.git
cd personal-semantic-search-mcp
# Create virtual environment
python -m venv .venv
# Activate (Windows)
.venv\Scripts\activate
# Activate (Unix/macOS)
source .venv/bin/activate
# Install dependencies
pip install -r requirements.txtConfiguration
Claude Code Setup
Add to your ~/.claude/.mcp.json:
{
"mcpServers": {
"semantic-search": {
"command": "/path/to/your/.venv/Scripts/python.exe",
"args": ["/path/to/your/mcp_server.py"]
}
}
}Then enable in ~/.claude/settings.json:
{
"enabledMcpjsonServers": ["semantic-search"]
}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
# Index a folder
python search.py index ~/Desktop/Notes
# Search
python search.py query "how to implement authentication"
# Watch for changes (real-time indexing)
python search.py watch ~/Desktop/Notes
# Show statistics
python search.py statsModule 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