mcpField
R
Rails AI Context — Zero-config MCP server for Rails apps

Rails AI Context — Zero-config MCP server for Rails apps

本地服务
github.com/crisnahine开发工具1672 天前更新

关于 Rails AI Context — Zero-config MCP server for Rails apps

rails-ai-context 是一个 Ruby gem,让 AI 编码 Agent 只读访问 Rails 应用的架构、代码、配置和约定。它通过 MCP 或命令行提供相同的内省能力;应用无法启动时也可进行静态分析。

主要功能

  1. 01只读检查 Rails 应用
  2. 02通过 MCP、HTTP 和命令行访问
  3. 03提供架构、模型、路由和代码工具
  4. 04应用无法启动时进行静态分析
  5. 05为模型分析结果标注置信度
  6. 06生成 AI 工具上下文文件

适用场景

  1. 01编写迁移前核对实际架构
  2. 02追踪方法定义、调用方和测试
  3. 03检查控制器继承的过滤器
  4. 04了解无法启动的应用

MCP 相关

它通过 stdio 或 HTTP 的 MCP 接口提供只读 Rails 内省工具、模板和资源。命令行也可在不运行 MCP 服务的情况下使用相同工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
mcpbrails-ai-context-mcp.mcpb

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

rails-ai-context

让你的 AI 编码助手读取真实的 Rails 应用,而不是凭空猜测。

Gem Version Downloads CI MCP Registry Ruby Rails License

Claude Code Cursor GitHub Copilot OpenCode Codex CLI Any terminal

一键粘贴安装 · 为什么 · 你将获得什么 · 工具 · 命令 · 文档

安装演示

rails-ai-context 让你的 Rails 应用成为 AI 编码助手的事实来源。助手不再根据训练数据猜测你的架构、关联、路由和约定,而是直接询问你的应用:通过 MCP 或命令行使用 35 个只读工具,并提供为 Claude Code、Cursor、GitHub Copilot、OpenCode 和 Codex CLI 编写的上下文文件。

一键粘贴安装

在 Rails 应用根目录打开你的 AI 工具,然后粘贴以下内容。它会安装 gem、配置当前使用的 AI 工具、检查结果,并告诉你还剩下哪一步。

Install the rails-ai-context gem in this Rails app so you can read its schema, models, routes and code through its tools instead of guessing.

1. Run `ruby -v` and `bundle exec rails -v`. rails-ai-context needs Ruby 3.1+ and Rails 7.0+. If either is older, stop and tell me.
2. Pick TOOL, the key for the AI tool you are: claude (Claude Code), cursor (Cursor), copilot (GitHub Copilot in VS Code), opencode (OpenCode), codex (Codex CLI). If you are another AI tool, stop and tell me to use the "Another MCP client" prompt instead.
3. Run `bundle add rails-ai-context --group development --version '>= 5.35.0'`. If the Gemfile already lists it, run `bundle update rails-ai-context --conservative` instead. Then run `bundle exec rails-ai-context version`: it must print 5.35.0 or newer, the first version with the flags used below. If it is older, the Gemfile pins it: change its rails-ai-context line to `gem "rails-ai-context", ">= 5.35.0", group: :development` and run `bundle update rails-ai-context --conservative`. If Bundler refuses (a frozen or deployment bundle), run `gem install rails-ai-context -v '>= 5.35.0'` instead and use `rails-ai-context init --tools TOOL --defaults` in step 4.
4. Run `bundle exec rails generate rails_ai_context:install --tools TOOL --defaults`. If it fails because the app can't boot, run `bundle exec rails-ai-context init --tools TOOL --defaults` instead; that one reads the source files when the app won't start.
5. Run `bundle exec rails-ai-context tool onboard` (or `rails-ai-context tool onboard` if you used gem install) and check it describes this app.
6. Tell me which files changed, then the "Next step" lines the install printed for TOOL, word for word. I have to do that step before your rails-ai-context MCP tools appear.
另有想法?这里有相应的提示词
不修改 Gemfilegem 安装在你的 Ruby 环境中,应用的 bundle 保持原样
仅 CLI不运行 MCP 服务。助手将工具作为 shell 命令运行
仅 MCP只运行服务,不做其他更改。你的 CLAUDE.md 和 AGENTS.md 保持原样
整个团队配置全部五种 AI 工具,让每个打开仓库的人都能使用
应用文件夹一个编辑器窗口、多个应用,每个应用运行一个 MCP 服务
不提交任何内容在你的机器上运行,git status 保持干净
先看看查看助手将获得什么。不写入任何内容
通过 HTTP 使用 MCP挂载在运行中的应用内,供通过 URL 连接的客户端使用
在 Docker 中运行 Ruby服务在容器中运行,AI 工具在你的机器上运行
其他 MCP 客户端Claude Desktop、Windsurf、Zed、JetBrains:从任意文件夹启动的配置项

已经安装?这里有用于更改设置、切换安装类型、升级、修复问题、卸载和开始使用的提示词。每条提示词都会通过标志指定每项安装选项,因此不会在 AI 工具的终端中卡在提问环节。

想自己输入命令?

在 Gemfile 中:

bundle add rails-ai-context --group development
bin/rails generate rails_ai_context:install            # asks which AI tools and what to write
bin/rails generate rails_ai_context:install --tools claude --defaults   # asks nothing

独立安装,不修改 Gemfile:

gem install rails-ai-context
rails-ai-context init                                  # or: rails-ai-context init --tools claude --defaults

作为 Claude Code 插件安装:它会添加 MCP 服务,并在每个会话中提供下面六条规则,且不会写入上下文文件或 MCP 配置。它会运行已安装的 gem,因此请先运行 gem install rails-ai-context 安装(或者仅运行 bundle add,前提是 bundle 安装在你的 ruby 可查找的位置)。在应用文件夹中运行,并提交它生成的 .claude/settings.json;安装生成器和 init 会将 Claude Code 的 .mcp.json 交由插件处理(详情):

claude plugin install rails-ai-context --marketplace crisnahine/rails-ai-context --scope project

--tools 可接受 claude、cursor、copilot、opencode、codex 或 all。添加 --cli 仅生成上下文文件,或添加 --mcp-only 仅生成 MCP 配置。可以安全地重复运行:使用 --defaults 时,它会保留已记录的工具和设置,保留现有内容并补齐缺少的内容;如果 CLAUDE.md 是你编写的,它只会修改其 `` 标记之间的区块。每一步都列在安装生成器的工作方式中。

需要 Ruby 3.1+ 和 Rails 7.0+,支持 Linux、macOS 和 Windows。可选依赖:brakeman 用于 security_scan,listen 用于 watch,ripgrep 用于加速 search_code。

然后在 AI 工具中完成一步

每种 AI 工具都会要求你先确认,才启用新项目的 MCP 服务。安装程序会打印你所选工具对应的操作步骤:

Claude CodeCursorGitHub CopilotOpenCodeCodex CLI
在应用文件夹中启动新会话,并批准 rails-ai-context。通过 /mcp 检查重启,在 Customize 的 MCP 下将其启用信任工作区,然后发送一条聊天消息。通过“MCP: List Servers”检查在应用文件夹中重启。通过 opencode mcp list 检查信任项目,启动新会话。通过 /mcp 检查

接着询问一些只有你的应用才知道的问题,例如 “users 表有哪些列?”,然后观察它调用 rails_get_schema,而不是凭空猜测。

为什么需要

你可能见过助手做出这些事:

  • 为已存在的列编写迁移。
  • 在关联实际是 user.articles 时调用 user.posts。
  • 在基于 fixture 的测试套件中用 FactoryBot 搭建测试。
  • 漏掉从父控制器继承的 before_action,然后纳闷为什么身份验证失败。
  • 添加一个你已经有的 gem,或者调用一个你根本没安装的 gem 的 API。
  • 凭空编造代码库中不存在的方法。

你发现问题、修复、再次提示,然后旁边的东西又坏了。Token 不贵,但反复修正会耗掉你一下午。这个 gem 从源头消除了猜测。

你让 AI……不使用时使用后
为 users 添加 subscription_tier 列编写迁移,重复添加已有列读取实时 schema,发现 subscription_status,迁移前先询问
在控制器中调用 user.posts凭猜测调用;运行时出现 NoMethodError从模型中解析出真实关联
为新模型编写测试用 FactoryBot 搭建测试检测到你的测试套件基于 fixture,并按其方式编写
修复失败的 create 操作漏掉继承而来的 authenticate_user!获取与操作源码一同提供的父控制器过滤器
构建仪表板页面凭记忆编造 Tailwind 类获取项目中实际使用的按钮、卡片和提醒样式
追踪 publishable? 的使用位置依次读取 6 个文件,仍会漏掉调用方一次调用:定义、源码、所有调用方和测试

追踪演示

你将获得

35 个只读工具Schema、模型、控制器、路由、视图、Stimulus、Turbo、作业、服务、邮件发送器、i18n、gem、配置、测试、安全、性能等。每个答案都来自你的应用。
值得信赖的答案模型使用 Prism 解析器读取。模型及其每个作用域都会标注 [VERIFIED] 或 [INFERRED](未启动应用时标注 [STATIC]),让助手知道哪些内容仍需运行时检查。
三种接入方式通过 stdio 使用 MCP、通过 HTTP 在应用中挂载 MCP,或在任意终端中使用纯 CLI。
适用于各类 AI 工具的上下文文件CLAUDE.md、Cursor 规则、Copilot 指令、AGENTS.md,每个文件都包含相应工具会读取的 MCP 配置,并在开头列出六条防幻觉规则。
适用于无法启动的应用缺少 ENV 变量、没有数据库、初始化器损坏:工具会从 config/routes.rb、schema dump 和源文件中作答,并明确说明这一点。
支持真实的应用结构Packwerk 包、仓库内引擎、多数据库 dump、Mongoid、仅 API 应用,以及包含多个应用的文件夹。
只读且谨慎SQL 以只读模式运行,并设有超时、行数限制和列脱敏。日志在离开进程前会经过脱敏。绝不会提供机密文件。
可自行扩展在内置工具旁注册自己的 MCP::Tool 类,并使用随附的 TestHelper 测试。
选择设置方式
设置方式写入内容标志适用场景
MCP + 上下文文件MCP 配置和上下文文件--mcp(默认)大多数应用
仅 CLI写有 shell 命令的上下文文件--cli不支持 MCP 的工具,或没有可供批准的服务
仅 MCP仅 MCP 配置--mcp-only自行维护 CLAUDE.md / AGENTS.md 的团队

随时使用更改设置提示词切换,或使用新的标志重新运行安装并添加 --prune。

工作原理

graph TD
    A["Your Rails app\nmodels + schema + routes + controllers + views + jobs"] -->|"40 introspectors"| B
    B["rails-ai-context\nPrism AST · cached · confidence-tagged\nstatic tier when the app can't boot"]
    B --> C["MCP server\nstdio / HTTP\n35 tools · 5 templates · 9 resources"]
    B --> D["CLI\nrake / Thor\nsame 35 tools"]
    B --> E["Context files\nCLAUDE.md · .cursor/rules/ · .github/instructions/ · AGENTS.md"]

    style A fill:#4a9eff,stroke:#2d7ad4,color:#fff
    style B fill:#2d2d2d,stroke:#555,color:#fff
    style C fill:#0984e3,stroke:#0770c2,color:#fff
    style D fill:#00cec9,stroke:#00b5b0,color:#fff
    style E fill:#a29bfe,stroke:#8c83f0,color:#fff

内部实现详见架构和内省器。

工具

所有工具均为只读,答案都来自你的应用。

类别工具
搜索与追踪search_code、get_edit_context
理解analyze_feature、get_context、onboard
架构与模型get_schema、get_model_details、get_callbacks、get_concern
控制器与路由get_controllers、get_routes
视图与前端get_view、get_stimulus、get_partial_interface、get_turbo_map
测试与质量get_test_info、generate_test、validate、security_scan、performance_check
应用配置与服务get_config(sections:app、gems、frontend、api、engines、conventions、autoload、active_support、env、env_config、i18n)、get_helper_methods、get_service_pattern、get_job_pattern、get_component_catalog、get_mailers
数据与调试dependency_graph、migration_advisor、search_docs、query、read_logs、diagnose、review_changes、runtime_info、session_context

第一天值得了解的 4 个工具:

  • search_code 配合 match_type=trace:在一次调用中返回定义、源代码、按文件分组并标注类型的所有调用方,以及测试。这可替代 4 到 5 次文件读取。
  • get_controllers:返回操作源代码,以及继承的过滤器、强参数和渲染映射。
  • get_model_details:从 AST 中返回关联、验证、作用域、枚举和宏,并标记为 [VERIFIED] 或 [INFERRED]。
  • query:执行只读 SQL,并设置超时、行数限制和列脱敏。

通过 MCP 使用时,每个名称都带有 rails_ 前缀(rails_get_schema)。从 CLI 使用时,短名称即可:schema、get_schema 和 rails_get_schema 都能解析。全部 35 个工具的参数见工具参考;操作指南中提供了实际示例。

实时资源

MCP 客户端也可以将结构化数据作为资源读取。模板读取工具共享的上下文,并在每次请求时与文件核对:

URI返回内容
rails-ai-context://models/{name}单个模型的关联、验证和架构
rails-ai-context://controllers/{name}操作、继承的过滤器和强参数
rails-ai-context://controllers/{name}/{action}操作源代码及其适用的过滤器
rails-ai-context://views/{path}视图模板内容(已阻止路径遍历)
rails-ai-context://routes/{controller}单个控制器的实时路由映射

旧版 rails://models/{name} 格式仍然可用。另外还有 9 个静态资源:rails://schema、routes、conventions、gems、controllers、config、tests、migrations、engines。

六条防止幻觉的规则

每个 AI 工具的主上下文文件(CLAUDE.md、OpenCode 和 Codex 使用的 AGENTS.md、Cursor 使用的 .cursorrules 和 .cursor/rules/rails-mcp-tools.mdc、.github/copilot-instructions.md)都以 6 条规则开头,助手在编写代码前会先阅读这些规则,无论处于精简模式还是完整模式。关闭 generate_root_files 后,由 .claude/rules/rails-mcp-tools.md 和 .github/instructions/rails-mcp-tools.instructions.md 提供这些规则:

  1. 编写前先验证。绝不要引用本轮工具调用未确认的列、关联、路由、辅助方法、方法、类、局部模板或 gem。
  2. 每个假设都要标记为 [ASSUMPTION]。“我需要先检查一下 X”是一个不错的回答。
  3. 训练数据描述的是一般的 Rails。这个应用并不一般。遇到看似显而易见的标准做法时,也要查询确认。
  4. 每次编辑前都要检查继承链:继承的过滤器、concerns、include 和 STI 父类。
  5. 工具输出为空也是信息。“找到了 0 个调用方”意味着需要调查,而不是可以继续。
  6. 过时的上下文会误导。写入后重新查询。
默认开启。如需使用自己的规则,可将 `config.anti_hallucination_rules = false` 关闭。在仅使用 MCP 或 CLI 的配置中,[ground rules prompt](docs/PROMPTS.md#ground-rules-for-this-session) 会为助手在单次会话中提供相同规则。

三种连接方式

MCP over stdio 是默认方式。每个 AI 工具都有自己的配置文件(.mcp.json、.cursor/mcp.json、.vscode/mcp.json、opencode.json、.codex/config.toml),用于启动 bundle exec rails-ai-context serve,也可以独立运行 rails-ai-context serve。在 Windows 上,每个配置都会通过 cmd /c 启动,因为 gem 的可执行文件在 Windows 上是批处理文件。

MCP over HTTP 会在应用内挂载服务,使其继承应用的路由、身份验证和中间件:

# config/routes.rb
mount RailsAiContext::Engine, at: "/mcp" if defined?(RailsAiContext::Engine)

if 可确保在未安装 gem 时(例如 Bundler 跳过开发组的生产环境)仍能加载路由文件。在开发和测试环境之外,除非设置 config.allow_http_in_production = true,否则该端点会拒绝所有请求并返回 403,因为它本身没有身份验证(参见 Security)。此外,还可以启动独立的 HTTP 进程:rails-ai-context serve --transport http --port 6029。

CLI 无需服务即可在任何终端中运行相同的 35 个工具:

bin/rails 'ai:tool[search_code]' pattern="publishable?" match_type=trace
rails-ai-context tool schema --table users --detail full

大约一半的工具接受 detail=summary|standard|full。

应用无法启动时

读取应用的命令会尝试完整启动应用,以便进行实时反射。如果启动失败(缺少 ENV 变量、服务无法访问、初始化程序损坏),它们会回退到静态层级,而不会直接退出:从 config/routes.rb 读取路由,从 db/schema.rb、db/structure.sql 或迁移文件读取架构,并从源代码读取模型和控制器。每条响应都会显示说明降级情况的横幅,静态数据会标记为 [STATIC],需要应用已启动才能提供的部分会标记为 [UNAVAILABLE] 并说明原因。--no-boot 会直接跳过启动尝试。doctor 仍需要应用能够启动,因为诊断启动问题正是它的用途。

代码会从常规目录结构、packwerk packs(packs/*/app/*)、仓库内的引擎(engines/*/app/*)以及 .rails-ai-context.yml 中的任何 extra_app_paths 查找。详情参见 Compatibility。

命令

在 Gemfile 中独立运行功能
bin/rails generate rails_ai_context:installrails-ai-context init设置(两者都接受 --tools、--mcp、--cli、--mcp-only、--prune、--defaults)
bin/rails ai:serverails-ai-context serve启动 MCP 服务(stdio)
bin/rails ai:serve_httprails-ai-context serve --transport http启动 MCP 服务(HTTP)
bin/rails 'ai:tool[NAME]'rails-ai-context tool NAME运行一个工具
bin/rails ai:toolrails-ai-context tool --list列出工具
bin/rails ai:contextrails-ai-context context重新生成上下文文件
bin/rails ai:doctorrails-ai-context doctor诊断并提供就绪度评分
bin/rails ai:watchrails-ai-context watch文件更改时重新生成
bin/rails 'ai:preset[NAME]'rails-ai-context preset NAME运行多工具预设(architecture、debugging、migration)
bundle exec rails-ai-context uninstallrails-ai-context uninstall移除 gem 写入的内容,保留你写入的内容
bundle exec rails-ai-context mcp-entryrails-ai-context mcp-entry为 Claude Desktop、Windsurf、Zed 和其他客户端打印 MCP 条目

该可执行文件会像 bin/rails 一样查找应用,因此可从任何子目录运行。应用读取命令共用的标志:使用 --app-path PATH 指定其他目录,使用 --environment ENV 设置 RAILS_ENV,使用 --no-boot 从源代码生成响应。完整列表见 CLI reference。

说明

这些命令供你使用。连接 MCP 后,助手会自行调用相同的工具。

配置

# config/initializers/rails_ai_context.rb
if defined?(RailsAiContext) && RailsAiContext.respond_to?(:configure)
  RailsAiContext.configure do |config|
    config.ai_tools  = %i[claude cursor]   # which AI tools to generate for
    config.tool_mode = :mcp                # :mcp (default) or :cli
    config.preset    = :full               # :full (40 introspectors) or :standard (17)
  end
end

独立安装在 .rails-ai-context.yml 中使用相同的键。所有带默认值的选项都列在配置中。

自定义工具

在内置工具旁注册自己的工具:

# app/mcp_tools/rails_get_business_metrics.rb
class RailsGetBusinessMetrics < MCP::Tool
  tool_name "rails_get_business_metrics"
  description "Key business metrics for this app"
  input_schema(properties: { period: { type: "string" } })

  def self.call(period: "week", server_context: nil)
    MCP::Tool::Response.new([{ type: "text", text: "Users this #{period}: #{User.recent.count}" }])
  end
end

# config/initializers/rails_ai_context.rb
config.custom_tools = ["RailsGetBusinessMetrics"]

使用随附的辅助工具测试它们(RSpec 或 Minitest):

include RailsAiContext::TestHelper

response = execute_tool("business_metrics", period: "month")
assert_tool_response_includes(response, "Users")

参见自定义工具。

可观测性

每次 MCP 调用都会触发一个 ActiveSupport::Notifications 事件:

ActiveSupport::Notifications.subscribe("rails_ai_context.tools.call") do |event|
  ms = (event.payload[:duration].to_f * 1000).round
  Rails.logger.info "[MCP] #{event.payload[:tool_name]} #{ms}ms"
end

卸载

bundle exec rails-ai-context uninstall && bundle remove rails-ai-context   # in the Gemfile
rails-ai-context uninstall                                                 # standalone

它会移除上下文文件、MCP 条目、配置、.gitignore 中对应的行以及 pre-commit 钩子,并保留你编写的内容:你在 CLAUDE.md 中添加的行、MCP 配置中的其他服务,以及你编辑过的钩子。也可以粘贴卸载提示词。

文档

复制粘贴提示词让你的 AI 工具安装、更改、移除或使用这个 gem
快速入门5 分钟内启动并运行
AI 工具设置Claude Code、Cursor、Copilot、OpenCode、Codex CLI、HTTP 传输
指南所有命令、参数和选项
工具参考全部 35 个工具及其所有参数
配方端到端的实际工作流
CLI 参考命令、标志和参数语法
独立使用无需在 Gemfile 中添加条目即可使用
配置每个选项及其默认值
自定义工具构建和测试自己的工具
架构系统设计和内部机制
内省器全部 40 个内省器和 AST 引擎
安全性SQL 安全层和文件拦截
兼容性支持的版本、运行层级、应用结构矩阵
故障排除常见问题及解决方法
常见问题常见问题解答

如果它帮你省下一轮纠错,请在 GitHub 上点个星。

由一位拥有 10 年以上生产环境经验的 Rails 开发者打造。如果它为你节省了时间,不妨考虑赞助这个项目。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。