An open API service indexing awesome lists of open source software.

https://github.com/rahulretnan/mcp-ragdocs


https://github.com/rahulretnan/mcp-ragdocs

Last synced: 6 months ago
JSON representation

Awesome Lists containing this project

README

          

# RAG Documentation MCP Server
[![smithery badge](https://smithery.ai/badge/@rahulretnan/mcp-ragdocs)](https://smithery.ai/server/@rahulretnan/mcp-ragdocs)

An MCP server implementation that provides tools for retrieving and processing documentation through vector search, enabling AI assistants to augment their responses with relevant documentation context.

## Table of Contents

- [Features](#features)
- [Quick Start](#quick-start)
- [Docker Compose Setup](#docker-compose-setup)
- [Web Interface](#web-interface)
- [Configuration](#configuration)
- [Cline Configuration](#cline-configuration)
- [Claude Desktop Configuration](#claude-desktop-configuration)
- [Acknowledgments](#acknowledgments)
- [Troubleshooting](#troubleshooting)

## Features

### Tools

1. **search_documentation**

- Search through the documentation using vector search
- Returns relevant chunks of documentation with source information

2. **list_sources**

- List all available documentation sources
- Provides metadata about each source

3. **extract_urls**

- Extract URLs from text and check if they're already in the documentation
- Useful for preventing duplicate documentation

4. **remove_documentation**

- Remove documentation from a specific source
- Cleans up outdated or irrelevant documentation

5. **list_queue**

- List all items in the processing queue
- Shows status of pending documentation processing

6. **run_queue**

- Process all items in the queue
- Automatically adds new documentation to the vector store

7. **clear_queue**

- Clear all items from the processing queue
- Useful for resetting the system

8. **add_documentation**
- Add new documentation to the processing queue
- Supports various formats and sources

## Quick Start

The RAG Documentation tool is designed for:

- Enhancing AI responses with relevant documentation
- Building documentation-aware AI assistants
- Creating context-aware tooling for developers
- Implementing semantic documentation search
- Augmenting existing knowledge bases

## Docker Compose Setup

The project includes a `docker-compose.yml` file for easy containerized deployment. To start the services:

```bash
docker-compose up -d
```

To stop the services:

```bash
docker-compose down
```

## Web Interface

The system includes a web interface that can be accessed after starting the Docker Compose services:

1. Open your browser and navigate to: `http://localhost:3030`
2. The interface provides:
- Real-time queue monitoring
- Documentation source management
- Search interface for testing queries
- System status and health checks

## Configuration

### Embeddings Configuration

The system uses Ollama as the default embedding provider for local embeddings generation, with OpenAI available as a fallback option. This setup prioritizes local processing while maintaining reliability through cloud-based fallback.

#### Environment Variables

- `EMBEDDING_PROVIDER`: Choose the primary embedding provider ('ollama' or 'openai', default: 'ollama')
- `EMBEDDING_MODEL`: Specify the model to use (optional)
- For OpenAI: defaults to 'text-embedding-3-small'
- For Ollama: defaults to 'nomic-embed-text'
- `OPENAI_API_KEY`: Required when using OpenAI as provider
- `FALLBACK_PROVIDER`: Optional backup provider ('ollama' or 'openai')
- `FALLBACK_MODEL`: Optional model for fallback provider

### Cline Configuration

Add this to your `cline_mcp_settings.json`:

```json
{
"mcpServers": {
"rag-docs": {
"command": "node",
"args": ["/path/to/your/mcp-ragdocs/build/index.js"],
"env": {
"EMBEDDING_PROVIDER": "ollama", // default
"EMBEDDING_MODEL": "nomic-embed-text", // optional
"OPENAI_API_KEY": "your-api-key-here", // required for fallback
"FALLBACK_PROVIDER": "openai", // recommended for reliability
"FALLBACK_MODEL": "nomic-embed-text", // optional
"QDRANT_URL": "http://localhost:6333"
},
"disabled": false,
"autoApprove": [
"search_documentation",
"list_sources",
"extract_urls",
"remove_documentation",
"list_queue",
"run_queue",
"clear_queue",
"add_documentation"
]
}
}
}
```

### Claude Desktop Configuration

Add this to your `claude_desktop_config.json`:

```json
{
"mcpServers": {
"rag-docs": {
"command": "node",
"args": ["/path/to/your/mcp-ragdocs/build/index.js"],
"env": {
"EMBEDDING_PROVIDER": "ollama", // default
"EMBEDDING_MODEL": "nomic-embed-text", // optional
"OPENAI_API_KEY": "your-api-key-here", // required for fallback
"FALLBACK_PROVIDER": "openai", // recommended for reliability
"FALLBACK_MODEL": "nomic-embed-text", // optional
"QDRANT_URL": "http://localhost:6333"
}
}
}
}
```

### Default Configuration

The system uses Ollama by default for efficient local embedding generation. For optimal reliability:

1. Install and run Ollama locally
2. Configure OpenAI as fallback (recommended):
```json
{
// Ollama is used by default, no need to specify EMBEDDING_PROVIDER
"EMBEDDING_MODEL": "nomic-embed-text", // optional
"FALLBACK_PROVIDER": "openai",
"FALLBACK_MODEL": "text-embedding-3-small",
"OPENAI_API_KEY": "your-api-key-here"
}
```

This configuration ensures:
- Fast, local embedding generation with Ollama
- Automatic fallback to OpenAI if Ollama fails
- No external API calls unless necessary

Note: The system will automatically use the appropriate vector dimensions based on the provider:
- Ollama (nomic-embed-text): 768 dimensions
- OpenAI (text-embedding-3-small): 1536 dimensions

## Acknowledgments

This project is a fork of [qpd-v/mcp-ragdocs](https://github.com/qpd-v/mcp-ragdocs), originally developed by qpd-v. The original project provided the foundation for this implementation.

Special thanks to the original creator, qpd-v, for their innovative work on the initial version of this MCP server. This fork has been enhanced with additional features and improvements by Rahul Retnan.

## Troubleshooting

### Server Not Starting (Port Conflict)

If the MCP server fails to start due to a port conflict, follow these steps:

1. Identify and kill the process using port 3030:

```bash
npx kill-port 3030
```

2. Restart the MCP server

3. If the issue persists, check for other processes using the port:

```bash
lsof -i :3030
```

4. You can also change the default port in the configuration if needed