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が修正ループを1回でも減らしてくれたら、GitHubでスターを付けてください!

なぜ機能はじめに使い方ツール設定ドキュメント

Install demo

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に subscription_tier カラムを追加する

マイグレーションを書き、既存のカラムを重複させる

ライブスキーマを読み、subscription_status を確認し、マイグレーション前に質問する

コントローラーで user.posts を呼ぶ

推測する。実行時に NoMethodError

モデルから実際のアソシエーションを解決する

新しいモデルのテストを書く

FactoryBotで雛形生成する

fixtureベースのテストスイートを検出し、それに合わせる

失敗するcreateアクションを修正する

継承された authenticate_user! を見落とす

アクションのソースとともに親コントローラーのフィルターをインラインで取得する

ダッシュボードページを構築する

記憶からTailwindクラスをでっち上げる

実際のボタン/カード/アラートパターンを取得する

publishable? がどこで使われているか追跡する

6つのファイルを順番に読み、それでも呼び出し元を見逃す

1回の呼び出しで:定義 + ソース + すべての呼び出し元 + テスト

Trace demo

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.rbdb/schema.rb、マイグレーション、ソースファイルから回答し、その旨を明示します。

  • 実際のアプリ構成に対応:packwerkパック、リポジトリ内エンジン、マルチデータベーススキーマダンプ、Mongoid、API専用アプリ。

  • カスタムツール:組み込みツールの隣に独自の MCP::Tool クラスを登録し、同梱の TestHelper でテストできます。

はじめに

要件

  • Ruby 3.1以降

  • Rails 7.0以降

  • 任意:security_scan 用の brakemanwatch 用の 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 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チャンネルを開く接続クライアントごとに、接続中は1つのサーバースレッドが保持されます。開発には問題ありません。複数のクライアントがアプリを共有する場合は、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

1つのツールを実行

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 PATHRAILS_ENV を設定する --environment 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_codematch_type=trace で使うと、定義、ソース、タイプ別にグループ化されたすべての呼び出し元、そしてテストが1回の呼び出しで返ります。これは4〜5回のファイル読み取りに相当します。

  • get_controllers は、継承されたフィルタ、strong params、レンダーマップを含むアクションソースを返します。

  • get_model_details は、ASTからアソシエーション、バリデーション、スコープ、enum、マクロを返し、それぞれに [VERIFIED] または [INFERRED] のタグが付きます。

  • query は、タイムアウト、行数制限、カラムのリダクション付きで読み取り専用SQLを実行します。read_logs は、プロセスからデータが出る前に機密データをリダクションします。

全45ツールのパラメータは ツールリファレンス に、実践例は レシピ にあります。

ライブリソース

MCPクライアントはリソースとして構造化データも読み取れます。テンプレートはリクエストごとに最新の状態をイントロスペクトします:

URI

戻り値

rails://models/{name}

1つのモデルのアソシエーション、バリデーション、スキーマ

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

アクション、継承されたフィルタ、strong params

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

適用されるフィルタ付きのアクションソース

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

ビューテンプレートの内容(パストラバーサルはブロックされます)

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

1つのコントローラのライブルートマップ

さらに9つの静的リソース: rails://schema, routes, conventions, gems, controllers, config, tests, migrations, engines

幻覚防止ルール

生成されるすべてのコンテキストファイル(CLAUDE.md.cursor/rules/.github/instructions/AGENTS.md)には、アシスタントがコードを書く前に読む6つのルールが同梱されています:

  1. 書く前に検証する。このターン内のツール呼び出しで確認されていないカラム、アソシエーション、ルート、ヘルパー、メソッド、クラス、パーシャル、gemを参照しないこと。

  2. すべての仮定に [ASSUMPTION] を付ける。「まずXを確認する必要があります」は良い回答です。

  3. トレーニングデータは平均的なRailsを記述しています。このアプリは平均的ではありません。何かが明らかに標準的だと感じても、とにかくクエリしてください。

  4. 編集の前に毎回継承チェーンを確認する: 継承されたフィルタ、concern、include、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 など)は「セカンダリデータベース」セクションに表示されます。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セーフティレイヤーとファイルブロッキング

互換性

サポートバージョン、動作ティア、アプリ形状マトリックス

トラブルシューティング

一般的な問題と修正

FAQ

よくある質問

本番環境で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