R包开发MCP服务器

一个独立的MCP服务器,通过自然语言向AI助手提供高级R包开发功能,集成了usethis、devtools、renv和testthat等核心R包开发工具。

  • by B0ydT
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 B0ydT/r_packagedev_mcp

使用说明

r-packagedev-mcp

独立 模型上下文协议(MCP) 该服务器通过自然语言向AI助手展示高级R包开发功能。

概述

r-packagedev-mcp 将四个最重要的R包开发包打包成一个统一的MCP工具界面:

包装 用途 提供的工具
使用这个 自动化包设置和配置 create_package, use_r, use_test, use_readme_md, use_vignette, use_mit_license, use_gpl3_license, use_package, use_testthat, use_git, use_github, use_data, use_pipe
开发者工具 完整的软件包开发周期 load_all, document, test, check, install, build, build_readme, spell_check
名字 可复制环境 renv_init, renv_snapshot, renv_restore, renv_status, renv_install, renv_update, renv_clean
测试 单元测试 test_file, test_dir

为什么选择独立服务器而不是附加组件?

现有的R MCP服务器(例如。 rmcp)专注于 统计分析 –运行任意R代码,拟合模型,生成图表。它们不是为 软件包开发 工作流程。

构建独立服务器允许:

  • 专用工具接口 具有与包开发约定相匹配的清晰参数名称和默认值。
  • 无依赖 在可能具有不同架构、身份验证模型或更新节奏的第三方R MCP服务器上。
  • 可移植性 –服务器是一个单一的Node.js二进制文件,它代理对以下对象的调用 Rscript;它可以在安装R的任何地方工作。
  • 安全 –工具的范围是特定的、定义良好的包开发操作,而不是不受限制的R代码执行。

需求

  • Node.js ≥ 18

  • R ≥4.1,安装了以下软件包:

    install.packages(c("usethis", "devtools", "renv", "testthat"))
    

安装

来源

git clone https://github.com/B0ydT/r-packagedev-mcp.git
cd r-packagedev-mcp
npm install
npm run build

运行服务器

node dist/index.js

服务器通过以下方式进行通信 标准 (标准输入/输出),这是Claude Desktop、VS Code Copilot、Cursor和大多数MCP客户端使用的默认传输。

配置

克劳德桌面(claude_desktop_config.json)

{
  "mcpServers": {
    "r-packagedev": {
      "command": "node",
      "args": ["/path/to/r-packagedev-mcp/dist/index.js"]
    }
  }
}

VS代码/光标(.mcp.json 或设置)

{
  "servers": {
    "r-packagedev": {
      "type": "stdio",
      "command": "node",
      "args": ["/path/to/r-packagedev-mcp/dist/index.js"]
    }
  }
}

工具参考

使用这个

工具 说明
create_package 在给定路径上构建一个新的R包
use_r 创建 R/<name>.R 在现有包中
use_test 在下创建匹配的测试文件 tests/testthat/
use_readme_md 添加 README.md 到包根目录
use_vignette 在下面创建一个小插曲存根 vignettes/
use_mit_license 添加MIT LICENSE 并更新 DESCRIPTION
use_gpl3_license 添加GPL-3 LICENSE 并更新 DESCRIPTION
use_package 向添加依赖项 DESCRIPTION
use_testthat 配置testthat测试基础架构
use_git 初始化Git仓库并进行初始提交
use_github 创建GitHub远程并推送
use_data 将R对象导出为下的包数据 data/
use_pipe 添加 %>% 管道操作员到包装

开发者工具

工具 说明
load_all 模拟 library(pkg) 用于交互式测试
document 运行roxygen2并更新 NAMESPACE
test 运行测试套件(可选过滤)
check 快跑 R CMD check
install 将包安装到本地库中
build 构建一个源tarball
build_readme 渲染 README.Rmd → README.md
spell_check 拼写检查文档和插图

名字

工具 说明
renv_init 初始化renv项目库
renv_snapshot 将当前依赖关系记录到 renv.lock
renv_restore 从以下位置还原包 renv.lock
renv_status 检查库与锁文件同步状态
renv_install 将软件包安装到renv库中
renv_update 更新renv库中的包
renv_clean 删除未使用的包/临时文件

测试

工具 说明
test_file 运行单个测试文件
test_dir 运行目录中的所有测试

发展

# Type-check without emitting
npm run lint

# Build
npm run build

# Run in dev mode (ts-node, no build step)
npm run dev

建筑

src/
├── index.ts          # Entry point – starts stdio MCP server
├── server.ts         # Registers all tools with the MCP SDK
├── r-executor.ts     # Spawns Rscript subprocesses & formats results
└── tools/
    ├── usethis.ts    # usethis tool schemas + handlers
    ├── devtools.ts   # devtools tool schemas + handlers
    ├── renv.ts       # renv tool schemas + handlers
    └── testthat.ts   # testthat tool schemas + handlers

每个工具模块导出:

  • A. 模式图 (z.ZodObject 每个工具)定义输入验证。
  • A. 处理程序图 将经过验证的输入转换为 Rscript -e 调用并返回格式化的输出作为MCP文本内容。

许可证

CC 4.0