Skip to main content

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 query
  • filters (dict, optional): Metadata filters (e.g., {"tags": {"$in": ["agents"]}})
  • limit (int, optional): Maximum results
  • use_semantic_search (bool, optional): Enable vector search
  • use_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 answer
  • filters (dict, optional): Metadata filters
  • limit (int, optional): Max search results to use
  • model (str, optional): LLM model name
  • temperature (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 content
  • title (str): Document title
  • metadata (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 retrieve
  • compact_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 ID
  • title (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

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

r2r_mcp-0.1.2.tar.gz (11.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

r2r_mcp-0.1.2-py3-none-any.whl (10.4 kB view details)

Uploaded Python 3

File details

Details for the file r2r_mcp-0.1.2.tar.gz.

File metadata

  • Download URL: r2r_mcp-0.1.2.tar.gz
  • Upload date:
  • Size: 11.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.11

File hashes

Hashes for r2r_mcp-0.1.2.tar.gz
Algorithm Hash digest
SHA256 09c5b6bfe963c30f472cfa3a9fcc613028e50d7ca4114ec42431dc6e377baf16
MD5 a87e11ebcd588b1d98dd25c9fe1b1412
BLAKE2b-256 2ec6ccb93250c760d1898405de929243f2a2b3d811143848681fb3882183a5e7

See more details on using hashes here.

File details

Details for the file r2r_mcp-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: r2r_mcp-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 10.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.11

File hashes

Hashes for r2r_mcp-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1c9a6cd64efa363be99d3ceebd22310f7e9272ac2902164d811d918a1422ccdb
MD5 433b289700076af079bac8c82dba3478
BLAKE2b-256 5e7c6db5a7373cb7636d676845202ed8d574960677e3961cb1f2ebd4fa5b34d8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page