# 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! ๐Ÿš€