MCP server providing access to an active RStudio session for executing R code, inspecting environments, editing documents, and capturing plots via SSE transport
The server defines 11 tools with clear verb-based naming (eval_r, list_*, get_*, create_*, insert_*, replace_*, source_*) following the pattern:tool standard. However, definition quality is inconsistent. Tool descriptions are present and reasonably detailed (most 50-150 chars), meeting the 10-1024 char baseline. Input schemas are explicitly defined via mk_tool() with properties and required fields. However, critical gaps emerge: (1) No documented output schemas for any tool, LLMs cannot predict what fields to expect, violating pattern:tool documentation requirement. (2) Most parameter descriptions are generic or missing context about expected formats, ranges, and constraints. (3) No error handling guidance in any tool description, agents don't know what to do on failure. (4) Some tools (insert_text, replace_text_range, source_active_document) have high write risk but descriptions don't acknowledge irreversibility or suggest confirmation patterns. (5) The eval_r tool with allow_reassign flag lacks detailed guidance about when overwriting is safe, a design flaw per pattern:default-values and pattern:param-relationships. Overall, the server demonstrates competent naming and schema structure but neglects output documentation, error guidance, and LLM-optimized parameter descriptions that distinguish A-grade tools from C-grade ones.
Create a new document and make it active
Execute R code in the RStudio session. Note that this is intended for short commands - if you're generating long scripts, instead create a new document, and then source it, so the user can easily inspect it.
Get the content of the currently active document in RStudio
Get the URL of the last plotted image in RStudio Viewer
Get object details and preview from the R environment
Insert text at the current cursor position in the active document
List all available environments in the R session
No output schemas documented for any tool. LLMs cannot plan downstream operations or extract necessary fields without knowing what the tool returns.
No error handling guidance in any tool description. Agents don't know what to do on failure (retry? ask user? fatal?), violating pattern:recovery-guide.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | B | 72 | 2026-07-28+ | v2 |
List object names in the R environment
Open a file document in RStudio and make it active
Replace text within a specified range in the active document
Source the active document or a range within it
High-risk write operations (eval_r, create_document, insert_text, replace_text_range, source_active_document) lack confirmation patterns or warnings about irreversibility. Pattern:confirmation-request not applied.
eval_r's allow_reassign parameter lacks clear constraint documentation. Parameter description does not explain when overwriting is safe, violating pattern:param-relationships. The interaction between allow_reassign=false and existing objects needs explicit guidance.
Parameter descriptions lack concrete format, range, and constraint info. Example: 'path' in open_document_file lacks guidance on format (absolute/relative?), 'envir' lacks valid value constraints, 'language' in create_document omits supported values beyond default 'r'.
No pagination or limits on list_objects, despite potential for thousands of objects in an environment. Tool lacks limit, offset, or next_cursor parameters, violating pattern:paginated-result.
Tool descriptions are brief and lack discovery context. Example: list_environments description doesn't explain when to call it vs list_objects; get_object doesn't clarify preview size limits. Discovery guidance absent per pattern:tool-description.
insert_text and replace_text_range descriptions lack details about multi-line text handling, cursor position behavior, and whether changes are immediately visible. Missing composition guidance for tool chaining.