Skip to main content
Glama
crisnahine

rails-ai-context

by crisnahine

rails-ai-context

为你的 AI 编码助手提供关于 Rails 应用的真实信息

Gem Version Downloads CI MCP Registry Ruby Rails License

Claude Code Cursor GitHub Copilot OpenCode Codex CLI Any terminal

:star: 如果这个 gem 帮你省下了一次修正循环,请在 GitHub 上给它加星!

为什么功能快速开始用法工具配置文档

安装演示

rails-ai-context 是一个 Ruby gem,它把你的 Rails 应用变成 AI 编码助手的真实信息来源。助手不再根据训练数据猜测你的 schema、关联、路由和约定,而是直接询问你的应用:通过 MCP 提供或从 CLI 运行的 45 个只读工具,以及为 Claude Code、Cursor、GitHub Copilot、OpenCode 和 Codex CLI 生成的上下文文件。

[!TIP] 如果你不想,就不需要往 Gemfile 里加任何东西。gem install rails-ai-context,然后在任何 Rails 应用内运行 rails-ai-context init。它也能在无法启动的应用上工作:传入 --no-boot,每个工具都会从源文件中回答。

为什么

你见过你的助手做过这些事:

  • 为一个已经存在的列写迁移。

  • 当关联是 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 个文件,仍然漏掉调用者

一次调用:定义 + 源码 + 所有调用者 + 测试

追踪演示

Related MCP server: Synapse

功能

  • 45 个只读工具,涵盖 schema、模型、控制器、路由、视图、Stimulus、Turbo、jobs、services、mailers、i18n、gems、配置、测试、安全、性能等。每个答案都来自你的应用。

  • Prism AST 解析用于模型内省。每个结果都带有 [VERIFIED][INFERRED],让助手知道什么是真实信息,什么需要运行时检查。

  • 三种接入方式:通过 stdio 的 MCP、通过 HTTP 挂载在 Rails 应用内的 MCP,或任何终端中的纯 CLI。

  • 生成的上下文文件,适用于 Claude Code、Cursor、GitHub Copilot、OpenCode 和 Codex CLI,并带有每个工具在项目打开时自动检测的 MCP 配置。

  • 实时资源rails://rails-ai-context:// URI,每次读取时都会重新内省。

  • 反幻觉规则,随每个生成的上下文文件提供,默认开启。

  • 静态层:当应用无法启动时,工具从 config/routes.rbdb/schema.rb、迁移和源文件中回答,并明确说明。

  • 适用于真实应用形态:packwerk packs、仓库内引擎、多数据库 schema 转储、Mongoid、仅 API 应用。

  • 自定义工具:在内置工具旁边注册你自己的 MCP::Tool 类,并使用捆绑的 TestHelper 测试它们。

快速开始

要求

  • Ruby 3.1 或更高

  • Rails 7.0 或更高

  • 可选:brakeman 用于 security_scanlisten 用于 watchripgrep 用于更快的 search_code

在 Gemfile 中安装

bundle add rails-ai-context --group development
rails generate rails_ai_context:install

生成器会询问你使用哪些 AI 工具以及是否需要 MCP 或 CLI 模式,然后写入上下文文件、每个工具的 MCP 配置,以及 config/initializers/rails_ai_context.rb。重新运行是安全的;它会保留你已有的内容,并添加缺失的部分。

独立安装

gem install rails-ai-context
cd your-rails-app
rails-ai-context init
rails-ai-context serve

无需修改 Gemfile。配置位于 .rails-ai-context.yml。支持 rbenv、rvm、asdf、mise、chruby 和系统 Ruby。参见 独立安装

检查是否正常工作

rails ai:doctor                                  # in-Gemfile: readiness score + diagnostics
rails-ai-context doctor                          # standalone

rails 'ai:tool[schema]' table=users
rails 'ai:tool[model_details]' model=User
rails 'ai:tool[search_code]' pattern=publishable? match_type=trace

然后在你的 AI 工具中打开项目。它写入的 MCP 配置会在打开时被拾取,助手开始调用 rails_get_model_details 而不是猜测。

[!NOTE] 上面的 CLI 命令是给你用的。当 MCP 连接时,助手会自己调用相同的工具;你永远不需要输入它们。

用法

通过 stdio 的 MCP

默认方式。每个 AI 工具都有自己的配置文件(.mcp.json.cursor/mcp.json.vscode/mcp.jsonopencode.json.codex/config.toml),指向:

rails ai:serve             # in-Gemfile
rails-ai-context serve     # standalone

通过 HTTP 的 MCP

将服务器挂载到你的应用内部。它继承你的路由、认证和中间件,不需要第二个进程。

# config/routes.rb
mount RailsAiContext::Engine, at: "/mcp"

将客户端指向 http://localhost:3000/mcp。还有一个独立的 HTTP 进程:rails-ai-context serve --transport http --port 6029

[!WARNING] 每个打开 SSE 通道的已连接客户端都会在连接生命周期内占用一个服务器线程。开发时没问题;如果有多个客户端共享应用,请提高 Puma 的线程数,或使用独立的 HTTP 进程。

CLI

同样的 45 个工具,无需服务器,任何终端都可以。

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

工具名称可以宽松解析:schemaget_schemarails_get_schema 都可以。大多数工具接受 detail=summary|standard|full

命令

在 Gemfile 中

独立安装

作用

rails ai:serve

rails-ai-context serve

启动 MCP 服务器(stdio)

rails ai:serve_http

rails-ai-context serve --transport http

启动 MCP 服务器(HTTP)

rails 'ai:tool[NAME]'

rails-ai-context tool NAME

运行一个工具

rails ai:tool

rails-ai-context tool --list

列出工具

rails ai:context

rails-ai-context context

生成上下文文件

rails ai:doctor

rails-ai-context doctor

诊断和就绪评分

rails ai:watch

rails-ai-context watch

文件变化时重新生成

rails 'ai:preset[NAME]'

rails-ai-context preset NAME

运行多工具预设(architecturedebuggingmigration

应用读取命令共享的标志:--app-path PATH 用于指定另一个目录,--environment ENV 用于设置 RAILS_ENV--no-boot 用于跳过启动尝试并从源码回答。完整列表见 CLI 参考

工具

每个工具都是只读的,并从你的应用回答。

类别

工具

搜索与追踪

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_frontend_stack

测试与质量

get_test_info, generate_test, validate, security_scan, performance_check

应用配置与服务

get_api, get_conventions, get_config, get_gems, get_env, get_helper_methods, get_service_pattern, get_job_pattern, get_component_catalog, get_i18n, get_mailers, get_engines, get_autoload, get_active_support, get_env_config

数据与调试

dependency_graph, migration_advisor, search_docs, query, read_logs, diagnose, review_changes, runtime_info, session_context

第一天值得了解的几项:

  • search_code 配合 match_type=trace 一次调用即可返回定义、源码、按类型分组的全部调用方以及测试。这相当于替代了 4 到 5 次文件读取。

  • get_controllers 返回动作源码,包含继承的过滤器、强参数和渲染映射。

  • get_model_details 从 AST 返回关联、校验、作用域、枚举和宏,每一项都标记为 [VERIFIED][INFERRED]

  • query 以超时、行数限制和列脱敏方式运行只读 SQL。read_logs 在敏感数据离开进程之前对其进行脱敏。

全部 45 个工具的参数见工具参考;实际示例见配方

实时资源

MCP 客户端还可以将结构化数据作为资源读取。模板会在每次请求时重新内省:

URI

返回内容

rails://models/{name}

单个模型的关联、校验和模式

rails-ai-context://controllers/{name}

动作、继承的过滤器、强参数

rails-ai-context://controllers/{name}/{action}

动作源码及适用的过滤器

rails-ai-context://views/{path}

视图模板内容(已阻止路径遍历)

rails-ai-context://routes/{controller}

单个控制器的实时路由映射

另有 9 个静态资源:rails://schemaroutesconventionsgemscontrollersconfigtestsmigrationsengines

反幻觉规则

每个生成的上下文文件(CLAUDE.md.cursor/rules/.github/instructions/AGENTS.md)都附带六条规则,助手在编写代码前会先阅读这些规则:

  1. 先验证再编写。绝不引用本轮工具调用未确认的列、关联、路由、辅助方法、方法、类、局部模板或 gem。

  2. [ASSUMPTION] 标记每一个假设。“我需要先检查 X”就是一个好的回答。

  3. 训练数据描述的是普通的 Rails。这个应用并不普通。当某件事感觉明显是标准做法时,仍然要查询。

  4. 每次编辑前检查继承链:继承的过滤器、concerns、includes、STI 父类。

  5. 空的工具输出也是信息。“找到 0 个调用方”意味着需要调查,而不是继续。

  6. 过期的上下文会误导。写入后要重新查询。

默认开启。如果你更喜欢自己的规则,可以用 config.anti_hallucination_rules = false 关闭。

当应用无法启动时

rails-ai-context 会尝试完整启动以进行实时反射。当启动失败(缺少 ENV 变量、服务不可达、初始化器损坏)时,应用读取命令会回退到静态层而不是直接失败:路由来自 config/routes.rb,模式来自 db/schema.rbdb/structure.sql 或迁移,模型和控制器来自其源文件。每个响应都会带有一个横幅说明降级情况,静态数据标记为 [STATIC],需要已启动应用的部分会报告 [UNAVAILABLE] 并附上原因。

--no-boot 直接跳过启动尝试,速度快且不受启动时副作用影响。doctor 仍然需要可启动的应用;诊断启动问题正是它的职责。

代码可以在常规布局、packwerk 包(packs/*/app/*)、仓库内引擎(engines/*/app/*)以及 .rails-ai-context.yml 中的任何 extra_app_paths 中找到。多数据库模式转储(db/queue_schema.rb 等)会显示在 Secondary databases 部分下。Mongoid 应用会收到 [UNAVAILABLE] 模式信号以及静态模型数据,而不是空表;仅 API 应用会从视图和前端工具收到“不适用”,而不是静默空白。详见兼容性

配置

# config/initializers/rails_ai_context.rb
if defined?(RailsAiContext)
  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"

  def call(period: "week")
    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

工作原理

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\n45 tools · 5 templates · 9 resources"]
    B --> D["CLI\nrake / Thor\nsame 45 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

内部机制、内省器列表和 AST 引擎见架构内省器

文档

快速入门

5 分钟内启动并运行

指南

每个命令、参数和选项

工具参考

全部 45 个工具及每个参数

配方

真实工作流,端到端

AI 工具设置

Claude Code、Cursor、Copilot、OpenCode、Codex CLI、HTTP 传输

CLI 参考

命令、标志和参数语法

独立使用

无需 Gemfile 条目即可使用

配置

每个选项及其默认值

自定义工具

构建并测试你自己的工具

架构

系统设计与内部机制

内省器

全部 40 个内省器和 AST 引擎

安全

SQL 安全层和文件阻止

兼容性

支持的版本、运行层级、应用形态矩阵

故障排查

常见问题与修复

常见问题

常见问题

由一位拥有 10 年以上生产环境经验的 Rails 开发者构建。如果它为你节省了时间,请考虑赞助该项目

A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
3hResponse time
1dRelease cycle
102Releases (12mo)
Commit activity
Issues opened vs closed

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Provides structural code intelligence via 26 MCP tools, enabling AI assistants to query code symbols, dependencies, and call graphs accurately without file-pasting.
  • A
    license
    A
    quality
    A
    maintenance
    Enables AI coding agents to efficiently explore codebases by providing structural outlines, module digests, symbol bodies, and AST-aware grep via MCP.
    4
    33
    MIT

View all related MCP servers

Related MCP Connectors

  • Repo intel for AI coding agents: overview, PRs, contributors, hot files, CI, deps. Remote MCP.

  • Read-only tools over the Safer Agentic AI framework: 238 patterns + 14 heuristics.

  • Package intelligence MCP for AI agents — 22 tools, 19 ecosystems, AGPL SDK, free.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/crisnahine/rails-ai-context'

If you have feedback or need assistance with the MCP directory API, please join our Discord server