Ucp-local 0.1: a local MCP server that indexes your files for Claude Desktop / Cursor / LM Studio
⚓ Rust 📅 2026-06-17 👤 surdeus 👁️ 3I spent the last few days building ucp-local and just pushed 0.1 to crates.io. It's a small CLI that indexes folders on your machine and exposes them over MCP (stdio) as a single tool, search_local_context, which any MCP client can call. I use it to make past Claude conversations
searchable from inside future Claude sessions, and to ground Cursor in private notes its own indexer can't see.
Everything is local. Storage is rusqlite with sqlite-vec for ANN and FTS5 for BM25, fused with reciprocal rank. Embeddings go through Ollama (default nomic-embed-text). Tree-sitter does the code chunking for Rust, Python, and TS/JS at the function/impl/class level; prose falls back to
tiktoken-rs cl100k sentence-bounded chunks. A SHA-256 content hash sits in front of the embedder so re-indexing unchanged files is free.
Things it does not do in 0.1: no OpenAI/Cohere embeddings (Ollama only), no ChatGPT/Cursor conversation imports (Claude only), no .gitignore awareness, no reranker, no UI. Headless binary.
Install is cargo install ucp-local, then ollama pull nomic-embed-text, then point your MCP client at ucp-local serve. README has snippets for Claude Desktop, Cursor, and LM Studio.
Apache-2.0. Repo: universal-context-pipeline
Would genuinely appreciate feedback on the chunker, especially the sentence boundary detector on non-English prose, which I have not tested.

3 posts - 2 participants
🏷️ Rust_feed