searchLABSCO SUMMARY
Add a source, keep the same five tools.
That stability is the design decision worth having: an agent written against search today still works after you add three more sources, because the tool surface does not grow with them. Local embeddings by default means the first run costs nothing and sends nothing anywhere.
What it is
A configuration-driven RAG MCP server. One YAML file defines the sources, chunking strategy, embedding model and vector store; the server indexes them, watches them for changes, and exposes a small, source-agnostic tool surface on top.
What you get
- Five tools that stay the same as sources come and go:
search,list_sources,get_document,get_index_status,reindex - search — semantic search across one source or all of them, with optional metadata filtering, returning normalized [0, 1] scores
- get_document — the full document once search surfaces a chunk from it
- get_index_status and
reindex— freshness and health per source, and a forced re-scan when you need one - Source types:
folderfor a local directory of text, PDF and Markdown files with gitignore-style include and exclude globs, andwebsitefor a fixed list of pages, fetched rather than crawled - Live reload — filesystem watching and polling keep the index current, and editing the config itself applies without a restart
- Tools return structured
{"error": "..."}objects rather than raising, so a calling agent can recover in conversation
Requirements
Run it with uvx ragsync --config /abs/path/to/config.yaml — no clone, no install step. Give --config an absolute path; paths inside the config resolve against the config file's own directory, so a repo config can use path: ./docs. Embeddings default to local fastembed, which needs no API key; openai and voyage are per-source alternatives and read their key from the environment variable named by api_key_env, never from the config. First launch downloads the local embedding model, so it is slower than later ones. Access scoping is by running separate instances with separate configs — there is no cross-instance search.
Setup effort
One command — uvx ragsync --config <YOUR_PATH>
USE CASES
Making a folder of docs answerable
Point a source at the directory with include globs and let the watcher keep it current.
Keeping several bodies of knowledge separate
Define each as its own source with its own collection, then search one or all.
Working out why an answer is stale
Check the index freshness for that source, then force a re-scan.
Indexing a handful of web pages
List them as a website source and poll them for changes.
5 tools
Listed in project docs. Your client may show a different list.
list_sourcesget_documentget_index_statusreindexBEFORE YOU INSTALL
What to know first
Tools you get
5 tools named in the project's documentation.
Requires
uvx on PATH
Where it runs
All 4 documented clients run the server on your machine.
INSTALLATION
Connect your client
Server setup
uvx ragsync --config <YOUR_PATH>MCP Clients
Cursor, Claude Desktop, Claude Code, Windsurf
{
"mcpServers": {
"ragsync": {
"command": "uvx",
"args": [
"ragsync",
"--config",
"<YOUR_PATH_TO_CONFIG>"
]
}
}
}