Ucp-Local – Offline RAG for Claude Desktop, Cursor, and LM Studio Ucp-Local, an open-source offline RAG server, launched as a single-binary MCP tool that indexes local files for use with Claude Desktop, Cursor, and LM Studio. The tool provides hybrid retrieval, tree-sitter code chunking, and full offline operation via Ollama, targeting privacy-sensitive workflows and air-gapped environments. A local-first MCP server that grounds LLMs in your own files. UCP indexes folders on your machine — notes, code, conversation exports — and exposes them to any MCP-compatible client Claude Desktop, Cursor, LM Studio, and other local-agent runtimes as a single tool: search local context . Hybrid retrieval BM25 + vector , tree-sitter-aware code chunking, full citations, content-hash embedding cache. Single binary. No telemetry. No cloud. Paired with a local model in LM Studio or Ollama via ucp-local ask , the whole stack — indexing, embeddings, retrieval, and the chat model — runs fully offline. Works on a plane, in an air-gapped facility, or anywhere a cloud LLM isn't an option. Conversation memory — make every past Claude chat searchable across every future session. Air-gap RAG — local Ollama + local index, zero network traffic. Quick start — install, index, ask, in under a minute. | If you are… | UCP gives you… | |---|---| A Claude / Cursor / LM Studio power user | A searchable archive of every past AI conversation, callable from any future session as the search local context tool. | A software engineer | Code + private docs + sibling repos + past Claude chats unified under one MCP tool — surfaced inside Cursor or Claude Code alongside their native indexers. | A researcher, writer, or academic | A PDF + notes corpus you can ask grounded questions against, with line-level citations, without anything leaving the machine. | In a privacy-regulated workflow legal, medical, defense, NDA-bound IP | A single Rust binary with zero telemetry and zero cloud. Pair with LM Studio for a fully offline, end-to-end RAG stack. | A solo founder or consultant | Per-folder client isolation via folder filter — no risk of leaking client A's context into client B's session. | Full audience analysis, competitive comparison, and the two wedges UCP is explicitly built to win on: see POSITIONING.md /akshay2211/universal-context-pipeline/blob/master/POSITIONING.md . v0.1, headless. Track scope in ROADMAP.md /akshay2211/universal-context-pipeline/blob/master/ROADMAP.md . What ships: - Hybrid search: SQLite FTS5 BM25 ⨉ sqlite-vec ANN merged via reciprocal-rank fusion. - Tree-sitter chunking for Rust, Python, TypeScript/JavaScript. Heading-aware Markdown. Sentence-bounded prose fallback. - Conversation memory: ingest your Claude conversations.json export and search across past chats. - PII masking on by default — email, OpenAI sk- , AWS keys, GitHub PATs, JWT. - Content-hash embedding cache: re-indexing unchanged content makes zero Ollama calls. - Filesystem watcher: edit a file, the index updates in ~500ms. What's not in v0.1: - Desktop UI / tray deferred — was in original spec, now in ROADMAP tier 2+ . - OS hotkey injector and HTTP proxy interceptor cut from the original spec . - OpenAI / Anthropic embedding providers Ollama only for now . - Cursor and ChatGPT export formats Claude only; others later . UCP needs three things on your machine: Rust to build , Ollama to embed and optionally chat , and Poppler for robust PDF text extraction — recommended . brew install ollama poppler ollama serve & or use the menu-bar app ollama pull nomic-embed-text Optional, for ucp-local ask : ollama pull llama3.2 sudo apt install poppler-utils curl -fsSL https://ollama.com/install.sh | sh ollama pull nomic-embed-text Optional, for ucp-local ask : ollama pull llama3.2 sudo dnf install poppler-utils curl -fsSL https://ollama.com/install.sh | sh ollama pull nomic-embed-text choco install poppler ollama or install each manually ollama pull nomic-embed-text Rust stable, edition 2024 is needed only to build from source. If you install a pre-built UCP binary, skip the Rust install. Poppler is optional but recommended.Without it, UCP only uses the bundled pdf-extract for PDFs, which struggles with PDFs whose body fonts lack a ToUnicode CMap you'll see headings extract but body text go missing . With pdftotext from Poppler on PATH, UCP falls back to it automatically. Note on the name.The crate is published ason crates.io — the bare ucp-local ucp name was taken. The binary on your PATH is also ucp-local that's what you type on the command line , and the library is imported as use ucp local::... . cargo install ucp-local Puts the ucp-local binary on your PATH git clone