Fire in da houseTop Tip:Most people pay up to $340 per month for Perplexity, MidJourney, Runway, ChatGPT, and more - but you can get them all your AI tools for $15 with Galaxy. It's free to test!Fire in da houseCheck it out

ragrabbit

MCP.Pizza Chef: madarco

RagRabbit is an open source, self-hosted MCP server that provides AI-powered site search and LLM.txt capabilities for websites. It enables real-time, intelligent search and language model interactions by indexing website content and exposing it in a structured, model-readable format. Designed for easy deployment and integration, RagRabbit supports secure admin access and PostgreSQL database integration, making it ideal for developers seeking customizable AI search solutions for their web environments.

Use This MCP server To

Implement AI-powered search on websites for improved content discovery Host LLM.txt files to expose site-specific language model context Index website content for real-time AI query responses Securely manage AI search admin settings with authentication Integrate PostgreSQL for scalable data storage and retrieval Deploy AI search solutions with one-click on Vercel platform

README

RagRabbit  RagRabbit 

Self Hosted Site AI Search, LLMs.txt, MCP Server that crawls your content. 1-Click Deploy on Vercel.

RagRabbit

Deploy with Vercel

How it works

RagRabbit is a Next.js Turborepo app that uses Llamaindex with pgVector.

Features

  • πŸ’¬ Chat Widget: Embeddable AI Chat agent and instant Search
  • πŸ•ΈοΈ Website Crawler: scrapes and index pages with pgVector and PostgreSQL
  • πŸ“„ LLMs.txt Generation: fully customizable wiht ToC reorder
  • πŸ”Œ MCP Server: npx @ragrabbit/mcp to access your docs from Claude Desktop and Cursor IDE
  • πŸ› οΈ Flexible: Authentication, Open Source, API Keys access
  • πŸš€ Easy Deployment: One-click setup on Vercel

Integrations:

Demo

View RagRabbit Demo Page

RagRabbit Demo

Install

To install on Vercel:

Deploy with Vercel

Requirements:

  • Node.js 20.x
  • PostgreSQL w/ pgVector
  • OpenAI API Key
  • (Optional) Trigger.dev API Key

Configuration

Set the following environment variables:

  • OPENAI_API_KEY

For username/password login:

  • ADMIN_USER
  • ADMIN_PASSWORD

For email login:

  • RESEND_AUTH=true
  • To restrict access to those emails: RESEND_ALLOWED_EMAILS="test@test.com,foo@bar.com"
  • To not send emails but logs the login link instead (in Vercel logs): SIMULATE_EMAILS=true

See .env.example for the complete list.

How to use

Use the Indexing section to add a new url/website to index, either a single url or a website to crawl recursively:

RagRabbit Indexing RagRabbit Crawl Modal

Then start the Job Runner (keep the tab open until it finish)

RagRabbit Job Runner

In the LLM.txt section you can preview the generated LLM.txt file:

RagRabbit LLM.txt

You can then embed the widget in your site with the following snippet:

Chat Button

Embed a button at the bottom of your page:

<script src="https://<your deployed app>/widget.js"></script>

RagRabbit Embed Widget Button

Chat Widget

Insert a search input anwhere in your page:

RagRabbit Widget

<script src="https://ragrabbit.com/widget.js?type=search"></script>
<ragrabbit-search></ragrabbit-search>

To use with React.js

"use client";

import Script from "next/script";

export function RagRabbitSearch() {
  return (
    <>
      <Script src="/widget.js?type=search" strategy="lazyOnload" />
      <style>{`
        ragrabbit-search .ragrabbit-search-input {
            padding: 6px 12px;
        }
      `}</style>
      <div className="ml-auto min-w-[300px] flex-1 sm:flex-initial">
        {/* @ts-ignore - Custom element will be mounted by external script */}
        <ragrabbit-search></ragrabbit-search>
      </div>
    </>
  );
}

MPC Server

The MCP Server allows any supported AI Clients to retrieve pages from your documentation using semantic search.

Claude Desktop

Add a custom mcp server with the name of your product, so that Claude AI can use it when looking for info about it.

in claude_desktop_config.json (Claude -> Settings -> Developer -> Edit Config)

{
  "mcpServers": {
    "<name_of_your_documentation_no_spaces>": {
      "command": "npx",
      "args": ["@ragrabbit/mcp", "http://<RagRabbit install>/", "<name of your documentation>"]
    }
  }
}

In Cursor IDE

Go to Cursor -> Settings -> Cursor Settings -> MCP

And add a new MCP of type command with the command:

npx @ragrabbit/mcp", "http://<RagRabbit install>/", "<name of your documentation>"

Arguments:

  • ragrabbit-url: (Required) The base URL of your RagRabbit instance, eg https://my-ragrabbit.vercel.com/
  • name: (Required) Custom name for the documentation search service (defaults to "RagRabbit") so that AI will know to use it when looking for info

Configuration Options

Chat button

You can configure the chat button by adding the following parameters to the widget.js script tag:

buttonText

<script src="https://ragrabbit.com/widget.js?buttonText=Ask%20AI"></script>

Search widget

You can configure the search widget by adding the following parameters and use the mountSearch call:

searchPlaceholder

<div id="search-container"></div>
<script>
  window.mountSearch("search-container", { searchPlaceholder: "Search documentation..." });
</script>

Integrations

Fumadocs

Create a component to replace the Search Dialog:

pnpm add @ragrabbit/search-react
"use client";
import type { SharedProps } from "fumadocs-ui/components/dialog/search";
import { RagRabbitModal } from "@ragrabbit/search-react";

export default function SearchDialog({ open, onOpenChange }: SharedProps) {
  return <RagRabbitModal
    domain="http://localhost:3000/"
    open={open}
    onOpenChange={onOpenChange}
    />;
}

Then set it in the layout.tsx:

<RootProvider
  search={{
    SearchDialog,
  }}
>
  ...
</RootProvider>

Optionally add the Floating Chat button:

"use client";
import { RagRabbitChatButton } from "@ragrabbit/search-react";

export default function ChatButton() {
  return <RagRabbitChatButton domain="http://localhost:3000/" />;
}

And add it to the layout.tsx:

<body className="flex flex-col min-h-screen">
  <ChatButton />
  ...

Development

# Start the db (Docker needed)
pnpm dev:utils # Starts postgresql with pgvector, Storybook and Drizzle ORM Studio

# Start the app
cd apps/saas
pnpm dev

Directory structure:

RagRabbit is a monorepo with Turborepo a Next.js app and a modular design with separate packages.

apps/
β”œβ”€β”€ docs -> the documentation site
β”œβ”€β”€ saas -> the main application
└── web -> the web site
packages/
β”œβ”€β”€ db -> the database with Drizzle ORM
β”œβ”€β”€ auth -> the authentication with Auth.js
β”œβ”€β”€ core -> shared utils
β”œβ”€β”€ design -> the design system
β”œβ”€β”€ rag -> the LLM and RAG package with LlamaIndexTS
β”œβ”€β”€ jobs -> job runner with Trigger.dev
└── storybook -> a Next.js Storybook app
.cursorrules -> Fine tuned Cursor rules with all the locations to work with the monorepo

Author

Marco D'Alia - @madarco - Linkedin

License

MIT

ragrabbit FAQ

How do I deploy RagRabbit on my website?
You can deploy RagRabbit easily with one-click on Vercel or self-host it using the provided open source codebase.
What authentication methods does RagRabbit support?
RagRabbit supports username and password authentication to secure the admin section.
Can RagRabbit integrate with databases?
Yes, RagRabbit integrates with PostgreSQL for storing and managing indexed data.
Is RagRabbit compatible with multiple LLM providers?
Yes, RagRabbit works with OpenAI, Anthropic Claude, and Google Gemini models.
How does RagRabbit handle website content indexing?
It indexes website content to create structured data that LLMs can query in real time.
Can I customize the AI search experience with RagRabbit?
Yes, being open source, you can modify and extend RagRabbit to fit your specific needs.
Does RagRabbit support real-time updates to indexed content?
RagRabbit supports dynamic content indexing to keep search results up to date.
What is LLM.txt and how does RagRabbit use it?
LLM.txt is a standard for exposing site-specific context to language models; RagRabbit hosts and serves this file to enhance AI interactions.