返回市场
MCP服务器SSH Rails运行器

MCP服务器SSH Rails运行器

作者:tadasant13 星标更新:2025-04-18

项目介绍

MCP服务器:SSH Rails运行器

一个通过SSH实现Rails控制台命令安全远程执行的MCP服务器。此服务器提供了用于已部署Rails环境中的只读操作以及精心管理的变更操作的工具。

该服务与Cursor配合使用效果极佳。您可以使用Cursor Composer将您的Rails模型文件作为上下文拉入,并使用execute_read_onlydry_run_mutateexecute_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": "显示在工具描述中以帮助LLM描述我们正在处理哪种Rails项目的名称。",
        "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的文件中,标记为只读或变更类型,并打开文件供审查。
  • 返回值:创建的代码片段的file://URI。

mcp_ssh_rails_runner_execute_code_snippet_read_only

  • 参数uri(字符串,来自prepareCodeSnippetfile://URI)。
  • 功能:从URI读取代码片段,验证其被标记为readOnly,对代码进行安全性检查并执行它。
  • 返回值:Rails命令的输出。

mcp_ssh_rails_runner_execute_code_snippet_mutate

  • 参数uri(字符串,来自prepareCodeSnippetfile://URI)。
  • 功能危险区域! 读取代码片段,验证其被标记为mutate,并直接执行它。此工具内没有模拟执行或进一步的安全性检查。
  • 返回值:Rails命令的输出。
  • 使用仅在用户已经审查了通过prepareCodeSnippet打开的文件准备的代码,并明确确认他们想要执行变更时调用此函数。

安全注意事项

  • 仅使用您自己的本地机器上信任的SSH端点,该机器暂时具有访问远程环境的权限。
  • 至关重要的是,在使用executeCodeSnippetMutate执行任何变更之前,始终审查由prepareCodeSnippet保存的代码。 确认变更的责任在于用户和调用AI。

许可证

MIT