Skip to main content
Glama
code-lawyer

rag-retriever-mcp

by code-lawyer

rag-retriever

A lightweight, local-first document retrieval engine that mounts to an agent as an MCP tool. Drop files in; the agent searches them and answers with its own LLM. There is no LLM in here — this is only the "front half" of RAG (extract → chunk → embed → store + similarity search).

your agent (owns the LLM)
   │  calls MCP tool: search("question")
   ▼
rag-retriever ──► extract ─► chunk ─► embed ─► LanceDB
   ▲                                              │
   └────────── returns relevant passages ◄────────┘
   │
   agent reads passages → answers with its own LLM

Built from the same proven pieces as Open Notebook (file extraction + bge-m3 embeddings + vector search), minus the heavyweight backend, UI, and answer/podcast generation you don't need.

Why this shape

  • One LLM, not two. The retriever never answers; your agent does. You keep full control of reasoning, prompts, and cost.

  • Local-first. Default backend (fastembed) runs entirely offline, no server.

  • Pluggable embeddings. Switch between fully local and a China-friendly cloud API (SiliconFlow) with one env var — no code change.

Related MCP server: MemoryMesh

Install

cd rag-retriever
uv sync
cp .env.example .env   # then pick your embedding backend

Configure the embedding backend (.env)

RAG_EMBED_BACKEND

What it uses

Notes

local (default)

fastembed (ONNX, in-process)

100% offline, no server, heavier first install

ollama

local Ollama daemon

ollama serve + ollama pull bge-m3

openai

OpenAI-compatible API (e.g. SiliconFlow)

needs RAG_OPENAI_API_KEY; text leaves the machine

⚠️ Index-time and query-time must use the same backend + model. Changing the model means re-indexing everything.

Use (CLI, for testing)

uv run rag-retriever index "C:\path\to\docs"     # a file or a whole folder
uv run rag-retriever search "什么是表见代理" -k 5
uv run rag-retriever list
uv run rag-retriever stats

Mount as an MCP server (the real entry point)

Run uv run rag-retriever-mcp (stdio). Register it with your MCP client. For Claude Code, add to your MCP config:

{
  "mcpServers": {
    "rag-retriever": {
      "command": "uv",
      "args": ["run", "--directory", "D:\\Vibe Coding Items\\rag-retriever", "rag-retriever-mcp"]
    }
  }
}

Tools exposed: index_path, search, list_sources, stats.

Supported files

pdf, docx, pptx, xlsx, html, md, txt, csv, json, epub (via markitdown). Scanned / image-only PDFs need an OCR engine (tesseract) installed separately; without it they extract empty and are reported as skipped.

Layout

rag_retriever/
  config.py     # env-driven config; picks the embedding backend
  extract.py    # file -> text (markitdown)
  chunk.py      # token-based chunking with overlap
  embed.py      # local | ollama | openai-compatible backends
  store.py      # LanceDB vector store (embedded, no server)
  pipeline.py   # ingest + search orchestration (no LLM)
  server.py     # MCP server (agent-facing)
  cli.py        # manual CLI
F
license - not found
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/code-lawyer/rag-retriever'

If you have feedback or need assistance with the MCP directory API, please join our Discord server