MM

muhammadindar/mcp-rlm

Developer tools
11 stars 4 forks Quality 74 Trend 18MIT

MCP-RLM is an open-source implementation of the Recursive Language Models (RLMs) architecture introduced by researchers at MIT CSAIL (Zhang et al., 2025)

Overview

is an open-source implementation of the architecture introduced by researchers at MIT CSAIL (Zhang et al., 2025). It enables LLMs to process documents far beyond their context window limits through programmatic decomposition and recursive querying. - - Handle documents with millions of tokens - - OpenRouter, OpenAI, Anthropic, Ollama - - Two-tier architecture reduces costs by 70-80% - - Isolated chunk analysis prevents hallucinations - - Works with Claude Desktop, Cursor, etc. - - Mix and match LLM providers - - Dynamic code generation for query planning - - Use OpenRouter's free models MCP-RLM employs a that separates strategic planning from execution: The config.yaml file defines available LLM providers: Configure which models power each agent: Use Case Root Agent Sub Agent Provider Cost Free Tier mistral-small-3.1:free qwen-2.5-vl-7b:free OpenRouter $0 Best Performance claude-3.5-sonnet gpt-4o-mini Mixed $$ Cost Optimized gpt-4o gpt-4o-mini OpenAI $ Privacy First claude-3.

README


📋 Overview

MCP-RLM is an open-source implementation of the Recursive Language Models (RLMs) architecture introduced by researchers at MIT CSAIL (Zhang et al., 2025). It enables LLMs to process documents far beyond their context window limits through programmatic decomposition and recursive querying.

The Challenge

Traditional LLM Approach MCP-RLM Approach
❌ Limited to 4K-128K token context windows ✅ Handles 10M+ tokens seamlessly
❌ Context degradation (“lost in the middle”) ✅ Maintains accuracy through chunked analysis
❌ Expensive for long documents ($15/1M tokens) ✅ Cost-effective ($3/1M tokens, 80% savings)
❌ Single-pass processing bottleneck ✅ Parallel recursive decomposition

✨ Features


🏗 Architecture

MCP-RLM employs a two-tier agent system that separates strategic planning from execution:

graph TB
    subgraph Input
        A[User Query]
        B[Large Document10M+ tokens]
    end
    
    subgraph "Root Agent (Planner)"
        C[Analyze Metadata]
        D[Generate Strategy]
        E[Write Python Code]
    end
    
    subgraph "Execution Layer"
        F[Python REPL]
        G[Chunk Manager]
    end
    
    subgraph "Sub Agents (Workers)"
        H1[Worker 1]
        H2[Worker 2]
        H3[Worker N]
    end
    
    subgraph Output
        I[Aggregated Results]
        J[Final Answer]
    end
    
    A --> C
    B --> C
    C --> D
    D --> E
    E --> F
    F --> G
    G --> H1
    G --> H2
    G --> H3
    H1 --> I
    H2 --> I
    H3 --> I
    I --> J
    
    style A fill:#e3f2fd
    style B fill:#e3f2fd
    style C fill:#fff9c4
    style D fill:#fff9c4
    style E fill:#fff9c4
    style F fill:#f3e5f5
    style G fill:#f3e5f5
    style H1 fill:#e8f5e9
    style H2 fill:#e8f5e9
    style H3 fill:#e8f5e9
    style I fill:#fce4ec
    style J fill:#fce4ec

Agent Roles

Agent Responsibility Characteristics Model Recommendations
Root Agent Strategic planning and code generation • Views metadata only• Generates Python strategies• Called 5-10 times per query • Claude 3.5 Sonnet• GPT-4o• Mistral Large
Sub Agent Chunk-level data extraction • Reads small segments• Extracts specific info• Called 100-1000+ times • GPT-4o-mini• Claude Haiku• Qwen 2.5 (free)

🚀 Installation

Prerequisites

# Required
- Python 3.10 or higher
- pip package manager

# API Keys (choose at least one)
- OpenRouter API key (recommended for free tier)
- OpenAI API key
- Anthropic API key
- Ollama (for local deployment)

Quick Start

# Clone the repository
git clone https://github.com/MuhammadIndar/MCP-RLM.git
cd MCP-RLM

# Create virtual environment
python -m venv venv

# Activate virtual environment
# On Linux/macOS:
source venv/bin/activate
# On Windows:
venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

# Configure environment
cp .env.EXAMPLE .env
# Edit .env with your API keys

# Start the server
python server.py

Expected Output:

MCP RLM Server Started...
Listening on stdio...

⚙ Configuration

1. Environment Setup

Copy the example environment file:

cp .env.EXAMPLE .env

Edit .env with your credentials:

# OpenRouter (Recommended - includes free tier)
OPENROUTER_API_KEY=sk-or-v1-xxxxx

# OpenAI Official
OPENAI_API_KEY=sk-proj-xxxxx

# Anthropic Official  
ANTHROPIC_API_KEY=sk-ant-xxxxx

# Ollama Local (optional, set to 'dummy' if not used)
OLLAMA_API_KEY=dummy

2. Provider Configuration

The config.yaml file defines available LLM providers:

providers:
  openrouter:
    type: "openai_compatible"
    base_url: "https://openrouter.ai/api/v1"
    api_key_env: "OPENROUTER_API_KEY"
  
  ollama_local:
    type: "openai_compatible"
    base_url: "http://localhost:11434/v1"
    api_key_env: "OLLAMA_API_KEY"
  
  openai_official:
    type: "openai_compatible"
    base_url: "https://api.openai.com/v1"
    api_key_env: "OPENAI_API_KEY"
  
  anthropic_official:
    type: "anthropic"
    api_key_env: "ANTHROPIC_API_KEY"

3. Agent Configuration

Configure which models power each agent:

agents:
  root:
    provider_ref: "openrouter"
    model: "anthropic/claude-3.5-sonnet"
    temperature: 0.0
    max_tokens: 4096
  
  sub:
    provider_ref: "openrouter"
    model: "qwen/qwen-2.5-vl-7b-instruct:free"
    temperature: 0.0
    max_tokens: 1000

system:
  max_loops: 5  # Maximum refinement iterations

💻 MCP Client Integration

Supported Clients

MCP-RLM integrates with any MCP-compatible client:

Client Platform Use Case
Claude Desktop Desktop App General-purpose AI assistant
Cursor IDE Code analysis and development
Antigravity IDE AI-powered development

Configuration Instructions


📖 Usage

Available Tool

analyze_massive_document(file_path: str, query: str)

Analyzes large documents using recursive decomposition.

Parameters:

  • file_path (string): Absolute path to the document
  • query (string): Natural language query about the document

Returns: Analysis results as text

Example Queries

# Log Analysis
"Analyze /var/log/nginx/access.log and identify the top 10 IP addresses 
 making requests, along with their request patterns"

# Codebase Security Audit
"Scan the entire /src directory and find all instances where user input 
 is directly used in SQL queries without sanitization"

# Research Paper Synthesis
"Read all PDF files in /papers/machine-learning/ and summarize 
 the common evaluation metrics used across studies"

# Configuration Validation
"Parse /etc/config/*.yaml files and verify that all required 
 security parameters are present and properly configured"

Performance Metrics

Based on testing with OpenRouter free tier models:

Document Size Sub-Agent Calls Processing Time Cost (Free Tier)
10K tokens ~10 10 seconds $0.00
100K tokens ~100 1 minute $0.00
1M tokens ~500 5 minutes $0.00
10M tokens ~2000 20 minutes $0.00

Note: Times vary based on model speed and network latency


📁 Project Structure

MCP-RLM/
├── assets/
│   └── RLM.png              # Architecture diagram
│
├── .env.EXAMPLE             # Environment variables template
├── .gitignore               # Git ignore patterns
├── LICENSE                  # MIT License
├── README.md                # This documentation
├── config.yaml              # Provider & agent configuration
├── requirements.txt         # Python dependencies
│
├── server.py                # MCP server entry point
├── rlm_engine.py            # Core RLM recursive logic
├── llm_factory.py           # Multi-provider LLM abstraction
└── prompts.py               # System prompts for agents

Core Components

File Purpose
server.py MCP server implementation with FastMCP
rlm_engine.py Recursive execution engine with Python REPL
llm_factory.py Unified interface for OpenAI/Anthropic/Ollama
prompts.py System prompt for Root Agent strategy
config.yaml Provider and agent configuration

🔬 Research Foundation

This implementation is based on cutting-edge research from MIT CSAIL:

Recursive Language Models
Alex L. Zhang, Tim Kraska, Omar Khattab
MIT Computer Science & Artificial Intelligence Laboratory, 2025
📄 arXiv:2512.24601

Key Contributions

Concept Description
Programmatic Decomposition Treat long prompts as external databases accessible via code
Recursive Self-Querying Break complex queries into manageable sub-problems
Two-Tier Architecture Separate strategic planning from execution for cost efficiency
Infinite Scaling Process documents orders of magnitude larger than context windows

Performance Gains

According to the paper, RLM achieves:

  • 94% accuracy on needle-in-haystack tasks (vs 23% for standard LLMs)
  • 79% cost reduction compared to loading full context
  • Linear scaling with document size instead of quadratic

🤝 Contributing

Contributions are welcome! Here’s how you can help:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Development Setup

# Install development dependencies
pip install -r requirements.txt

# Run linting
flake8 *.py

# Run type checking
mypy *.py

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

MIT License - Copyright (c) 2025 MCP-RLM Contributors

Acknowledgments

  • MIT CSAIL - Original RLM research and theoretical foundation
  • Anthropic - Model Context Protocol specification and Claude models
  • OpenRouter - Free tier access to multiple LLM providers
  • Ollama - Local LLM deployment infrastructure

📞 Support


View the full README on GitHub

Install

This server does not publish a one-line install command.

Open the repository installation guide New to MCP? Start with the mcpskill.org guide →

Configuration

{ "mcpServers": { "rlm-researcher": { "command": "/absolute/path/to/MCP-RLM/venv/bin/python", "args": ["/absolute/path/to/MCP-RLM/server.py"] } } }