Skip to main content
Glama
finite-sample

R Econometrics MCP Server

README.md
# RMCP: Statistical Analysis through Natural Conversation

[![Python application](https://github.com/finite-sample/rmcp/actions/workflows/ci.yml/badge.svg)](https://github.com/finite-sample/rmcp/actions/workflows/ci.yml)
[![PyPI version](https://img.shields.io/pypi/v/rmcp.svg)](https://pypi.org/project/rmcp/)
[![Downloads](https://pepy.tech/badge/rmcp)](https://pepy.tech/project/rmcp)
[![Documentation](https://github.com/finite-sample/rmcp/actions/workflows/docs.yml/badge.svg)](https://finite-sample.github.io/rmcp/)
[![License](https://img.shields.io/github/license/finite-sample/rmcp)](https://github.com/finite-sample/rmcp/blob/main/LICENSE)

**Turn conversations into comprehensive statistical analysis** - A Model Context Protocol (MCP) server with **54 tools** across 11 categories and **429 R packages** from systematic CRAN task views. RMCP enables AI assistants to perform sophisticated statistical modeling, econometric analysis, machine learning, time series analysis, and data science tasks through natural conversation.

## ๐Ÿš€ Quick Start (30 seconds)

### ๐ŸŒ **Try the Live Server** (No Installation Required)

**MCP Endpoint**: `https://rmcp-server-394229601724.us-central1.run.app/mcp` (bearer token required)
**Health Check**: `https://rmcp-server-394229601724.us-central1.run.app/health`

### ๐Ÿ–ฅ๏ธ **Or Install Locally**

```bash
pip install rmcp
rmcp start
```

That's it! RMCP is now ready to handle statistical analysis requests via Claude Desktop, Claude web, or any MCP client.

**๐ŸŽฏ [Working examples โ†’](https://github.com/finite-sample/rmcp/blob/main/examples/quick_start_guide.md)** | **๐Ÿ”ง [Troubleshooting โ†’](https://github.com/finite-sample/rmcp#-quick-troubleshooting)**

## โœจ What Can RMCP Do?

### ๐Ÿ“Š **Regression & Economics**
Linear regression, logistic models, panel data, instrumental variables โ†’ *"Analyze ROI of marketing spend"*

### โฐ **Time Series & Forecasting**
ARIMA models, decomposition, stationarity testing โ†’ *"Forecast next quarter's sales"*

### ๐Ÿง  **Machine Learning**
Clustering, decision trees, random forests โ†’ *"Segment customers by behavior"*

### ๐Ÿ“ˆ **Statistical Testing**
T-tests, ANOVA, chi-square, normality tests โ†’ *"Is my A/B test significant?"*

### ๐Ÿ“‹ **Data Analysis**
Descriptive stats, outlier detection, correlation analysis โ†’ *"Summarize this dataset"*

### ๐Ÿ”„ **Data Transformation**
Standardization, winsorization, lag/lead variables โ†’ *"Prepare data for modeling"*

### ๐Ÿ“Š **Professional Visualizations**
Inline plots in Claude: scatter plots, histograms, heatmaps โ†’ *"Show me a correlation matrix"*

### ๐Ÿ“ **Smart File Operations**
CSV, Excel, JSON import with validation โ†’ *"Load and analyze my sales data"*

### ๐Ÿค– **Natural Language Features**
Formula building, error recovery, example datasets โ†’ *"Help me build a regression formula"*

**๐Ÿ‘‰ [See working examples โ†’](https://github.com/finite-sample/rmcp/blob/main/examples/quick_start_guide.md)**

## ๐Ÿ“Š Real Usage with Claude

### Business Analysis
**You:** *"I have sales data and marketing spend. Can you analyze the ROI?"*

**Claude:** *"I'll run a regression analysis to measure marketing effectiveness..."*

**Result:** *"Every $1 spent on marketing generates $4.70 in sales. The relationship is highly significant (p < 0.001) with Rยฒ = 0.979"*

### Economic Research
**You:** *"Test if GDP growth and unemployment follow Okun's Law using my country data"*

**Claude:** *"I'll analyze the correlation between GDP growth and unemployment..."*

**Result:** *"Strong support for Okun's Law: correlation r = -0.944. Higher GDP growth significantly reduces unemployment."*

### Customer Analytics
**You:** *"Predict customer churn using tenure and monthly charges"*

**Claude:** *"I'll build a logistic regression model for churn prediction..."*

**Result:** *"Model achieves 100% accuracy. Each additional month of tenure reduces churn risk by 11.3%. Higher charges increase churn risk by 3% per dollar."*

## ๐Ÿ“ฆ Installation

### Prerequisites
- **Python 3.11+**
- **R 4.4.0+** with **comprehensive package ecosystem**: RMCP uses a systematic 429-package whitelist from CRAN task views organized into 19+ categories:

```r
# Core packages (install these first)
install.packages(c(
  "jsonlite", "dplyr", "ggplot2", "broom", "plm", "forecast",
  "randomForest", "rpart", "caret", "AER", "vars", "mgcv"
))

# Full ecosystem automatically available: Machine Learning (61 packages),
# Econometrics (55 packages), Time Series (57 packages),
# Bayesian Analysis (40 packages), and more
```

**Package Selection**: Evidence-based, using CRAN task views and download statistics

### Install RMCP

```bash
# Standard installation
pip install rmcp

# The Streamable HTTP transport ships in the base install.
# This extra adds pandas/openpyxl for Excel data handling.
pip install rmcp[http]

# Development installation
git clone https://github.com/finite-sample/rmcp.git
cd rmcp
pip install -e ".[dev]"
```

### Claude Desktop Integration

Add to your Claude Desktop MCP configuration:

```json
{
  "mcpServers": {
    "rmcp": {
      "command": "rmcp",
      "args": ["start"]
    }
  }
}
```

### HTTP Server Integration (Claude Web)

RMCP serves the MCP **Streamable HTTP** transport at `/mcp` (spec 2025-11-25),
compatible with Claude custom connectors and OpenAI's Responses API / ChatGPT
remote MCP support. Remote deployments require a bearer token.

**Production Server**:
```
Server URL: https://rmcp-server-394229601724.us-central1.run.app/mcp
```

**Test the connection**:
```bash
# Health check
curl https://rmcp-server-394229601724.us-central1.run.app/health

# Initialize MCP session (Streamable HTTP)
curl -X POST https://rmcp-server-394229601724.us-central1.run.app/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "Authorization: Bearer $RMCP_API_KEY" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"test-client","version":"1.0"}}}'
```

**Local HTTP server**:
```bash
# Localhost (no auth required)
rmcp serve-http

# Remote bind requires a bearer token (or --allow-unauthenticated)
RMCP_API_KEY=your-secret rmcp serve-http --host 0.0.0.0 --port 8080
```

### Command Line Usage

```bash
# Start MCP server (for Claude Desktop)
rmcp start

# Start HTTP server (for web apps)
rmcp serve-http --host 0.0.0.0 --port 8080

# Start HTTPS server (production ready)
rmcp serve-http --ssl-keyfile server.key --ssl-certfile server.crt --port 8443

# Quick HTTPS setup for development
./scripts/setup/setup_https_dev.sh && source certs/https-env.sh && rmcp serve-http

# Use configuration file
rmcp --config ~/.rmcp/config.json start

# Enable debug mode
rmcp --debug start

# Check installation
rmcp --version
```

### Shell Completion

```bash
# zsh โ€” add to ~/.zshrc
eval "$(_RMCP_COMPLETE=zsh_source rmcp)"

# bash โ€” add to ~/.bashrc (requires bash 4.4+)
eval "$(_RMCP_COMPLETE=bash_source rmcp)"

# fish โ€” write to the completions directory
_RMCP_COMPLETE=fish_source rmcp > ~/.config/fish/completions/rmcp.fish
```

macOS ships bash 3.2, which is too old โ€” click prints a warning and completion
does nothing. Use zsh (the macOS default) or install a newer bash.

### โš™๏ธ Configuration

RMCP supports flexible configuration through environment variables, configuration files, and command-line options:

```bash
# Environment variables
export RMCP_HTTP_PORT=9000
export RMCP_R_TIMEOUT=180
export RMCP_LOG_LEVEL=DEBUG
rmcp start

# Configuration file (~/.rmcp/config.json)
{
  "http": {"port": 9000},
  "r": {"timeout": 180},
  "logging": {"level": "DEBUG"}
}

# Docker with environment variables
docker run -e RMCP_HTTP_HOST=0.0.0.0 -e RMCP_HTTP_PORT=8000 rmcp:latest
```

**๐Ÿ“– [Complete Configuration Guide โ†’](https://github.com/finite-sample/rmcp/blob/main/docs/configuration.md)**

## ๐Ÿ”ฅ Key Features

- **๐ŸŽฏ Natural Conversation**: Ask questions in plain English, get statistical analysis
- **๐Ÿ“š Comprehensive Package Ecosystem**: 429 R packages from systematic CRAN task views
- **๐Ÿ“Š Professional Output**: Formatted results with markdown tables and inline visualizations
- **๐Ÿ”’ Production Ready**: Official MCP SDK with stdio and Streamable HTTP transports, plus bearer-token auth for remote deployments
- **โš™๏ธ Flexible Configuration**: Environment variables, config files, and CLI options
- **โšก Tested at the protocol boundary**: deterministic semantic, malformed-data, security, approval, and recovery contracts run through the official MCP client
- **๐ŸŒ Multiple Transports**: stdio (Claude Desktop) and HTTP (web applications)
- **๐Ÿ›ก๏ธ Guardrails**: Package allowlist, explicit user approval for file writes, package installs and system calls, and filesystem confinement for tool-written files. These guard against mistakes, not adversaries โ€” RMCP executes R as the invoking user, so run it as a trusted local tool rather than an untrusted multi-tenant service.

## ๐Ÿ“š Documentation

| Resource | Description |
|----------|-------------|
| **[Quick Start Guide](https://github.com/finite-sample/rmcp/blob/main/examples/quick_start_guide.md)** | Copy-paste ready examples with real data |
| **[Economic Research Examples](https://github.com/finite-sample/rmcp/blob/main/examples/economic_research_example.md)** | Panel data, time series, advanced econometrics |
| **[Time Series Examples](https://github.com/finite-sample/rmcp/blob/main/examples/advanced_time_series_example.md)** | ARIMA, forecasting, decomposition |
| **[Image Display Examples](https://github.com/finite-sample/rmcp/blob/main/examples/image_display_example.md)** | Inline visualizations in Claude |
| **[API Documentation](docs/)** | Auto-generated API reference |

## ๐Ÿงช Validation

RMCP's [evaluation guide](docs/evaluation.md) defines package, contract, protocol,
and model-level release gates. The deterministic E2E suite launches a real RMCP
stdio process, connects with the official MCP client, and checks exact statistical
identities alongside malformed data, code-like inputs, filesystem escape attempts,
approval state, and recovery behavior.

```bash
uv run pytest tests/evals/test_mcp_server_evals.py
```

## ๐Ÿค Contributing

We welcome contributions!

```bash
git clone https://github.com/finite-sample/rmcp.git
cd rmcp
pip install -e ".[dev]"

# Run tests
uv run pytest tests/

# Lint and format
uv run ruff check --fix .
uv run ruff format .
```

## ๐Ÿ“„ License

MIT License - see [LICENSE](LICENSE) file for details.

## ๐Ÿ› ๏ธ Quick Troubleshooting

**R not found?**
```bash
# macOS: brew install r
# Ubuntu: sudo apt install r-base
R --version
```

**Missing R packages?**
```bash
rmcp check-r-packages  # Check what's missing
```

**MCP connection issues?**
```bash
rmcp list-capabilities   # verify tools register without starting a session
rmcp --debug start       # run the server with verbose logging on stderr
```

**๐Ÿ“– Need more help?** Check the [examples](https://github.com/finite-sample/rmcp/tree/main/examples) directory for working code.

## ๐Ÿ™‹ Support

- ๐Ÿ› **Issues**: [GitHub Issues](https://github.com/finite-sample/rmcp/issues)
- ๐Ÿ“– **Examples**: [Working examples](https://github.com/finite-sample/rmcp/blob/main/examples/quick_start_guide.md)

---

**Ready to turn conversations into statistical insights?** Install RMCP and start analyzing data through AI assistants today! ๐Ÿš€