Skip to main content
Glama

R Econometrics MCP Server

MIT License
187
  • Linux
  • Apple
Dockerfile.base5.22 kB
# Base R Environment for RMCP # This image contains all R packages and system dependencies # Rebuilt weekly via scheduled GitHub Actions workflow # # To rebuild manually: # docker build -f Dockerfile.base -t ghcr.io/finite-sample/rmcp-base:latest . # docker push ghcr.io/finite-sample/rmcp-base:latest FROM rocker/r2u:noble ENV DEBIAN_FRONTEND=noninteractive \ PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 LABEL org.opencontainers.image.title="RMCP Base Environment" LABEL org.opencontainers.image.description="Pre-built R statistical environment for RMCP" LABEL org.opencontainers.image.vendor="RMCP Project" LABEL org.opencontainers.image.source="https://github.com/finite-sample/rmcp" # Install system dependencies (shared between dev and prod) # Use cache mount for apt downloads only (avoid lock conflicts in multi-platform builds) ARG TARGETPLATFORM RUN --mount=type=cache,target=/var/cache/apt,id=apt-cache-${TARGETPLATFORM} \ set -eux; \ # Clean any existing locks and ensure clean state rm -f /var/lib/apt/lists/lock /var/cache/apt/archives/lock /var/lib/dpkg/lock*; \ apt-get update; \ apt-get install -y --no-install-recommends \ python3 python3-pip python3-venv python3-dev \ build-essential git \ libcurl4-openssl-dev libssl-dev libxml2-dev \ ca-certificates wget \ # Additional build dependencies pkg-config \ gcc g++ \ libblas-dev liblapack-dev \ gfortran \ # mkcert dependencies for HTTPS development libnss3-tools \ curl \ # JSON processing for metadata generation jq; \ # Clean package lists and temporary files rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* # Configure r2u binary package manager for faster installation RUN echo "options(bspm.enable=TRUE, bspm.quiet=TRUE)" >> /etc/R/Rprofile.site # Install mkcert for HTTPS development (multi-architecture support) ARG TARGETPLATFORM RUN set -eux; \ MKCERT_VERSION="v1.4.4"; \ case "${TARGETPLATFORM}" in \ "linux/amd64") MKCERT_ARCH="linux-amd64" ;; \ "linux/arm64") MKCERT_ARCH="linux-arm64" ;; \ *) echo "Unsupported platform: ${TARGETPLATFORM}" && exit 1 ;; \ esac; \ curl -Lo /usr/local/bin/mkcert \ "https://github.com/FiloSottile/mkcert/releases/download/${MKCERT_VERSION}/mkcert-${MKCERT_VERSION}-${MKCERT_ARCH}"; \ chmod +x /usr/local/bin/mkcert; \ # Verify installation mkcert -version # Install R packages in optimized groups (leverages r2u binary packages) # Merge groups to reduce layers and use parallel installation where possible # Groups 1-2: Essential data manipulation, stats, and modeling packages RUN --mount=type=cache,target=/tmp/downloaded_packages,id=r-cache-${TARGETPLATFORM} \ R -q -e "install.packages(c( \ 'jsonlite', 'dplyr', 'rlang', 'data.table', 'tidyr', \ 'MASS', 'boot', 'survival', 'lattice', \ 'plm', 'lmtest', 'sandwich', 'AER', 'car', 'broom', \ 'nlme', 'mgcv', 'lme4', 'glmnet' \ ), Ncpus = parallel::detectCores())" # Groups 3-4: Time series and machine learning packages RUN --mount=type=cache,target=/tmp/downloaded_packages,id=r-cache-${TARGETPLATFORM} \ R -q -e "install.packages(c( \ 'forecast', 'vars', 'urca', 'tseries', 'zoo', 'xts', 'TTR', 'quantmod', \ 'e1071', 'caret', 'nnet', 'gbm', 'xgboost', 'kernlab', 'cluster', \ 'rpart', 'randomForest' \ ), Ncpus = parallel::detectCores())" # Groups 5-7: Visualization, I/O, and development packages RUN --mount=type=cache,target=/tmp/downloaded_packages,id=r-cache-${TARGETPLATFORM} \ R -q -e "install.packages(c( \ 'ggplot2', 'gridExtra', 'corrplot', 'viridis', 'RColorBrewer', \ 'readxl', 'openxlsx', 'base64enc', 'reshape2', 'knitr', 'nortest', 'lavaan', \ 'styler', 'lintr', 'testthat' \ ), Ncpus = parallel::detectCores())" # Verify R installation and package availability RUN R -q -e " \ library(jsonlite); \ library(dplyr); \ library(ggplot2); \ library(forecast); \ library(randomForest); \ cat('✅ All R packages installed successfully\\n'); \ cat('R version:', R.version.string, '\\n'); \ cat('Installed packages:', length(.packages(all.available=TRUE)), '\\n'); \ " # Create base metadata file for versioning RUN set -eux; \ BUILD_DATE=$(date -u +%Y-%m-%dT%H:%M:%SZ); \ R_VERSION=$(R --version | head -1); \ jq -n \ --arg build_date "$BUILD_DATE" \ --arg r_version "$R_VERSION" \ --arg base_image "rocker/r2u:noble" \ '{build_date: $build_date, r_version: $r_version, base_image: $base_image}' \ > /opt/rmcp-base-info.json # Python environment is ready via system packages # Skip system pip upgrade to avoid Debian package conflicts # Individual stages will handle pip upgrades in virtual environments # Final cleanup RUN --mount=type=cache,target=/var/cache/apt,id=apt-cache-${TARGETPLATFORM} \ set -eux; \ # Clean any locks before cleanup rm -f /var/lib/apt/lists/lock /var/cache/apt/archives/lock /var/lib/dpkg/lock*; \ apt-get autoremove -y && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /root/.cache WORKDIR /workspace CMD ["R"]

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/finite-sample/rmcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server