Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
Handles 10M+ token contexts with chunking, sub-queries, and local Ollama inference.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
RLM_DATA_DIR, OLLAMA_URLYou need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Download the maker’s .mcpb file
The link goes to the maker’s own file; we do not host or repackage it. Open the file and Claude Desktop installs it.
Run this in your terminal
claude mcp add massive-context --env RLM_DATA_DIR=your-value --env OLLAMA_URL=your-value -- uvx massive-context-mcpFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"massive-context": {
"command": "uvx",
"args": [
"massive-context-mcp"
],
"env": {
"RLM_DATA_DIR": "your-value",
"OLLAMA_URL": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"massive-context": {
"type": "stdio",
"command": "uvx",
"args": [
"massive-context-mcp"
],
"env": {
"RLM_DATA_DIR": "your-value",
"OLLAMA_URL": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
RLM_DATA_DIR envOLLAMA_URL envThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 8, 2026
The registry name was verified with the GitHub account egoughnour, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (3.0.1) reached the registry 10 months ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Python (uv), MCPB on your computer.
In the same category: Spec Driven Development, Remote Desktop Commander, Filesystem MCP
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Filesystem MCP server for AI assistants.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
Handle massive contexts (10M+ tokens) with chunking, sub-queries, and free local inference via Ollama.
flowchart TD
A[Claude Code] --> B[RLM MCP Server] B --> C{rlm_ollama_status} C -->|cached 60s| D{provider = auto}
D -->|Ollama running| E[🦙 Ollama gemma3:12b] D -->|Ollama unavailable| F[☁️ Claude SDK claude-haiku-4-5]
E --> G[["💰 $0 Free local inference"]] F --> H[["💰 ~$0.80/1M Cloud inference"]]
style A fill:#ff922b,color:#fff style B fill:#339af0,color:#fff style E fill:#51cf66,color:#fff style F fill:#748ffc,color:#fff style G fill:#51cf66,color:#fff style H fill:#748ffc,color:#fff
Based on the Recursive Language Model pattern. Inspired by richardwhiteii/rlm.
📸 Screenshots
Instead of feeding massive contexts directly into the LLM:
Option 1: PyPI (Recommended)
uvx massive-context-mcp
pip install massive-context-mcp
With Optional Extras:
# With Code Firewall integration (security filter for rlm_exec)
pip install massive-context-mcp[firewall]
pip install massive-context-mcp[claude]
pip install massive-context-mcp[firewall,claude]
Option 2: Claude Desktop One-Click
Download the .mcpb from Releases and double-click to install.
Option 3: From Source
git clone https://github.com/egoughnour/massive-context-mcp.git
cd massive-context-mcp uv sync
Add to ~/.claude/.mcp.json (Claude Code) or claude_desktop_config.json (Claude Desktop):
{
"mcpServers": { "massive-context": { "command": "uvx", "args": ["massive-context-mcp"], "env": { "RLM_DATA_DIR": "~/.rlm-data", "OLLAMA_URL": "http://localhost:11434" } } } }
| Tool | Purpose |
|---|---|
rlm_system_check | Check system requirements — verify macOS, Apple Silicon, 16GB+ RAM, Homebrew |
rlm_setup_ollama | Install via Homebrew — managed service, auto-updates, requires Homebrew |
rlm_setup_ollama_direct | Install via direct download — no sudo, fully headless, works on locked-down machines |
rlm_ollama_status | Check Ollama availability — detect if free local inference is available |
| Tool | Purpose |
|---|---|
rlm_auto_analyze | One-step analysis — auto-detects type, chunks, and queries |
rlm_load_context | Load context as external variable |
rlm_inspect_context | Get structure info without loading into prompt |
rlm_chunk_context | Chunk by lines/chars/paragraphs |
rlm_get_chunk | Retrieve specific chunk |
rlm_filter_context | Filter with regex (keep/remove matching lines) |
rlm_exec | Execute Python code against loaded context (sandboxed) |
rlm_sub_query | Make sub-LLM call on chunk |
rlm_sub_query_batch | Process multiple chunks in parallel |
rlm_store_result | Store sub-call result for aggregation |
rlm_get_results | Retrieve stored results |
rlm_list_contexts | List all loaded contexts |
rlm_auto_analyzeFor most use cases, just use rlm_auto_analyze — it handles everything automatically:
rlm_auto_analyze(
name="my_file", content=file_content, goal="find_bugs" # or: summarize, extract_structure, security_audit, answer: )
What it does automatically:
Supported goals:
| Goal | Description |
|---|---|
summarize | Summarize content purpose and key points |
find_bugs | Identify errors, issues, potential problems |
extract_structure | List functions, classes, schema, headings |
security_audit | Find vulnerabilities and security issues |
answer: | Answer a custom question about the content |
rlm_execFor deterministic pattern matching and data extraction, use rlm_exec to run Python code directly against a loaded context. This is closer to the paper's REPL approach and provides full control over analysis logic.
Tool: rlm_exec
Purpose: Execute arbitrary Python code against a loaded context in a sandboxed subprocess.
Parameters:
code (required): Python code to execute. Set the result variable to capture output.context_name (required): Name of a previously loaded context.timeout (optional, default 30): Maximum execution time in seconds.Features:
context variablere, json, collectionsExample — Finding patterns in a loaded context:
# After loading a context
rlm_exec( code=""" import re amounts = re.findall(r'\$[\d,]+', context) result = {'count': len(amounts), 'sample': amounts[:5]} """, context_name="bill" )
Example Response:
{
"result": { "count": 1247, "sample": ["$500", "$1,000", "$250,000", "$100,000", "$50"] }, "stdout": "", "stderr": "", "return_code": 0, "timed_out": false }
Example — Extracting structured data:
rlm_exec(
code=""" import re import json
emails = re.findall(r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b', context)
from collections import Counter domains = [e.split('@')[1] for e in emails] domain_counts = Counter(domains)
result = { 'total_emails': len(emails), 'unique_domains': len(domain_counts), 'top_domains': domain_counts.most_common(5) } """, context_name="dataset", timeout=60 )
When to use `rlm_exec` vs `rlm_sub_query`:
| Use Case | Tool | Why |
|---|---|---|
| Extract all dates, IDs, amounts | rlm_exec | Regex is deterministic and fast |
| Find security vulnerabilities | rlm_sub_query | Requires reasoning and context |
| Parse JSON/XML structure | rlm_exec | Standard libraries work perfectly |
| Summarize themes or tone | rlm_sub_query | Natural language understanding needed |
| Count word frequencies | rlm_exec | Simple computation, no AI needed |
| Answer "Why did X happen?" | rlm_sub_query | Requires inference and reasoning |
Tip: For large contexts, combine both — use rlm_exec to filter/extract, then rlm_sub_query for semantic analysis of filtered results.
For enhanced security, integrate code-firewall-mcp to filter dangerous code patterns before execution:
pip install massive-context-mcp[firewall]
When installed, rlm_exec can automatically check code against a blacklist of known dangerous patterns (e.g., os.system(), eval(), subprocess with shell=True). The firewall uses structural similarity matching — normalizing code to its skeleton and comparing against blacklisted patterns via embeddings.
How it works:
_, strings → "S")Configuration (environment variables):
RLM_FIREWALL_ENABLED=true — Enable firewall checks (auto-enabled when package installed)RLM_FIREWALL_MODE=warn|block — Warn or block on matches (default: warn)Example blocked patterns:
os.system(user_input) — Command injectioneval(untrusted_data) — Code injectionsubprocess.Popen(..., shell=True) — Shell injectionUse rlm_firewall_status to check firewall availability and configuration.
RLM automatically detects and uses the best available provider:
| Provider | Default Model | Cost | Use Case |
|---|---|---|---|
auto | (best available) | $0 or ~$0.80/1M | Default — prefers Ollama if available |
ollama | gemma3:12b | $0 | Local inference, requires Ollama |
claude-sdk | claude-haiku-4-5 | ~$0.80/1M input | Cloud inference, always available |
When you use provider="auto" (the default), RLM:
OLLAMA_URL (default: http://localhost:11434)The status is cached for 60 seconds to avoid repeated network checks.
Use rlm_ollama_status to see what's available:
rlm_ollama_status()
Response when Ollama is ready:
{
"running": true, "models": ["gemma3:12b", "llama3:8b"], "default_model_available": true, "best_provider": "ollama", "recommendation": "Ollama is ready! Sub-queries will use free local inference by default." }
Response when Ollama is not available:
{
"running": false, "error": "connection_refused", "best_provider": "claude-sdk", "recommendation": "Ollama not available. Sub-queries will use Claude API. To enable free local inference, install Ollama and run: ollama serve"
Only the beginning is shown; read the rest in the repo