Rails控制台MCP
一个MCP服务器,允许Claude Code在Rails控制台中执行Ruby。
支持两者 本地Docker 和 远程Kubernetes 环境。
快速开始
git clone
cd rails-console-mcp
./setup.sh安装脚本将构建项目并打印配置说明。
配置
本地开发(Docker)
对于在Docker Compose中运行的Rails:
claude mcp add rails-console -s user \
-e RAILS_MCP_CONTAINER=your-container-name \
-- node /path/to/rails-console-mcp/dist/index.js使用查找您的容器名称 docker ps --format '{{.Names}}'.
Kubernetes
对于在Kubernetes中运行的Rails,运行 ./setup.sh --staging 详细说明。
用法
配置后,Claude Code可以使用 rails_console_exec 工具:
# Count users
User.count
# Find a record
User.find_by(email: "test@example.com")
# Run queries
User.where(active: true).limit(10).pluck(:email)
# Check environment
Rails.env
# Reset session state
reload!环境变量
共同
| 变量 | 默认值 | 描述 |
|---|---|---|
RAILS_MCP_MODE | docker | docker 或 kubectl |
RAILS_MCP_COMMAND_TIMEOUT | 60000 | 每个命令超时(ms) |
RAILS_MCP_INACTIVITY_TIMEOUT | 7200000 | 会话超时(2小时) |
RAILS_MCP_MAX_OUTPUT | 1048576 | 最大输出大小(1MB) |
Docker模式
| 变量 | 默认值 | 描述 |
|---|---|---|
RAILS_MCP_CONTAINER | web | Docker容器名称 |
Kubectl模式
| 变量 | 默认值 | 描述 |
|---|---|---|
RAILS_MCP_KUBE_CONTEXT | (必填) | Kubectl上下文名称 |
RAILS_MCP_KUBE_NAMESPACE | default Kubernetes 命名空间 | |
RAILS_MCP_KUBE_SELECTOR | (必填) | Pod选择器(例如。, app=my-rails-console) |
RAILS_MCP_KUBE_CONTAINER | web | pod中的容器名称 |
运作原理
- 在第一个命令下,生成一个持久的Rails控制台会话
- Docker模式:
docker exec -i bundle exec rails console - Kubectl模式:通过选择器发现pod,然后 `kubectl exec -i
...`
- 维护持久会话-保留变量和状态
- 通过IRB/Pry提示符检测命令完成(处理ANSI颜色)
- 使用互斥体序列化并发命令
- 如果会话崩溃,自动重新启动一次
- 2小时不活动后关闭
安全
此工具提供完整的Rails控制台访问权限。
仅在具有适当访问控制的开发/暂存环境中使用。
- 可以读/写数据库
- 可以访问环境变量
- 可以执行任意Ruby代码
故障排除
Docker未运行
确保Docker守护进程正在运行并且容器存在:
docker ps | grep web超时错误
增加 RAILS_MCP_COMMAND_TIMEOUT 对于慢速查询:
claude mcp add ... -e RAILS_MCP_COMMAND_TIMEOUT=120000 ...会议议题
跑 reload! 重置会话状态而不重新启动。
快速检测问题
如果命令超时,但控制台正在工作,则可能无法检测到提示。服务器处理IRB、Pry和自定义颜色提示。检查调试日志中的提示匹配问题。
发展
npm install # Install dependencies
npm run dev # Run in dev mode
npm run build # Build
npm test # Run tests许可证
麻省理工学院
