MCP-Ragdocs
by qpd-v
# MCP-Ragdocs
A Model Context Protocol (MCP) server that enables semantic search and retrieval of documentation using a vector database (Qdrant). This server allows you to add documentation from URLs or local files and then search through them using natural language queries.
## Quick Install Guide
1. Install the package globally:
```bash
npm install -g @qpd-v/mcp-server-ragdocs
```
2. Start Qdrant (using Docker):
```bash
docker run -p 6333:6333 -p 6334:6334 qdrant/qdrant
```
3. Ensure Ollama is running with the default embedding model:
```bash
ollama pull nomic-embed-text
```
4. Add to your configuration file:
- For Cline: `%AppData%\Roaming\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json`
- For Roo-Code: `%AppData%\Roaming\Code\User\globalStorage\rooveterinaryinc.roo-cline\settings\cline_mcp_settings.json`
- For Claude Desktop: `%AppData%\Claude\claude_desktop_config.json`
```json
{
"mcpServers": {
"ragdocs": {
"command": "node",
"args": ["C:/Users/YOUR_USERNAME/AppData/Roaming/npm/node_modules/@qpd-v/mcp-server-ragdocs/build/index.js"],
"env": {
"QDRANT_URL": "http://127.0.0.1:6333",
"EMBEDDING_PROVIDER": "ollama",
"OLLAMA_URL": "http://localhost:11434"
}
}
}
}
```
5. Verify installation:
```bash
# Check Qdrant is running
curl http://localhost:6333/collections
# Check Ollama has the model
ollama list | grep nomic-embed-text
```
## Version
Current version: 0.1.6
## Features
- Add documentation from URLs or local files
- Store documentation in a vector database for semantic search
- Search through documentation using natural language
- List all documentation sources
## Installation
Install globally using npm:
```bash
npm install -g @qpd-v/mcp-server-ragdocs
```
This will install the server in your global npm directory, which you'll need for the configuration steps below.
## Requirements
- Node.js 16 or higher
- Qdrant (either local or cloud)
- One of the following for embeddings:
- Ollama running locally (default, free)
- OpenAI API key (optional, paid)
## Qdrant Setup Options
### Option 1: Local Qdrant
1. Using Docker (recommended):
```bash
docker run -p 6333:6333 -p 6334:6334 qdrant/qdrant
```
2. Or download from [Qdrant's website](https://qdrant.tech/documentation/quick-start/)
### Option 2: Qdrant Cloud
1. Create an account at [Qdrant Cloud](https://cloud.qdrant.io/)
2. Create a new cluster
3. Get your cluster URL and API key from the dashboard
4. Use these in your configuration (see Configuration section below)
## Configuration
The server can be used with both Cline/Roo and Claude Desktop. Configuration differs slightly between them:
### Cline Configuration
Add to your Cline settings file (`%AppData%\Roaming\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json`)
AND/OR
Add to your Roo-Code settings file (`%AppData%\Roaming\Code\User\globalStorage\rooveterinaryinc.roo-cline\settings\cline_mcp_settings.json`):
1. Using npm global install (recommended):
```json
{
"mcpServers": {
"ragdocs": {
"command": "node",
"args": ["C:/Users/YOUR_USERNAME/AppData/Roaming/npm/node_modules/@qpd-v/mcp-server-ragdocs/build/index.js"],
"env": {
"QDRANT_URL": "http://127.0.0.1:6333",
"EMBEDDING_PROVIDER": "ollama",
"OLLAMA_URL": "http://localhost:11434"
}
}
}
}
```
For OpenAI instead of Ollama:
```json
{
"mcpServers": {
"ragdocs": {
"command": "node",
"args": ["C:/Users/YOUR_USERNAME/AppData/Roaming/npm/node_modules/@qpd-v/mcp-server-ragdocs/build/index.js"],
"env": {
"QDRANT_URL": "http://127.0.0.1:6333",
"EMBEDDING_PROVIDER": "openai",
"OPENAI_API_KEY": "your-openai-api-key"
}
}
}
}
```
2. Using local development setup:
```json
{
"mcpServers": {
"ragdocs": {
"command": "node",
"args": ["PATH_TO_PROJECT/mcp-ragdocs/build/index.js"],
"env": {
"QDRANT_URL": "http://127.0.0.1:6333",
"EMBEDDING_PROVIDER": "ollama",
"OLLAMA_URL": "http://localhost:11434"
}
}
}
}
```
### Claude Desktop Configuration
Add to your Claude Desktop config file:
- Windows: `%AppData%\Claude\claude_desktop_config.json`
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
1. Windows Setup with Ollama (using full paths):
```json
{
"mcpServers": {
"ragdocs": {
"command": "C:\\Program Files\\nodejs\\node.exe",
"args": [
"C:\\Users\\YOUR_USERNAME\\AppData\\Roaming\\npm\\node_modules\\@qpd-v/mcp-server-ragdocs\\build\\index.js"
],
"env": {
"QDRANT_URL": "http://127.0.0.1:6333",
"EMBEDDING_PROVIDER": "ollama",
"OLLAMA_URL": "http://localhost:11434"
}
}
}
}
```
Windows Setup with OpenAI:
```json
{
"mcpServers": {
"ragdocs": {
"command": "C:\\Program Files\\nodejs\\node.exe",
"args": [
"C:\\Users\\YOUR_USERNAME\\AppData\\Roaming\\npm\\node_modules\\@qpd-v/mcp-server-ragdocs\\build\\index.js"
],
"env": {
"QDRANT_URL": "http://127.0.0.1:6333",
"EMBEDDING_PROVIDER": "openai",
"OPENAI_API_KEY": "your-openai-api-key"
}
}
}
}
```
2. macOS Setup with Ollama:
```json
{
"mcpServers": {
"ragdocs": {
"command": "/usr/local/bin/node",
"args": [
"/usr/local/lib/node_modules/@qpd-v/mcp-server-ragdocs/build/index.js"
],
"env": {
"QDRANT_URL": "http://127.0.0.1:6333",
"EMBEDDING_PROVIDER": "ollama",
"OLLAMA_URL": "http://localhost:11434"
}
}
}
}
```
### Qdrant Cloud Configuration
For either Cline or Claude Desktop, when using Qdrant Cloud, modify the env section:
With Ollama:
```json
{
"env": {
"QDRANT_URL": "https://your-cluster-url.qdrant.tech",
"QDRANT_API_KEY": "your-qdrant-api-key",
"EMBEDDING_PROVIDER": "ollama",
"OLLAMA_URL": "http://localhost:11434"
}
}
```
With OpenAI:
```json
{
"env": {
"QDRANT_URL": "https://your-cluster-url.qdrant.tech",
"QDRANT_API_KEY": "your-qdrant-api-key",
"EMBEDDING_PROVIDER": "openai",
"OPENAI_API_KEY": "your-openai-api-key"
}
}
```
### Environment Variables
#### Qdrant Configuration
- `QDRANT_URL` (required): URL of your Qdrant instance
- For local: http://localhost:6333
- For cloud: https://your-cluster-url.qdrant.tech
- `QDRANT_API_KEY` (required for cloud): Your Qdrant Cloud API key
#### Embeddings Configuration
- `EMBEDDING_PROVIDER` (optional): Choose between 'ollama' (default) or 'openai'
- `EMBEDDING_MODEL` (optional):
- For Ollama: defaults to 'nomic-embed-text'
- For OpenAI: defaults to 'text-embedding-3-small'
- `OLLAMA_URL` (optional): URL of your Ollama instance (defaults to http://localhost:11434)
- `OPENAI_API_KEY` (required if using OpenAI): Your OpenAI API key
## Available Tools
1. `add_documentation`
- Add documentation from a URL to the RAG database
- Parameters:
- `url`: URL of the documentation to fetch
2. `search_documentation`
- Search through stored documentation
- Parameters:
- `query`: Search query
- `limit` (optional): Maximum number of results to return (default: 5)
3. `list_sources`
- List all documentation sources currently stored
- No parameters required
## Example Usage
In Claude Desktop or any other MCP-compatible client:
1. Add documentation:
```
Add this documentation: https://docs.example.com/api
```
2. Search documentation:
```
Search the documentation for information about authentication
```
3. List sources:
```
What documentation sources are available?
```
## Development
1. Clone the repository:
```bash
git clone https://github.com/qpd-v/mcp-server-ragdocs.git
cd mcp-server-ragdocs
```
2. Install dependencies:
```bash
npm install
```
3. Build the project:
```bash
npm run build
```
4. Run locally:
```bash
npm start
```
## License
MIT
## Troubleshooting
### Common Issues
1. **Qdrant Connection Error**
```
Error: Failed to connect to Qdrant at http://localhost:6333
```
- Check if Docker is running
- Verify Qdrant container is running: `docker ps | grep qdrant`
- Try restarting the container
2. **Ollama Model Missing**
```
Error: Model nomic-embed-text not found
```
- Run: `ollama pull nomic-embed-text`
- Verify model is installed: `ollama list`
3. **Configuration Path Issues**
- Windows: Replace `YOUR_USERNAME` with your actual Windows username
- Check file permissions
- Verify the paths exist
4. **npm Global Install Issues**
- Try installing with admin privileges
- Check npm is in PATH: `npm -v`
- Verify global installation: `npm list -g @qpd-v/mcp-server-ragdocs`
For other issues, please check:
- Docker logs: `docker logs $(docker ps -q --filter ancestor=qdrant/qdrant)`
- Ollama status: `ollama list`
- Node.js version: `node -v` (should be 16 or higher)
## Contributing
Contributions are welcome! Please feel free to submit a Pull Request.