Overview
UltraRAG is a RAG development framework whose architecture is built on the Model Context Protocol. Instead of a Python class hierarchy, each core RAG component — retriever, generation, corpus processing, evaluation — is packaged as an independent MCP server exposing function-level tools, and pipelines are assembled by an MCP client.
The practical consequence is that pipeline logic becomes configuration. Sequential steps, loops and conditional branches are expressed in YAML, so an iterative RAG workflow that would normally be a few hundred lines of orchestration code fits in a few dozen lines of config. Adding a new capability means registering a tool on a server rather than subclassing anything, which is what keeps components reusable across pipelines.
It is a joint project of THUNLP at Tsinghua University, NEUIR at Northeastern University, OpenBMB and AI9stars, and is aimed at both academic research and industrial prototyping. Alongside the pipeline engine it ships UltraRAG UI — a visual RAG IDE with a Pipeline Builder that keeps a canvas and the underlying code in two-way sync — plus standardized evaluation workflows over mainstream RAG benchmarks so experiments stay reproducible and comparable.
What it does
- Low-code orchestration: sequential, loop and conditional control flow declared in YAML rather than written as Python glue
- Atomic MCP servers — retriever, generation, corpus and evaluation are independent services whose tools compose across pipelines
- Unified evaluation with built-in workflows and ready-to-run mainstream RAG benchmarks for reproducible comparisons
- UltraRAG UI: a visual pipeline builder with two-way sync between canvas and code, plus knowledge-base management and one-click conversion of a pipeline into a chat app
- Multimodal and vision-language support, with vLLM and Hugging Face Transformers backends
- Docker images for CPU and GPU when you would rather not build a local Python environment
Getting started
The project recommends installing from source with uv, which manages the virtual environment and the locked dependency set. A Docker path is available if you prefer not to configure Python locally.
Install uv and clone the repository
uv manages the environment and the lockfile shared by every MCP server in the project.
pip install uv==0.12.0
git clone https://github.com/OpenBMB/UltraRAG.git --depth 1
cd UltraRAGSync dependencies
`uv sync` installs the core; `--all-extras` adds retrieval, generation, corpus processing and evaluation. You can also install a single module with an extra such as `--extra retriever`.
# Core only (enough for UltraRAG UI)
uv sync
# Everything: retrieval, generation, corpus processing, evaluation
uv sync --all-extras
source .venv/bin/activateVerify the installation
Run the bundled hello example. A successful install prints "Hello, UltraRAG v3!".
ultrarag run examples/experiments/sayhello.yamlOr deploy with Docker
Pull a prebuilt image and start the container. UltraRAG UI launches automatically on port 5050.
docker pull hdxin2002/ultrarag:v0.3.0-base-cpu
docker run -it -p 5050:5050 hdxin2002/ultrarag:v0.3.0-base-cpuCommands and code are distilled from the project's own documentation — always check the official repo for the latest.
When to use it
- Run a standard RAG experiment on public benchmarks and compare it against baselines using the built-in evaluation workflow
- Prototype an iterative or branching RAG pipeline in YAML rather than writing bespoke orchestration code
- Reuse one retriever or reranker across several pipelines by exposing it once as an MCP server
- Turn a finished pipeline into an interactive chat demo with a knowledge base attached, without building a UI
How UltraRAG compares
UltraRAG alongside other open-source rag frameworks & platforms tools AI/TLDR tracks, ranked by GitHub stars.
| Tool | Stars | What it does |
|---|---|---|
| Dify | ★ 156k | An open-source platform with a visual workflow builder for creating LLM and RAG applications without writing much code. |
| graphify | ★ 119k | Turns a folder of code, docs, PDFs and images into a local knowledge graph with tree-sitter AST parsing and Leiden communities — queryable by agents over MCP, no vector store. |
| RAGFlow | ★ 90.9k | A RAG engine built around deep document understanding that turns complex files into a grounded, citation-backed question-answering layer. |
| Pathway | ★ 62.3k | A Python framework with a Rust streaming engine that keeps ETL, real-time analytics and RAG pipelines continuously up to date as source data changes. |
| Context7 | ★ 62.2k | Context7 pulls current, version-specific documentation and code examples for any library and feeds them into your LLM, available as a CLI skill or an MCP server. |
| LightRAG | ★ 39.7k | A graph-based RAG system that builds an entity-and-relationship knowledge graph for fast retrieval and easy incremental updates. |
| Quivr | ★ 39.5k | Quivr is an open-source RAG framework that ingests your documents and answers questions about them, working with any LLM and any file type. |
| UltraRAG | ★ 5.7k | Build complex RAG pipelines from MCP servers with YAML instead of glue code |