MCPR

Exponha funções R através do Model Context Protocol (MCP) para integração perfeita com assistentes de IA.

Documentação

mcpr

Lifecycle: experimental CRAN status

O mcpr expõe funções R através do Model Context Protocol (MCP), permitindo integração perfeita com assistentes de IA como o Claude Desktop.

Instalação

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

Início 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()

Usando Decoradores

Crie um arquivo com funções 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)
  )
}

Carregue e execute:

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

Configurar Claude Desktop

Adicione à configuração do Claude Desktop:

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

Uso Avançado

Registrar Funções 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"
)

Implantação em Produção

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"
)

Implantação com 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"]

Exemplos

Exemplos completos em inst/examples/:

  • basic-server.R - Servidor simples com ferramentas básicas
  • stats-server.R - Ferramentas de análise estatística
  • data-server.R - Manipulação e visualização de dados

Licença

MIT + file LICENSE