MCPR

Exponer funciones de R a través del Model Context Protocol (MCP) para una integración fluida con asistentes de IA.

Documentación

mcpr

Lifecycle: experimental CRAN status

mcpr expone funciones de R a través del Protocolo de Contexto de Modelos (MCP), lo que permite una integración fluida con asistentes de IA como Claude Desktop.

Instalación

# install.packages("devtools")
devtools::install_github("chi2labs/mcpr")

Inicio Rápido

Servidor Básico

library(mcpr)

# Create and configure server
server <- mcp_http("My R Analysis Server", "1.0.0", port = 8080)

# Add tools
server$mcp_tool(
  name = "calculate_mean",
  fn = function(numbers) mean(numbers),
  description = "Calculate the mean of a numeric vector"
)

# Run server
server$mcp_run()

Uso de Decoradores

Crea un archivo con funciones decoradas:

# analysis-tools.R
#* @mcp_tool
#* @description Calculate summary statistics for a numeric vector
#* @param x numeric vector to analyze
#* @param na.rm logical whether to remove NA values (default: TRUE)
calculate_stats <- function(x, na.rm = TRUE) {
  list(
    mean = mean(x, na.rm = na.rm),
    median = median(x, na.rm = na.rm),
    sd = sd(x, na.rm = na.rm),
    min = min(x, na.rm = na.rm),
    max = max(x, na.rm = na.rm)
  )
}

Carga y ejecuta:

server <- mcp("Analysis Server", "1.0.0")
server$mcp_source("analysis-tools.R")
server$mcp_run(transport = "http", port = 8080)

Configurar Claude Desktop

Agrega a la configuración de Claude Desktop:

{
  "mcpServers": {
    "r-analysis": {
      "url": "http://localhost:8080/mcp"
    }
  }
}

Uso Avanzado

Registrar Funciones Existentes

server <- mcp_http("Stats Server", "1.0.0")

server$mcp_tool(
  name = "t_test",
  fn = t.test,
  description = "Perform t-test"
)

server$mcp_tool(
  name = "cor_test", 
  fn = cor.test,
  description = "Correlation test"
)

Despliegue en Producción

server <- mcp_http(
  name = "Production Server",
  version = "1.0.0",
  host = "0.0.0.0",  # Listen on all interfaces
  port = 8080,
  log_file = "mcp-server.log",
  log_level = "info"
)

Despliegue con Docker

FROM rocker/r-ver:4.3.0
RUN install.packages(c("mcpr", "plumber", "jsonlite"))
COPY server.R /app/
WORKDIR /app
EXPOSE 8080
CMD ["Rscript", "server.R"]

Ejemplos

Ejemplos completos en inst/examples/:

  • basic-server.R - Servidor simple con herramientas básicas
  • stats-server.R - Herramientas de análisis estadístico
  • data-server.R - Manipulación de datos y visualización

Licencia

MIT + archivo LICENSE