RAG MCP Server
RAG MCP Server
A FastMCP server that exposes a Retrieval-Augmented Generation (RAG) pipeline as MCP tools — so any MCP-compatible client (Claude, IDEs, agent frameworks) can index documents and answer questions over them through a standard protocol.
Stack
MCP framework: FastMCP
RAG orchestration: LlamaIndex
Vector store: Qdrant
Embeddings + LLM: NVIDIA NIM (
nv-embedqa-e5-v5,llama-3.1-8b-instruct)
How it works
Document ──▶ chunk (SentenceSplitter) ──▶ embed (NVIDIA) ──▶ upsert ──▶ Qdrant
│
User question ──▶ embed ──▶ similarity search ─────────────────────────────┘
│
▼
top-k chunks ──▶ LLM synthesis ──▶ answerThe server keeps an in-memory reference to the last-built index so repeated queries don't require re-embedding, while still supporting a fresh load from Qdrant if the process restarts.
Tools
Tool | Description |
| Loads a document, chunks it, embeds it, and upserts it into Qdrant. |
| Retrieves the most relevant chunks and synthesizes an answer via the LLM. |
Setup
Clone the repo and install dependencies:
git clone https://github.com/arbaz-builds/rag-mcp-server.git cd rag-mcp-server pip install -r requirements.txtCopy
.env.exampleto.envand fill in your credentials:cp .env.example .envRun the server:
python main.py
The server starts over HTTP transport on 0.0.0.0:$PORT (default 8000) — ready to deploy on Render, Railway, or any container platform.
Example usage (via an MCP client)
> index_document("./handbook.pdf")
Indexed './handbook.pdf' successfully (42 chunks).
> query_documents("What is the refund policy?")
Refunds are processed within 5–7 business days for requests made within 30 days of purchase.Environment Variables
Variable | Required | Description |
| Yes | API key for NVIDIA embeddings + LLM |
| Yes | Qdrant cluster URL |
| Yes | Qdrant API key |
| Yes | Collection name in Qdrant — must match an existing collection, no default is applied |
| No (default: | HTTP server port |
Deployment
Deployed with HTTP transport (host=0.0.0.0), making it compatible out of the box with Render, Railway, and other container-based hosts that inject a PORT environment variable.
License
MIT