A FastMCP server for R data visualization and script execution using ggplot2
R-Server MCP has significant definition quality gaps. Tool names lack clear action verbs (mount_directory, render_ggplot are acceptable but execute_r_script is vague). Descriptions are present but generic (10-50 chars for most). Parameter descriptions exist but lack constraints, ranges, and format guidance. No output schemas documented. Error handling is minimal, tools return dicts with 'success' flags but no recovery guidance. Security concerns: execute_r_script accepts arbitrary R code with no validation or sandboxing hints. The server exposes file system operations (mount_directory, upload_file) without clear permission boundaries or audit trails.
Execute R scripts and return text output
Mount a directory for R workspace operations.
Generate visualizations using R's ggplot2 library
Upload a file to the R working directory.
execute_r_script accepts arbitrary R code with no validation, sandboxing, or security constraints. No description of what happens when code fails, times out, or attempts destructive operations.
No output schemas documented for any tool. LLMs cannot predict response structure, forcing them to parse unstructured dicts. Breaks downstream tool chaining.
Parameter descriptions lack constraints. 'r_code' has no mention of timeout, max length, or forbidden operations. 'width' and 'height' have no min/max bounds. 'output_format' enum is present but other params are unconstrained.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 43 | 2026-07-28+ | v2 |
File system operations (mount_directory, upload_file) lack permission checks, audit logging, and path traversal validation. No scope declarations (read:filesystem, write:filesystem).
Error responses are generic dicts with 'success' and 'message' fields. No recovery guidance, error classification (retryable vs fatal), or actionable next steps for LLMs.