what is R-Server MCP?
R-Server MCP is a specialized Model Context Protocol (MCP) server that enables AI models to generate data visualizations using R's ggplot2 library and execute R scripts.
how to use R-Server MCP?
To use R-Server MCP, configure it in your MCP settings file and run the server either locally or in a Docker container. You can execute R scripts and generate visualizations by sending commands to the server.
key features of R-Server MCP?
- ggplot2 Rendering: Generates visualizations from R code containing ggplot2 commands.
- R Script Execution: Executes any R script and returns the text output.
- Format Options: Supports PNG, JPEG, PDF, and SVG output formats.
- Customization: Allows control over image dimensions and resolution.
- Error Handling: Provides clear error messages for invalid R code or rendering failures.
- MCP Protocol Compliance: Fully implements the Model Context Protocol.
- Docker Integration: Ensures secure execution of R code in isolated containers.
use cases of R-Server MCP?
- Generating statistical visualizations for data analysis.
- Executing R scripts for data processing and reporting.
- Integrating with AI models for automated data visualization tasks.
FAQ from R-Server MCP?
- Can R-Server MCP execute any R script?
Yes! R-Server MCP can execute any valid R script and return the output.
- What formats can R-Server MCP output visualizations in?
R-Server MCP supports PNG, JPEG, PDF, and SVG formats for visualizations.
- Is Docker required to run R-Server MCP?
While Docker is recommended for secure execution, it is not strictly required; you can run it locally as well.
R-Server MCP
A specialized Model Context Protocol (MCP) server that enables AI models to generate data visualizations using R's ggplot2 library and execute R scripts.
Overview
This MCP server provides a streamlined interface for creating statistical visualizations and executing R scripts without requiring direct access to an R environment. It exposes two MCP tools:
render_ggplot
: Generates visualizations from R code containing ggplot2 commandsexecute_r_script
: Executes any R script and returns the text output
Features
- ggplot2 Rendering: Execute R code containing ggplot2 commands and return the resulting visualization
- R Script Execution: Execute any R script and return the text output
- Format Options: Support for PNG, JPEG, PDF, and SVG output formats
- Customization: Control image dimensions and resolution
- Error Handling: Clear error messages for invalid R code or rendering failures
- MCP Protocol Compliance: Full implementation of the Model Context Protocol
- Docker Integration: Secure execution of R code in isolated containers
Requirements
- Go 1.22 or later
- R 4.0 or later with ggplot2 package
- Docker (for containerized execution)
Building
# Build the Docker image
task docker:build
# Run the server in Docker
task docker:run
Using Docker with stdin/stdout
The server can be run in Docker while preserving stdin/stdout communication, which is essential for MCP:
# Build and run using docker-compose
./start_server.sh --docker
Or set an environment variable:
USE_DOCKER=true ./start_server.sh
This approach ensures that stdin and stdout are properly connected between the host and the container, allowing seamless MCP communication.
Usage
MCP Integration
To use this server with an MCP client, configure it in your MCP settings file:
Local Execution
{
"mcpServers": {
"r-server": {
"command": "/path/to/r-server",
"disabled": false,
"autoApprove": []
}
}
}
Docker Execution
{
"mcpServers": {
"r-server": {
"command": "/path/to/start_server.sh",
"args": ["--docker"],
"disabled": false,
"autoApprove": []
}
}
}
The MCP client will automatically communicate with the server using stdio transport, which is the recommended approach for stability and reliability. The dockerized version maintains this communication pattern while providing isolation and dependency management.
License
Creative Commons Attribution-NonCommercial 4.0 International (CC-BY-NC 4.0)
This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
See the LICENSE file for details.