使用说明
Rails控制台MCP
一个MCP服务器,允许Claude Code在Rails控制台中执行Ruby。
支持两者 本地Docker 和 远程Kubernetes 环境。
快速开始
git clone <repo>
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 <container> bundle exec rails console - Kubectl模式:通过选择器发现pod,然后
kubectl exec -i <pod> ... - 维护持久会话-保留变量和状态
- 通过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
许可证
麻省理工学院
