Model Context Protocol server for R2R retrieval system
Project description
r2r-mcp
Model Context Protocol (MCP) server for R2R (RAG to Riches) retrieval system
This package provides a FastMCP server that connects to R2R for advanced retrieval-augmented generation (RAG) capabilities. It enables AI assistants like Claude Desktop, Cursor, and other MCP clients to search, retrieve, and manage documents in R2R knowledge bases.
Features
- 🔍 Semantic Search - Vector-based and full-text search across documents
- 🤖 RAG Queries - Retrieval-augmented generation with configurable LLM settings
- 📝 Document Management - Upload, update, and list documents with upsert semantics
- 🏷️ Metadata Filtering - Advanced filtering by tags, domain, and custom metadata
- 🌐 Environment-Based Config - Zero configuration, reads from environment variables
Installation
Using uvx (recommended)
The easiest way to use r2r-mcp is with uvx, which automatically handles installation:
uvx r2r-mcp
Using pip
Install globally or in a virtual environment:
pip install r2r-mcp
Then run:
r2r-mcp
As a Python Module
You can also run it as a module:
python -m r2r_mcp
Configuration
The server automatically reads configuration from environment variables:
| Variable | Description | Default |
|---|---|---|
R2R_API_BASE or R2R_BASE_URL |
R2R server URL | http://localhost:7272 |
R2R_COLLECTION |
Collection name for queries | Server default |
R2R_API_KEY |
API key for authentication | None |
Usage with MCP Clients
Cursor IDE
Add to .cursor/mcp.json:
{
"mcpServers": {
"KnowledgeBase": {
"command": "uvx",
"args": ["r2r-mcp"],
"env": {
"R2R_API_BASE": "http://localhost:7272",
"R2R_COLLECTION": "aia-r1"
}
}
}
}
Claude Desktop
Add to Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"r2r": {
"command": "uvx",
"args": ["r2r-mcp"],
"env": {
"R2R_API_BASE": "http://localhost:7272",
"R2R_COLLECTION": "my-collection"
}
}
}
}
Other MCP Clients
Any MCP client can use r2r-mcp by specifying the command and environment variables:
{
"command": "uvx",
"args": ["r2r-mcp"],
"env": {
"R2R_API_BASE": "http://localhost:7272"
}
}
Available MCP Tools
1. search
Perform semantic and full-text search across documents.
Parameters:
query(str): Search queryfilters(dict, optional): Metadata filters (e.g.,{"tags": {"$in": ["agents"]}})limit(int, optional): Maximum resultsuse_semantic_search(bool, optional): Enable vector searchuse_fulltext_search(bool, optional): Enable full-text search
Example:
search("machine learning", filters={"tags": {"$in": ["research"]}}, limit=5)
2. rag
Retrieval-augmented generation with LLM.
Parameters:
query(str): Question to answerfilters(dict, optional): Metadata filterslimit(int, optional): Max search results to usemodel(str, optional): LLM model nametemperature(float, optional): Response randomness (0-1)max_tokens(int, optional): Max response length
Example:
rag("What is machine learning?", model="gpt-4", temperature=0.7)
3. put_document
Upload or update a document with upsert semantics.
Parameters:
content(str): Document text contenttitle(str): Document titlemetadata(dict, optional): Custom metadata (e.g.,{"tags": ["research"], "author": "John"})document_id(str, optional): Explicit document ID
Example:
put_document(
content="Machine learning is...",
title="ML Guide",
metadata={"tags": ["research", "ml"]}
)
4. list_documents
List documents with pagination.
Parameters:
offset(int, optional): Documents to skip (default: 0)limit(int, optional): Max documents (default: 100)document_ids(list[str], optional): Specific IDs to retrievecompact_view(bool, optional): Show only ID and title (default: True)
Example:
list_documents(offset=0, limit=10, compact_view=False)
5. get_document
Retrieve a specific document by ID or title.
Parameters:
document_id(str, optional): Document IDtitle(str, optional): Document title
Example:
get_document(title="ML Guide")
Metadata Filtering
All filter operators supported by R2R:
$eq: Equal$neq: Not equal$gt,$gte: Greater than (or equal)$lt,$lte: Less than (or equal)$in: In array$nin: Not in array$like,$ilike: Pattern matching (case-sensitive/insensitive)
Examples:
# Filter by tags
filters={"tags": {"$in": ["research", "ml"]}}
# Filter by domain
filters={"domain": {"$eq": "instructions"}}
# Combined filters
filters={"tags": {"$in": ["research"]}, "created_at": {"$gte": "2024-01-01"}}
Development
Local Installation
Install directly from PyPI:
pip install r2r-mcp
Or for the latest development version, install from source if you have the code locally:
pip install -e .
Running Tests
pip install -e ".[dev]"
pytest
Building for Distribution
python -m build
Requirements
- Python >= 3.10
- R2R server running and accessible
- r2r Python SDK >= 3.6.0
- mcp >= 1.0.0
License
MIT License - see LICENSE file for details
This package integrates with R2R (RAG to Riches) by SciPhi AI, which is also licensed under the MIT License. We gratefully acknowledge the R2R project and its contributors.
Links
- R2R: https://github.com/SciPhi-AI/R2R
- Model Context Protocol: https://modelcontextprotocol.io/
- FastMCP: https://github.com/jlowin/fastmcp
Support
For issues and questions, visit the package page: https://pypi.org/project/r2r-mcp/
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file r2r_mcp-0.1.3.tar.gz.
File metadata
- Download URL: r2r_mcp-0.1.3.tar.gz
- Upload date:
- Size: 11.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4ee03707bd85bc019fc4f61882064d726d68605ec8ff0a3f907121ea12b008e6
|
|
| MD5 |
90fe1431843ab7081a566c969b9d8069
|
|
| BLAKE2b-256 |
866d8e90f6c905e2873d274bfd2ebe4c06f0e6502fd16039fb9d2ca5a3a63d91
|
File details
Details for the file r2r_mcp-0.1.3-py3-none-any.whl.
File metadata
- Download URL: r2r_mcp-0.1.3-py3-none-any.whl
- Upload date:
- Size: 11.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ff7b7903d0e408eefcf6f193cea88a6c049573410061a64c4d8ab77feff16c44
|
|
| MD5 |
9df75b9ed891e1663e029fa890dca1e4
|
|
| BLAKE2b-256 |
38f02aa1b0e925b0d658e1eb025fdf1d998602102b166abc86ce577084c6bc51
|