SSH Rails远程执行服务

一个通过SSH安全远程执行Rails控制台命令的服务器,提供只读操作和受控数据库变更功能,适用于Rails环境的数据管理和分析。

  • by tadasant
  • TypeScript
  • 本地部署
  • 14 星标
  • 更新于
在 GitHub 查看 tadasant/mcp-server-ssh-rails-runner

使用说明

MCP服务器:SSH Rails运行程序

一个MCP服务器,可以通过SSH安全远程执行Rails控制台命令。此服务器为部署的Rails环境中的只读操作和精心管理的突变提供了工具。

这与Cursor配合得很好。您可以使用Cursor Composer将Rails模型文件作为上下文拉入,然后使用 execute_read_only, dry_run_mutate,以及 execute_mutate 对数据库进行更改的工具。无需费力地浏览复杂的管理UI来完成数据整理和分析。

示例

特性

  • 通过SSH执行远程Rails控制台
  • 安全的只读操作
  • 突变的模拟运行能力
  • 批准突变的执行
  • 代码片段的资源管理

安装

npm install
npm run build

配置

设置以下环境变量:

SSH_HOST=your.remote.host
SSH_USER=your_ssh_user
SSH_PRIVATE_KEY_PATH=your_SSH_PRIVATE_KEY_PATH
RAILS_WORKING_DIR=/path/to/rails/app

使用Claude Desktop

添加到您的Claude Desktop配置中:

{
  "mcpServers": {
    "ssh-rails-runner": {
      "command": "npx",
      "args": ["mcp-server-ssh-rails-runner"],
      "env": {
        "SSH_HOST": "your.remote.host",
        "SSH_USER": "your_ssh_user",
        "SSH_PRIVATE_KEY_PATH": "your_SSH_PRIVATE_KEY_PATH",
        "RAILS_WORKING_DIR": "/path/to/rails/app/root",
        "PROJECT_NAME_AS_CONTEXT": "Name that shows up in tool descriptions to help the LLM describe what kind of Rails project we're working with.",
        "CODE_SNIPPET_FILE_DIRECTORY": "/path/to/store/code/snippets/locally"
      }
    }
  }
}

如果 CODE_SNIPPET_FILE_DIRECTORY 片段将存储在临时目录中(例如。, /tmp/mcp-ssh-rails-runner-code-snippets). PROJECT_NAME_AS_CONTEXT 是可选的,有助于在工具描述中识别项目上下文。

可用工具

服务器现在使用准备->执行工作流:

mcp_ssh_rails_runner_prepare_code_snippet

  • 参数: name (字符串,表示文件名), type (枚举:“readOnly”|“mutate”), code (字符串、Ruby代码), description (字符串,可选)。
  • 函数:将提供的Ruby代码保存到名为的本地文件 code_snippet_<name>.json,将其标记为只读或可变,并打开文件进行查看。
  • 退货:The file:// 创建的代码段的URI。

mcp_ssh_rails_runner_execute_code_snippet_read_only

  • 参数: uri (字符串, file:// URI来自 prepareCodeSnippet).
  • 函数:从URI读取代码片段,验证其是否标记为 readOnly,对代码执行安全检查,并执行它。
  • 退货:Rails命令的输出。

mcp_ssh_rails_runner_execute_code_snippet_mutate

  • 参数: uri (字符串, file:// URI来自 prepareCodeSnippet).
  • 函数: 危险区! 读取代码片段,验证其是否标记为 mutate,以及 直接执行它。此工具内没有试运行或进一步的安全检查。
  • 退货:Rails命令的输出。
  • 用法: 只有在用户查看了准备好的代码(通过打开的文件 prepareCodeSnippet)并明确确认他们想执行突变。

安全考虑

  • 仅与来自您自己的本地计算机的受信任SSH端点一起使用,该本地计算机(临时)提供了对远程环境的访问权限。
  • 至关重要的是,始终查看由保存的代码 prepareCodeSnippet 在执行任何突变之前 executeCodeSnippetMutate. 确认突变的责任在于用户和调用AI。

许可证

麻省理工学院