# io.github.B0ydT/r-packagedev-mcp (npm · r-packagedev-mcp)

MCP server for R package development using usethis, devtools, renv, and testthat

- Trust score: 61/100 (medium)
- Change this week: +21
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- npm · `r-packagedev-mcp`: 61/100 (this document), [markdown](https://verifymcp.io/servers/b0ydt-r-packagedev-mcp/r-packagedev-mcp.md), [page](https://verifymcp.io/servers/b0ydt-r-packagedev-mcp/r-packagedev-mcp)

## Channel facts

- Registry: `npm`
- Package: `r-packagedev-mcp`
- Version: `1.0.1`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 86/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (94 of 98), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (94 of 98), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 6/100
  - Repository check failed: no source repository is declared.
  - Provenance check failed: no build-provenance attestation is published.
  - License check failed: the license (CC-BY-4.0) isn't a recognized OSI-approved license.
  - Actively maintained (last published 133 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 77/100
  - AI-judged instruction clarity (excellent).
  - Tool/resource definitions use about 2475 tokens (~82/item across 30 items; 30 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add b0ydt-r-packagedev-mcp -- npx -y r-packagedev-mcp
```

### Codex

```bash
codex mcp add b0ydt-r-packagedev-mcp -- npx -y r-packagedev-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "b0ydt-r-packagedev-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "r-packagedev-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add b0ydt-r-packagedev-mcp --command npx --arg -y --arg r-packagedev-mcp
```

### Hermes

```yaml
mcp_servers:
  b0ydt-r-packagedev-mcp:
    command: "npx"
    args: ["-y", "r-packagedev-mcp"]
```

### Other

```json
{
  "mcpServers": {
    "b0ydt-r-packagedev-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "r-packagedev-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 61, +40)

- [security regression] Provenance: unverified → fail
- [security improvement] Install scripts: unverified → pass
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Malware scan: unverified → pass
- [functional regression] Security disclosure: unverified → fail
- [functional regression] License: unverified → fail
- [functional improvement] Schema quality: unverified → excellent
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] Stability: unverified → 0.23
- [functional] Licence: CC-BY-4.0

### 2026-08-01 (score 21, +5)

- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [functional improvement] MCP protocol: unverified → pass

### 2026-07-31 (score 16, −24)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-27 (score 40)

First indexed and scored.

## MCP tools (30)

### `create_package` (~118 tokens)

Create a new R package skeleton at the specified path using usethis::create_package(). Sets up DESCRIPTION, NAMESPACE, and the R/ directory.

Input parameters:

- `fields` (object): Named list of extra DESCRIPTION fields, e.g. {Author: 'Jane Doe', Version: '0.1.0'}.
- `open` (boolean): Whether to open the new package in RStudio (default false).
- `path` (string, required): Absolute path where the new package directory should be created (e.g. '/home/user/mypackage').

### `use_r` (~76 tokens)

Add a new R source file under R/ in an existing package using usethis::use_r(). Creates 'R/<name>.R' with minimal boilerplate.

Input parameters:

- `name` (string, required): Name of the R script (without .R extension).
- `project_path` (string, required): Absolute path to the root of the R package.

### `use_test` (~78 tokens)

Create a matching test file under tests/testthat/ for a given function or module using usethis::use_test(). Automatically sets up testthat if not already configured.

Input parameters:

- `name` (string, required): Name of the function or module to create a test file for.
- `project_path` (string, required): Absolute path to the root of the R package.

### `use_readme_md` (~45 tokens)

Add a README.md to the package root using usethis::use_readme_md().

Input parameters:

- `project_path` (string, required): Absolute path to the root of the R package.

### `use_vignette` (~82 tokens)

Create a new vignette stub (Rmd file) under vignettes/ using usethis::use_vignette().

Input parameters:

- `name` (string, required): Short name/identifier for the vignette.
- `project_path` (string, required): Absolute path to the root of the R package.
- `title` (string): Human-readable title of the vignette.

### `use_mit_license` (~67 tokens)

Add an MIT LICENSE file and update DESCRIPTION License field using usethis::use_mit_license().

Input parameters:

- `copyright_holder` (string): Name to include in the copyright notice (defaults to package author).
- `project_path` (string, required): Absolute path to the root of the R package.

### `use_gpl3_license` (~51 tokens)

Add a GPL-3 LICENSE file and update DESCRIPTION License field using usethis::use_gpl3_license().

Input parameters:

- `project_path` (string, required): Absolute path to the root of the R package.

### `use_package` (~86 tokens)

Add a package dependency to DESCRIPTION using usethis::use_package(). Supports Imports, Suggests, Depends, LinkingTo, and Enhances.

Input parameters:

- `package` (string, required): Name of the R package to add as a dependency.
- `project_path` (string, required): Absolute path to the root of the R package.
- `type` (string): Dependency type in DESCRIPTION (default 'Imports').

### `use_testthat` (~81 tokens)

Configure the testthat testing infrastructure for a package using usethis::use_testthat(). Creates tests/testthat/ and adds testthat to Suggests.

Input parameters:

- `edition` (integer): testthat edition to use (e.g. 3). Defaults to latest stable edition.
- `project_path` (string, required): Absolute path to the root of the R package.

### `use_git` (~63 tokens)

Initialise a Git repository in the package and make an initial commit using usethis::use_git().

Input parameters:

- `message` (string): Message for the initial commit (default: 'Initial commit').
- `project_path` (string, required): Absolute path to the root of the R package.

### `use_github` (~96 tokens)

Create a GitHub remote for the package and push using usethis::use_github(). Requires a GitHub PAT configured via GITHUB_PAT or gh_token().

Input parameters:

- `organisation` (string): GitHub organisation to create the repo under (optional, defaults to personal account).
- `private` (boolean): Create as a private repository (default false).
- `project_path` (string, required): Absolute path to the root of the R package.

### `use_data` (~96 tokens)

Export one or more R objects as package data files under data/ using usethis::use_data(). The objects must already be loaded in the R environment.

Input parameters:

- `object_names` (array, required): Character vector of R object names already loaded in the workspace to export as package data.
- `overwrite` (boolean): Overwrite existing data files (default false).
- `project_path` (string, required): Absolute path to the root of the R package.

### `use_pipe` (~71 tokens)

Add the magrittr pipe (%>%) to the package via usethis::use_pipe(). Creates utils-pipe.R and updates NAMESPACE.

Input parameters:

- `export` (boolean): Whether to export the pipe operator (default true).
- `project_path` (string, required): Absolute path to the root of the R package.

### `load_all` (~91 tokens)

Simulate installing and attaching the package using devtools::load_all(). Makes all functions available in the current R session for interactive testing.

Input parameters:

- `project_path` (string, required): Absolute path to the root of the R package.
- `recompile` (boolean): Whether to recompile C/C++/Fortran code (default false).
- `reset` (boolean): Whether to reset the namespace before loading (default false).

### `document` (~82 tokens)

Generate roxygen2 documentation and update NAMESPACE using devtools::document(). Reads @-tags from R source and creates man/*.Rd files.

Input parameters:

- `project_path` (string, required): Absolute path to the root of the R package.
- `roclets` (array): Character vector of roclet names to use (e.g. ['rd', 'namespace']). Defaults to all.

### `test` (~99 tokens)

Run the package's test suite (or a filtered subset) using devtools::test(). Reports test results in the chosen format.

Input parameters:

- `filter` (string): Regex pattern to restrict which test files are run (e.g. 'my_func').
- `project_path` (string, required): Absolute path to the root of the R package.
- `reporter` (string): testthat reporter to use (e.g. 'progress', 'summary'). Defaults to 'progress'.

### `check` (~122 tokens)

Run R CMD check on the package using devtools::check(). Identifies errors, warnings, and notes that would prevent CRAN submission.

Input parameters:

- `cran` (boolean): Whether to use CRAN-specific settings (default false).
- `document` (boolean): Whether to run devtools::document() before checking (default true).
- `error_on` (string): Minimum check severity that causes an error: 'never', 'note', 'warning', or 'error' (default 'warning').
- `project_path` (string, required): Absolute path to the root of the R package.

### `install` (~75 tokens)

Install the package into the local R library using devtools::install().

Input parameters:

- `dependencies` (boolean): Whether to install package dependencies (default TRUE for Imports/Depends/Suggests).
- `project_path` (string, required): Absolute path to the root of the R package.
- `upgrade` (string): Whether to upgrade dependencies (default 'default').

### `build` (~102 tokens)

Build a source (or binary) package tarball using devtools::build().

Input parameters:

- `binary` (boolean): Whether to build a binary package instead of source (default false).
- `path` (string): Destination directory for the built tarball/zip (defaults to the parent of the package directory).
- `project_path` (string, required): Absolute path to the root of the R package.
- `vignettes` (boolean): Whether to build vignettes (default true).

### `build_readme` (~46 tokens)

Render README.Rmd to README.md and update GitHub preview using devtools::build_readme().

Input parameters:

- `project_path` (string, required): Absolute path to the root of the R package.

### `spell_check` (~60 tokens)

Spell-check the package documentation and vignettes using devtools::spell_check().

Input parameters:

- `project_path` (string, required): Absolute path to the root of the R package.
- `vignettes` (boolean): Whether to spell-check vignettes (default true).

### `renv_init` (~102 tokens)

Initialise an renv project-local library for the project using renv::init(). Creates renv/ and renv.lock, and updates .Rprofile.

Input parameters:

- `bare` (boolean): If TRUE, initialise without installing any packages into the new library (default false).
- `project_path` (string, required): Absolute path to the project root where renv should be initialised.
- `restart` (boolean): Whether to restart the R session after initialising (default false).

### `renv_snapshot` (~81 tokens)

Record the current package dependencies into renv.lock using renv::snapshot().

Input parameters:

- `project_path` (string, required): Absolute path to the renv-managed project root.
- `type` (string): Snapshot type: 'implicit' (DESCRIPTION), 'explicit' (renv.lock packages), 'all' (everything installed), or 'custom' (default 'implicit').

### `renv_restore` (~59 tokens)

Restore packages from renv.lock to recreate the recorded environment using renv::restore().

Input parameters:

- `project_path` (string, required): Absolute path to the renv-managed project root.
- `rebuild` (boolean): Whether to rebuild packages from source (default false).

### `renv_status` (~44 tokens)

Report whether the project library is synchronised with renv.lock using renv::status().

Input parameters:

- `project_path` (string, required): Absolute path to the renv-managed project root.

### `renv_install` (~112 tokens)

Install packages into the renv project library using renv::install(). Supports CRAN packages, GitHub (user/repo), or version-pinned installs.

Input parameters:

- `packages` (array, required): Package names (and optional version specifiers) to install, e.g. ['ggplot2', 'dplyr@1.0.0'].
- `project_path` (string, required): Absolute path to the renv-managed project root.
- `rebuild` (boolean): Whether to rebuild packages from source (default false).

### `renv_update` (~72 tokens)

Update packages in the renv project library using renv::update(). If no package names are given, all outdated packages are updated.

Input parameters:

- `packages` (array): Package names to update. If omitted, all packages are updated.
- `project_path` (string, required): Absolute path to the renv-managed project root.

### `renv_clean` (~61 tokens)

Remove unused packages or temporary files from the renv library using renv::clean().

Input parameters:

- `actions` (array): Specific cleaning actions to perform (default: all applicable actions).
- `project_path` (string, required): Absolute path to the renv-managed project root.

### `test_file` (~131 tokens)

Run a single testthat test file using testthat::test_file(). Useful for rapid iteration on a specific file.

Input parameters:

- `file` (string, required): Absolute path to the test file to run (e.g. '/path/to/tests/testthat/test-utils.R').
- `project_path` (string): Optional absolute path to the package root (used to set the working directory).
- `reporter` (string): testthat reporter to use (e.g. 'progress', 'summary', 'tap'). Defaults to 'progress'.
- `stop_on_failure` (boolean): Whether to stop immediately on the first test failure (default false).

### `test_dir` (~126 tokens)

Run all test files in a directory (optionally filtered) using testthat::test_dir(). Returns a summary of pass/fail/skip counts.

Input parameters:

- `filter` (string): Regex pattern to restrict which test files are run (e.g. 'my_func').
- `path` (string, required): Absolute path to the directory containing test files.
- `reporter` (string): testthat reporter to use (e.g. 'progress', 'summary', 'tap'). Defaults to 'progress'.
- `stop_on_failure` (boolean): Whether to stop immediately on the first test failure (default false).

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/b0ydt-r-packagedev-mcp/r-packagedev-mcp#diagnostics

## Score history

- 2026-08-03: 61
- 2026-08-02: 61
- 2026-08-01: 21
- 2026-07-31: 16
- 2026-07-30: 40
- 2026-07-28: 40
- 2026-07-27: 40

## Links

- npm package: https://www.npmjs.com/package/r-packagedev-mcp
- Socket report: https://socket.dev/npm/package/r-packagedev-mcp
- Changelog RSS feed: https://verifymcp.io/servers/b0ydt-r-packagedev-mcp/r-packagedev-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/b0ydt-r-packagedev-mcp/r-packagedev-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/b0ydt-r-packagedev-mcp/r-packagedev-mcp
