Model Context Protocol server bringing R statistical analysis to Claude Desktop and Claude web, over stdio and Streamable HTTP
Project description
RMCP: Statistical Analysis through Natural Conversation
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
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 โ | ๐ง 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"
๐ 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:
# 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
# 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:
{
"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:
# 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:
# 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
# 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
# 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:
# 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 โ (auto-generated from code)
๐ฅ 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
- โก Fast & Reliable: 100% test success rate across all scenarios
- ๐ 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 | Copy-paste ready examples with real data |
| Economic Research Examples | Panel data, time series, advanced econometrics |
| Time Series Examples | ARIMA, forecasting, decomposition |
| Image Display Examples | Inline visualizations in Claude |
| API Documentation | Auto-generated API reference |
๐งช Validation
RMCP has been tested with real-world scenarios achieving 100% success rate:
- โ Business Analysts: Sales forecasting with 97.9% Rยฒ, $4.70 ROI per marketing dollar
- โ Economists: Macroeconomic analysis confirming Okun's Law (r=-0.944)
- โ Data Scientists: Customer churn prediction with 100% accuracy
- โ Researchers: Treatment effect analysis with significant results (p<0.001)
๐ค Contributing
We welcome contributions!
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 file for details.
๐ ๏ธ Quick Troubleshooting
R not found?
# macOS: brew install r
# Ubuntu: sudo apt install r-base
R --version
Missing R packages?
rmcp check-r-packages # Check what's missing
MCP connection issues?
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 directory for working code.
๐ Support
- ๐ Issues: GitHub Issues
- ๐ Examples: Working examples
Ready to turn conversations into statistical insights? Install RMCP and start analyzing data through AI assistants today! ๐
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rmcp-0.10.2.tar.gz.
File metadata
- Download URL: rmcp-0.10.2.tar.gz
- Upload date:
- Size: 201.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
703484be51071d1d7965215410eeb0ab326a3536cfd66a88a7de5152bef6a67e
|
|
| MD5 |
20e92304f725f8ea9de00d9347af1649
|
|
| BLAKE2b-256 |
a43a0718835de8f049895a91356da385ceccdfe52af5f03dc5c9ff145a85ecbb
|
Provenance
The following attestation bundles were made for rmcp-0.10.2.tar.gz:
Publisher:
python-publish.yml on finite-sample/rmcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rmcp-0.10.2.tar.gz -
Subject digest:
703484be51071d1d7965215410eeb0ab326a3536cfd66a88a7de5152bef6a67e - Sigstore transparency entry: 2279147666
- Sigstore integration time:
-
Permalink:
finite-sample/rmcp@630a4378acada95eb8599db51077e4696286d7e5 -
Branch / Tag:
refs/tags/v0.10.2 - Owner: https://github.com/finite-sample
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@630a4378acada95eb8599db51077e4696286d7e5 -
Trigger Event:
push
-
Statement type:
File details
Details for the file rmcp-0.10.2-py3-none-any.whl.
File metadata
- Download URL: rmcp-0.10.2-py3-none-any.whl
- Upload date:
- Size: 242.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
53d634b2867d0ffff809c32ba05f07c07f7da6c88addedccc750ba29af8707d6
|
|
| MD5 |
68545072cc7cb2c2dd5c54af5b749fce
|
|
| BLAKE2b-256 |
d3c5fcd900ee5ff459267ce0cf96848223e2f443a78eecda372310cf14ac1280
|
Provenance
The following attestation bundles were made for rmcp-0.10.2-py3-none-any.whl:
Publisher:
python-publish.yml on finite-sample/rmcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rmcp-0.10.2-py3-none-any.whl -
Subject digest:
53d634b2867d0ffff809c32ba05f07c07f7da6c88addedccc750ba29af8707d6 - Sigstore transparency entry: 2279147675
- Sigstore integration time:
-
Permalink:
finite-sample/rmcp@630a4378acada95eb8599db51077e4696286d7e5 -
Branch / Tag:
refs/tags/v0.10.2 - Owner: https://github.com/finite-sample
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@630a4378acada95eb8599db51077e4696286d7e5 -
Trigger Event:
push
-
Statement type: