A turnkey, integrated RAG (Retrieval Augmented Generation) system with MCP (Model Context Protocol) server and modern UI. This is a self-contained Electron application that provides a complete solution for document ingestion, vector storage, semantic search, and MCP server integration.
- Vector Store: Built on SQLite, stored in
~/froggy-rag-mcp/data - World-Class Chunking: Supports
.docx,.xlsx,.pdf,.csv, and.txtfiles - Queue-Based Processing: Documents are processed in a queue, allowing semi-offline ingestion and chunking
- Ingestion Status Tracking: Real-time status monitoring for each document in the ingestion queue
- File Ingestion: Add individual files via drag-and-drop or file picker
- Directory Ingestion: Add entire directories for batch processing
- File Watching: Monitor files and directories for changes with automatic re-ingestion
- Recursive Directory Watching: Option to watch directories recursively
- Semantic Search: World-class matching based on input queries and vector store
- MRU (Most Recently Used): Quick access to recent searches
- Chunk Inspection: View content and metadata for retrieved chunks
- Dual Interfaces: Both stdio and REST API interfaces
- RAG Tools: Specialized tools for RAG operations
- Server Management: Start/stop server with configurable port
- Request Logging: Comprehensive logging of server requests and activities
- Modern Design: Clean, intuitive interface with resizable panels
- Tree Navigation: Organized navigation with four main sections:
- Ingestion: Manage files and directories
- Vector Store: View documents, chunks, and metadata
- Search: Perform semantic searches with MRU support
- Server: Control MCP server and view logs
- Persistent Settings: Window state, splitter positions, and preferences are saved
Download the latest pre-built installer from our releases page.
- Node.js (v16 or higher)
- npm or yarn
- Clone the repository:
git clone <repository-url>
cd froggy-nobs-mcp-rag- Install dependencies:
npm install- The
postinstallscript will automatically rebuildbetter-sqlite3for your platform.
Development mode (with DevTools):
npm run devProduction mode:
npm startnpm run buildThis will create distributable packages in the dist directory using electron-builder.
froggy-nobs-mcp-rag/
βββ src/
β βββ main/ # Electron main process
β β βββ main.js # Main entry point
β β βββ preload.js # Preload script
β β βββ ipc-handlers.js # IPC communication handlers
β β βββ services/ # Core services
β β βββ rag-service.js # RAG orchestration
β β βββ mcp-service.js # MCP server implementation
β β βββ vector-store.js # SQLite vector store
β β βββ document-processor.js # Document parsing & chunking
β β βββ search-service.js # Semantic search
β βββ renderer/ # Electron renderer process (UI)
β βββ index.html # Main HTML
β βββ app.js # UI logic
β βββ styles.css # Styling
βββ docs/ # Documentation
βββ package.json
All application data is stored in:
~/froggy-rag-mcp/data/
This includes:
- Vector store database (SQLite)
- Settings and preferences
- Window state
- Watched files and directories configuration
- Microsoft Word:
.docx - Microsoft Excel:
.xlsx - PDF:
.pdf - CSV:
.csv - Plain Text:
.txt
The MCP server provides three interfaces for integration with external applications:
- REST API - HTTP server for UI and external HTTP clients
- Stdio Mode - Standard input/output for MCP clients (Claude Desktop, etc.)
- CLI Tool Mode - Command-line interface for direct tool execution
The REST server runs on a configurable port (default: 3000) and provides endpoints for:
- Document search
- Vector store operations
- RAG queries
Start/stop the server from the UI, configure the server port, and view real-time logs of server activity.
Stdio mode allows MCP clients (like Claude Desktop) to spawn the server as a subprocess and communicate via stdin/stdout using JSON-RPC 2.0 protocol.
Usage:
# Run in stdio mode (no arguments)
npm run mcp-stdio
# Or directly
node src/cli/mcp-cli.jsConfiguration for MCP Clients:
For Claude Desktop, add to your MCP configuration file:
{
"mcpServers": {
"froggy-rag": {
"command": "node",
"args": ["path/to/froggy-nobs-mcp-rag/src/cli/mcp-cli.js"],
"env": {}
}
}
}The server reads JSON-RPC 2.0 messages line-by-line from stdin and writes responses to stdout.
CLI tool mode allows you to execute MCP tools directly from the command line.
Usage:
# List all available tools
npm run mcp tools list
# Call a tool with parameters
npm run mcp call search --query "example query" --limit 5
# Search directly (shortcut)
npm run mcp search "example query" --limit 10 --algorithm hybrid
# Get statistics
npm run mcp stats
# Ingest a file
npm run mcp call ingest_file --filePath "/path/to/file.pdf"
# Get help
npm run mcp helpCommands:
tools list- List all available toolscall <tool-name> [--arg key=value] ...- Call a tool with parameterssearch <query> [--limit N] [--algorithm]- Search the vector store (shortcut)stats- Get vector store statisticshelp- Show help message
Examples:
# List tools
node src/cli/mcp-cli.js tools list
# Search with hybrid algorithm
node src/cli/mcp-cli.js search "machine learning" --limit 10 --algorithm hybrid
# Get all documents
node src/cli/mcp-cli.js call get_documents
# Get chunks for a document
node src/cli/mcp-cli.js call get_document_chunks --documentId "doc-123"
# Ingest directory with watching
node src/cli/mcp-cli.js call ingest_directory --dirPath "/path/to/docs" --recursive true --watch trueAll modes support the same set of tools:
search- Search the vector store for similar contentget_documents- Get all documents in the vector storeget_document_chunks- Get chunks for a specific documentget_chunk- Get chunk content by IDget_stats- Get vector store statisticsingest_file- Ingest a file into the vector storeingest_directory- Ingest a directory into the vector store
- Start/stop the REST server from the UI
- Configure the server port
- View real-time logs of server activity
- Stdio and CLI modes run independently of the Electron UI
- Electron: Desktop application framework
- @xenova/transformers: Embedding model (Xenova/all-MiniLM-L6-v2)
- better-sqlite3: Vector store database
- Express: REST API server
- chokidar: File system watching
- pdf-parse, mammoth, exceljs, docx: Document parsing libraries
- Main Process: Handles file system operations, database access, and service orchestration
- Renderer Process: UI rendering and user interaction
- IPC Communication: Secure communication between main and renderer processes
- Service Layer: Modular services for RAG, MCP, vector storage, and search
MIT
Contributions are welcome! Please feel free to submit a Pull Request.
For issues, questions, or feature requests, please open an issue on the repository.