Command Palette

Search for a command to run...

UnylyUnyly
Browse all

BtwExtra

FreeNot checked

Extra MCP tools and helpers built on top of the {btw} package for connecting R sessions with LLMs

GitHubEmbed

About

Extra MCP tools and helpers built on top of the {btw} package for connecting R sessions with LLMs

README

Extra MCP tools and helpers built on top of the {btw} package for connecting R sessions with LLMs.

Installation (development)

From GitHub:

remotes::install_github("brianmsm/btwExtra")

Current tool

  • btwExtra_tool_env_run_r_code: escape hatch to run arbitrary R code in the connected session. Emulates the R console (prints visible values, skips assignments) and truncates output to 20 lines by default; set max_output_lines = -1 to disable truncation. Prefer the more specific btw_tool_*/btwExtra_tool_* tools when available.

Example usage

Register btw + btwExtra tools with an ellmer chat:

library(ellmer)
ch <- ellmer::chat_anthropic()
ch$register_tools(c(btw::btw_tools(), btwExtra::btwExtra_tools()))

# Ask the model to use the run-R-code tool; output will be truncated by default.
ch$respond("Run 1 + 1 in R and show the result.")

Quick local check of the user-facing tool (outside of chat):

res <- btwExtra::btwExtra_tool_env_run_r_code("library(dplyr); mtcars %>% filter(cyl == 6) %>% summarise(value = mean(hp))")
res
## <btwExtra::BtwExtraToolResult>
##  @ value  : chr "     value\n1 122.2857"
##  @ error  : NULL
##  @ extra  :List of 1
##  .. $ data:List of 5
##  ..  ..$ status          : chr "ok"
##  ..  ..$ console         : chr [1:2] "     value" "1 122.2857"
##  ..  ..$ result_class    : chr NA
##  ..  ..$ n_output_lines  : int 2
##  ..  ..$ max_output_lines: int 20
##  @ request: NULL

Truncation notice: by default, the “long output truncated” guidance is shown once per session. To always show it:

options(btwExtra.show_truncation_notice_once = FALSE)

MCP configuration

Use the combined btw + btwExtra tools:

[mcp_servers.r-btw]
command = "Rscript"
args = [
  "-e",
  "btwExtra::btwExtra_mcp_server()"  # btw::btw_tools() + btwExtra::btwExtra_tools()
]

If needed, you can pass a custom set of tools, e.g. only docs from btw plus everything from btwExtra:

args = [
  "-e",
  "btwExtra::btwExtra_mcp_server(tools = c(btw::btw_tools('docs'), btwExtra::btwExtra_tools()))"
]

Alternatively, you can call btw::btw_mcp_server() directly and pass the combined tools:

args = [
  "-e",
  "btw::btw_mcp_server(tools = c(btw::btw_tools('docs'), btwExtra::btwExtra_tools()))"
]

MCP config for Claude Code or Cursor

Claude CLI:

claude mcp add -s "user" r-btw -- Rscript -e "btwExtra::btwExtra_mcp_server()"

Cursor/VS Code style JSON:

{
  "r-btw": {
    "command": "Rscript",
    "args": ["-e", "btwExtra::btwExtra_mcp_server()"]
  }
}

Very important: register the R session

Any R session you want to use with MCP must call mcptools::mcp_session() so the MCP server can discover and attach to it. The easiest way is to add this call to your .Rprofile (user- or project-level), so it runs automatically when the session starts.

Project-level .Rprofile (placed in the project root), or user-level .Rprofile:

  • Windows: C:/Users/<USER>/Documents/.Rprofile
  • macOS/Linux: ~/.Rprofile

Example contents:

if (interactive() && requireNamespace("mcptools", quietly = TRUE)) {
  mcptools::mcp_session()
}

This will automatically register any interactive R session with mcptools, making it available to MCP clients (e.g. Codex, ChatGPT, etc.).

from github.com/brianmsm/btwExtra

Installing BtwExtra

This server has no published package — it is built from source. Open the repository and follow its README.

▸ github.com/brianmsm/btwExtra

FAQ

Is BtwExtra MCP free?

Yes, BtwExtra MCP is free — one-click install via Unyly at no cost.

Does BtwExtra need an API key?

No, BtwExtra runs without API keys or environment variables.

Is BtwExtra hosted or self-hosted?

Self-hosted: the server runs locally on your machine via the install command above.

How do I install BtwExtra in Claude Desktop, Claude Code or Cursor?

Open BtwExtra on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.

Related MCPs

Compare BtwExtra with

Not sure what to pick?

Find your stack in 60 seconds

Author?

Embed badge for your README

Browse similar

All development MCPs