rails-ai-context
rails-ai-context
AIコーディングアシスタントにRailsアプリの真実を提供する
:star: このgemが修正ループを1回でも減らしてくれたら、GitHubでスターを付けてください!
なぜ • 機能 • はじめに • 使い方 • ツール • 設定 • ドキュメント

rails-ai-context は、RailsアプリをAIコーディングアシスタントにとっての真実の情報源にするRuby gemです。スキーマ、アソシエーション、ルート、規約を学習データから推測させる代わりに、アシスタントがアプリに直接問い合わせます。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を呼んだりする。
コードベースに存在しないメソッドをでっち上げる。
あなたはそれを見つけて修正し、再プロンプトし、するとその隣で別の何かが壊れます。トークンは安いですが、修正ループに午後を費やすことになります。このgemは推測を根本から排除します。
AIに依頼すること... | このgemなし | このgemあり |
usersに | マイグレーションを書き、既存のカラムを重複させる | ライブスキーマを読み、 |
コントローラーで | 推測する。実行時に | モデルから実際のアソシエーションを解決する |
新しいモデルのテストを書く | FactoryBotで雛形生成する | fixtureベースのテストスイートを検出し、それに合わせる |
失敗するcreateアクションを修正する | 継承された | アクションのソースとともに親コントローラーのフィルターをインラインで取得する |
ダッシュボードページを構築する | 記憶からTailwindクラスをでっち上げる | 実際のボタン/カード/アラートパターンを取得する |
| 6つのファイルを順番に読み、それでも呼び出し元を見逃す | 1回の呼び出しで:定義 + ソース + すべての呼び出し元 + テスト |

Related MCP server: Synapse
機能
45の読み取り専用ツール:スキーマ、モデル、コントローラー、ルート、ビュー、Stimulus、Turbo、ジョブ、サービス、メーラー、i18n、gem、設定、テスト、セキュリティ、パフォーマンスなど。すべての回答はアプリから取得されます。
Prism ASTパースによるモデル内省。各結果には
[VERIFIED]または[INFERRED]が付与され、アシスタントは何が真実で何が実行時チェックを必要とするかを把握できます。3つの接続方法:stdio上のMCP、Railsアプリ内にHTTPでマウントするMCP、または任意のターミナルでのプレーンなCLI。
生成コンテキストファイル:Claude Code、Cursor、GitHub Copilot、OpenCode、Codex CLI用。各ツールがプロジェクトを開いたときに自動検出するMCP設定も含まれます。
ライブリソース:
rails://およびrails-ai-context://URI。読み取りのたびに最新の状態を内省します。幻覚防止ルール:すべての生成コンテキストファイルに同梱され、デフォルトで有効です。
静的モード:アプリが起動できない場合、ツールは
config/routes.rb、db/schema.rb、マイグレーション、ソースファイルから回答し、その旨を明示します。実際のアプリ構成に対応:packwerkパック、リポジトリ内エンジン、マルチデータベーススキーマダンプ、Mongoid、API専用アプリ。
カスタムツール:組み込みツールの隣に独自の
MCP::Toolクラスを登録し、同梱のTestHelperでテストできます。
はじめに
要件
Ruby 3.1以降
Rails 7.0以降
任意:
security_scan用のbrakeman、watch用のlisten、高速なsearch_code用のripgrep
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 serveGemfileの変更は不要です。設定は .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.json、opencode.json、.codex/config.toml)を持ち、次の場所を指します:
rails ai:serve # in-Gemfile
rails-ai-context serve # standaloneHTTP上のMCP
サーバーをアプリ内にマウントします。ルーティング、認証、ミドルウェアを継承し、別プロセスは不要です。
# config/routes.rb
mount RailsAiContext::Engine, at: "/mcp"クライアントを http://localhost:3000/mcp に向けます。スタンドアロンのHTTPプロセスもあります:rails-ai-context serve --transport http --port 6029。
[!WARNING] SSEチャンネルを開く接続クライアントごとに、接続中は1つのサーバースレッドが保持されます。開発には問題ありません。複数のクライアントがアプリを共有する場合は、Pumaのスレッド数を増やすか、スタンドアロンのHTTPプロセスを使用してください。
CLI
同じ45ツールを、サーバーなしで、任意のターミナルで使用できます。
rails 'ai:tool[search_code]' pattern="publishable?" match_type=trace
rails-ai-context tool schema --table users --detail fullツール名は柔軟に解決されます:schema、get_schema、rails_get_schema はすべて機能します。ほとんどのツールは detail=summary|standard|full を受け付けます。
コマンド
Gemfile内 | スタンドアロン | 機能 |
|
| MCPサーバーを起動(stdio) |
|
| MCPサーバーを起動(HTTP) |
|
| 1つのツールを実行 |
|
| ツールを一覧表示 |
|
| コンテキストファイルを生成 |
|
| 診断と準備完了スコア |
|
| ファイル変更時に再生成 |
|
| マルチツールプリセットを実行( |
アプリ読み取りコマンドで共有されるフラグ:別のディレクトリを対象にする --app-path PATH、RAILS_ENV を設定する --environment ENV、起動試行をスキップしてソースから回答する --no-boot。完全なリストは CLIリファレンス にあります。
ツール
すべてのツールは読み取り専用で、アプリから回答します。
カテゴリ | ツール |
検索とトレース |
|
理解 |
|
スキーマとモデル |
|
コントローラとルート |
|
ビューとフロントエンド |
|
テストと品質 |
|
アプリ設定とサービス |
|
データとデバッグ |
|
初日に知っておくと便利なもの:
search_codeをmatch_type=traceで使うと、定義、ソース、タイプ別にグループ化されたすべての呼び出し元、そしてテストが1回の呼び出しで返ります。これは4〜5回のファイル読み取りに相当します。get_controllersは、継承されたフィルタ、strong params、レンダーマップを含むアクションソースを返します。get_model_detailsは、ASTからアソシエーション、バリデーション、スコープ、enum、マクロを返し、それぞれに[VERIFIED]または[INFERRED]のタグが付きます。queryは、タイムアウト、行数制限、カラムのリダクション付きで読み取り専用SQLを実行します。read_logsは、プロセスからデータが出る前に機密データをリダクションします。
全45ツールのパラメータは ツールリファレンス に、実践例は レシピ にあります。
ライブリソース
MCPクライアントはリソースとして構造化データも読み取れます。テンプレートはリクエストごとに最新の状態をイントロスペクトします:
URI | 戻り値 |
| 1つのモデルのアソシエーション、バリデーション、スキーマ |
| アクション、継承されたフィルタ、strong params |
| 適用されるフィルタ付きのアクションソース |
| ビューテンプレートの内容(パストラバーサルはブロックされます) |
| 1つのコントローラのライブルートマップ |
さらに9つの静的リソース: rails://schema, routes, conventions, gems, controllers, config, tests, migrations, engines。
幻覚防止ルール
生成されるすべてのコンテキストファイル(CLAUDE.md、.cursor/rules/、.github/instructions/、AGENTS.md)には、アシスタントがコードを書く前に読む6つのルールが同梱されています:
書く前に検証する。このターン内のツール呼び出しで確認されていないカラム、アソシエーション、ルート、ヘルパー、メソッド、クラス、パーシャル、gemを参照しないこと。
すべての仮定に
[ASSUMPTION]を付ける。「まずXを確認する必要があります」は良い回答です。トレーニングデータは平均的なRailsを記述しています。このアプリは平均的ではありません。何かが明らかに標準的だと感じても、とにかくクエリしてください。
編集の前に毎回継承チェーンを確認する: 継承されたフィルタ、concern、include、STIの親。
空のツール出力は情報です。「呼び出し元が0件」は調査を意味し、続行を意味しません。
古いコンテキストは嘘をつきます。書き込み後は再クエリしてください。
デフォルトでオンです。独自のルールを好む場合は config.anti_hallucination_rules = false でオフにできます。
アプリが起動できない場合
rails-ai-context はライブリフレクションのために完全なブートを試みます。ブートが失敗した場合(ENV変数の欠落、到達不能なサービス、壊れたイニシャライザ)、アプリ読み取りコマンドは停止する代わりに静的ティアにフォールバックします: ルートは config/routes.rb から、スキーマは db/schema.rb、db/structure.sql またはマイグレーションから、モデルとコントローラはソースファイルから。すべてのレスポンスには劣化の内容を示すバナーが付き、静的データには [STATIC] のタグが付き、ブートされたアプリが必要なセクションは理由とともに [UNAVAILABLE] を報告します。
--no-boot は試行を完全にスキップします。これは高速で、ブート時の副作用の影響を受けません。doctor はブート可能なアプリを必要とします。ブートの診断がその役目です。
コードは従来のレイアウト、packwerkパック(packs/*/app/*)、リポジトリ内エンジン(engines/*/app/*)、および .rails-ai-context.yml の任意の extra_app_paths にあります。マルチデータベースのスキーマダンプ(db/queue_schema.rb など)は「セカンダリデータベース」セクションに表示されます。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ツール | |
エンドツーエンドの実践ワークフロー | |
Claude Code、Cursor、Copilot、OpenCode、Codex CLI、HTTPトランスポート | |
コマンド、フラグ、引数の構文 | |
Gemfileエントリなしで使用 | |
デフォルト付きのすべてのオプション | |
独自のツールの構築とテスト | |
システム設計と内部構造 | |
全40のイントロスペクターとASTエンジン | |
SQLセーフティレイヤーとファイルブロッキング | |
サポートバージョン、動作ティア、アプリ形状マトリックス | |
一般的な問題と修正 | |
よくある質問 |
本番環境で10年以上の経験を持つRails開発者によって構築されました。時間の節約になったなら、プロジェクトへのスポンサー をご検討ください。
This server cannot be deployed
Maintenance
Related MCP Connectors
Code intelligence platform for AI agents. 20 tools for architecture, security & impact analysis.
Read-only AI coding tools for change verification, release readiness, capacity, and guidance.
Read-only MCP tools for AI agent discovery, structured resources, and NIULAI information.
A registry of AI agent tools — MCP servers, APIs, CLIs, SDKs — kept current by automated ingestion.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceProvides MCP tools that help AI agents get their bearings in a codebase with unified SQL views over code, git, docs, and conversations, powered by DuckDB.54 PyPI5Apache 2.0
- FlicenseNot gradedqualityDmaintenanceProvides structural code intelligence via 26 MCP tools, enabling AI assistants to query code symbols, dependencies, and call graphs accurately without file-pasting.-
- AlicenseAqualityCmaintenanceEnables AI coding agents to efficiently explore codebases by providing structural outlines, module digests, symbol bodies, and AST-aware grep via MCP.427 npm1MIT

Tidewave Railsofficial
AlicenseNot gradedqualityAmaintenanceBetter agentic Rails development, runtime-level tools for your agent to talk to your running app.476Apache 2.0