Featured

Deploy OpenClaw in 60 seconds — 20% off logoDeploy OpenClaw in 60 seconds — 20% off

Launch OpenClaw on Hostinger in about 60 seconds and keep your agent live 24/7. Our referral link gives you 20% off, no coupon code needed.

Launch on Hostinger
Run your Hermes agent on Hostinger, fully managed logoRun your Hermes agent on Hostinger, fully managed

Launch Hermes on Hostinger in one click, fully managed, no VPS knowledge needed. Use code ZACAARON10 for 10% off.

Launch on Hostinger
Crawl and scrape any site into clean data, 10% off logoCrawl and scrape any site into clean data, 10% off

Firecrawl crawls and scrapes any site into clean markdown for your agent. Get 1,000 free credits, and new users get 10% off their first purchase.

Try Firecrawl free
6,000+ web scrapers for your AI agent, start free logo6,000+ web scrapers for your AI agent, start free

Apify gives your agent live web data: 6,000+ prebuilt scrapers and actors, MCP-ready. Sign up free with $5 in usage credits.

Try Apify free
One API to scrape, enrich, and extract the internet. logoOne API to scrape, enrich, and extract the internet.

Context.dev gives your agents a single API to scrape, enrich, and extract live web data — no proxies, no parsers, no maintenance.

Start building free
SetupClaw: done-for-you OpenClaw for founders & exec teams logoSetupClaw: done-for-you OpenClaw for founders & exec teams

White-glove OpenClaw for founders and exec teams (4–50+ employees): we install, harden, integrate your tools, and maintain it — secured from day one.

Get it set up for you
SEO data APIs for your agent, $1 free credit logoSEO data APIs for your agent, $1 free credit

DataForSEO gives your agent live access to SERP results, keyword data, backlinks, and on-page SEO data through one API. New accounts get a $1 credit, good for up to 20,000 keyword or backlink lookups.

Try DataForSEO free
Reach 48,000+ AI builders

A flat monthly placement in front of developers actively installing AI tools. No lock-in, cancel anytime.

Advertise here

Works with

Claude CodeClaude DesktopCursorVS CodeClineCodex CLIOpenClaw+ any MCP client

Install to Claude Code

This server doesn't publish a one-line install command. Follow the setup in the source repository.

Summary

An MCP server for RAG using Qdrant that automatically indexes documents from directories and generates search tools for each collection.

README.md

Easy MCP RAG 🚀

A high-performance Model Context Protocol (MCP) server for RAG using Qdrant. Built for UV/UVX with CPU/GPU support and HTTP transport.

✨ Features

  • 🔍 Automatic Document Indexing - Scan directories and index all documents
  • 📁 Smart Organization - Each subdirectory becomes its own searchable dataset
  • 🛠️ Dynamic MCP Tools - Auto-generated tools for each collection
  • 📄 Multi-Format Support - PDF, DOCX, CSV, XLSX, TXT, Markdown, and more
  • GPU Acceleration - Optional CUDA/MPS support for faster embeddings
  • 🌐 HTTP Transport - Run as HTTP server or stdio
  • 📦 UV/UVX Ready - Install and run with a single command
  • 📊 Verbose Logging - Detailed query tracking and monitoring

🚀 Quick Start

Install with UVX (Recommended)

Run directly from GitHub without installation:

uvx --from git+https://github.com/yourusername/easy_mcp_rag.git easy_mcp_rag --data-dir ./documents

Install with UV

# Install from GitHub
uv pip install git+https://github.com/yourusername/easy_mcp_rag.git

# Or clone and install locally
git clone https://github.com/yourusername/easy_mcp_rag.git
cd easy_mcp_rag
uv pip install -e .

📋 Prerequisites

  1. Start Qdrant (using Docker):
docker run -p 6333:6333 qdrant/qdrant
  1. Prepare your documents:
documents/
├── legal_docs/
│   ├── contract.pdf
│   └── terms.docx
├── research/
│   ├── paper1.pdf
│   └── notes.txt
└── data/
    └── analysis.csv

💻 Usage

Basic Usage (stdio)

# With UVX
uvx --from git+https://github.com/yourusername/easy_mcp_rag.git easy_mcp_rag --data-dir ./documents

# With UV
uv run easy_mcp_rag --data-dir ./documents

# After installation
easy_mcp_rag --data-dir ./documents

HTTP Mode

easy_mcp_rag --data-dir ./documents --transport http --http-port 8000

GPU Acceleration

# Auto-detect GPU
easy_mcp_rag --data-dir ./documents --device auto

# Force CUDA (NVIDIA GPU)
easy_mcp_rag --data-dir ./documents --device cuda

# Force MPS (Apple Silicon)
easy_mcp_rag --data-dir ./documents --device mps

# Force CPU
easy_mcp_rag --data-dir ./documents --device cpu

Advanced Configuration

easy_mcp_rag \
  --data-dir ./documents \
  --qdrant-host localhost \
  --qdrant-port 6333 \
  --device cuda \
  --embedding-model all-mpnet-base-v2 \
  --chunk-size 1024 \
  --chunk-overlap 100 \
  --top-k 10 \
  --batch-size 64 \
  --verbose \
  --force-reindex

🔧 Configuration Options

| Flag | Description | Default | |------|-------------|---------| | --data-dir | Directory with document subdirectories | Required | | --qdrant-host | Qdrant server host | localhost | | --qdrant-port | Qdrant server port | 6333 | | --device | Device: auto, cpu, cuda, mps | auto | | --transport | Transport type: stdio, http | stdio | | --http-host | HTTP server host | 0.0.0.0 | | --http-port | HTTP server port | 8000 | | --embedding-model | Sentence transformer model | all-MiniLM-L6-v2 | | --chunk-size | Text chunk size (chars) | 512 | | --chunk-overlap | Chunk overlap (chars) | 50 | | --top-k | Results per search | 5 | | --batch-size | Embedding batch size | 32 | | --verbose | Enable verbose logging | False | | --log-level | Log level | INFO | | --force-reindex | Force reindex all docs | False |

🎯 MCP Client Configuration

Claude Desktop / Cline / Other MCP Clients

Add to your MCP client config:

{
  "mcpServers": {
    "rag-server": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/yourusername/easy_mcp_rag.git",
        "easy_mcp_rag",
        "--data-dir",
        "/path/to/your/documents",
        "--device",
        "auto",
        "--verbose"
      ]
    }
  }
}

With HTTP Transport

{
  "mcpServers": {
    "rag-server": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/yourusername/easy_mcp_rag.git",
        "easy_mcp_rag",
        "--data-dir",
        "/path/to/your/documents",
        "--transport",
        "http",
        "--http-port",
        "8000"
      ]
    }
  }
}

🛠️ How It Works

  1. Scan - Discovers all subdirectories in your data directory
  2. Load - Extracts text from all supported file types
  3. Chunk - Splits documents into overlapping chunks
  4. Embed - Generates vector embeddings (CPU or GPU)
  5. Index - Stores in Qdrant (one collection per subdirectory)
  6. Serve - Creates MCP tools for each collection

Example

documents/
├── legal_docs/      → Creates "legal_docs_search" tool
├── research/        → Creates "research_search" tool
└── data/            → Creates "data_search" tool

📄 Supported File Types

| Category | Extensions | |----------|-----------| | Text | .txt, .md, .py, .js, .json, .xml, .html, .css | | PDF | .pdf | | Word | .docx, .doc | | Spreadsheet | .csv, .xlsx, .xls |

🎨 Embedding Models

Choose based on your needs:

| Model | Dimensions | Speed | Quality | Use Case | |-------|-----------|-------|---------|----------| | all-MiniLM-L6-v2 | 384 | ⚡⚡⚡ | Good | Default, fast | | all-MiniLM-L12-v2 | 384 | ⚡⚡ | Better | Balanced | | all-mpnet-base-v2 | 768 | ⚡ | Best | Quality |

🐛 Troubleshooting

Qdrant Connection Failed

# Check if Qdrant is running
curl http://localhost:6333

# Start Qdrant
docker run -p 6333:6333 qdrant/qdrant

GPU Not Detected

# Check PyTorch GPU support
python -c "import torch; print(torch.cuda.is_available())"

# Install with GPU support
uv pip install -e ".[gpu]"

Out of Memory

# Use smaller model
--embedding-model all-MiniLM-L6-v2

# Reduce batch size
--batch-size 16

# Use CPU
--device cpu

📊 Logging

Enable verbose logging to see detailed information:

easy_mcp_rag --data-dir ./documents --verbose

Output includes:

  • ✅ Tool access events
  • 🔍 Query details
  • 📈 Result counts
  • 🎯 Relevance scores
  • 📁 Source files

Example: `` 2024-01-20 10:30:15 - easy_mcp_rag.server - INFO - Tool accessed: legal_docs_search 2024-01-20 10:30:15 - easy_mcp_rag.server - INFO - Query: contract terms 2024-01-20 10:30:15 - easy_mcp_rag.server - INFO - Results returned: 5 2024-01-20 10:30:15 - easy_mcp_rag.server - DEBUG - Result 1: score=0.8542 ``

🔐 Security Notes

  • HTTP mode exposes the server on the network
  • Use --http-host 127.0.0.1 for local-only access
  • Consider authentication for production deployments

📝 Development

# Clone repository
git clone https://github.com/yourusername/easy_mcp_rag.git
cd easy_mcp_rag

# Install with dev dependencies
uv pip install -e ".[dev]"

# Run tests
pytest

# Format code
black src/

# Lint
ruff src/

🤝 Contributing

Contributions welcome! Please:

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Submit a pull request

📜 License

MIT License - see LICENSE file

🙏 Credits

Built with:

See related servers & alternatives →

Related MCP servers

Browse all →

Related guides

Hand-picked reading to help you choose and use Vector & Memory servers.