rails-ai-context
rails-ai-context
Da a tu asistente de codificación con IA información real sobre tu aplicación Rails
:star: Si esta gema te ahorra un bucle de corrección, ¡dale una estrella en GitHub!
Por qué • Características • Primeros pasos • Uso • Herramientas • Configuración • Documentación

rails-ai-context es una gema de Ruby que convierte tu aplicación Rails en la fuente de verdad para los asistentes de codificación con IA. En lugar de adivinar tu esquema, asociaciones, rutas y convenciones a partir de los datos de entrenamiento, el asistente pregunta a tu aplicación: 45 herramientas de solo lectura servidas a través de MCP o ejecutadas desde la CLI, además de archivos de contexto generados para Claude Code, Cursor, GitHub Copilot, OpenCode y Codex CLI.
[!TIP] No tienes que añadir nada a tu Gemfile si no quieres. Ejecuta
gem install rails-ai-contexty luegorails-ai-context initdentro de cualquier aplicación Rails. También funciona en una aplicación que no arranca: pasa--no-booty todas las herramientas responden desde los archivos fuente.
Por qué
Has visto a tu asistente hacer esto:
Escribir una migración para una columna que ya existe.
Llamar a
user.postscuando la asociación esuser.articles.Generar pruebas con FactoryBot en una suite basada en fixtures.
Perderse un
before_actionheredado de un controlador padre y luego preguntarse por qué falla la autenticación.Añadir una gema que ya tienes, o llamar a una API de una que no tienes.
Inventar un método que no está en el código.
Lo detectas, lo arreglas, vuelves a preguntar y algo cercano se rompe. Los tokens son baratos; el bucle de corrección es lo que te cuesta la tarde. Esta gema elimina la adivinanza desde el origen.
Le pides a la IA que... | Sin | Con |
Añadir una columna | Escribe la migración, duplica una columna existente | Lee el esquema real, ve |
Llamar a | Adivina; | Resuelve la asociación real desde el modelo |
Escribir pruebas para un modelo nuevo | Genera el andamiaje con FactoryBot | Detecta tu suite basada en fixtures y se adapta a ella |
Arreglar una acción create que falla | Pasa por alto el | Obtiene los filtros del controlador padre junto con el código de la acción |
Crear una página de panel | Inventa clases de Tailwind de memoria | Obtiene tus patrones reales de botón/tarjeta/alerta |
Rastrear dónde se usa | Lee 6 archivos en secuencia y aun así no ve los llamadores | Una sola llamada: definición + código + todos los llamadores + pruebas |

Related MCP server: Synapse
Características
45 herramientas de solo lectura para esquema, modelos, controladores, rutas, vistas, Stimulus, Turbo, trabajos, servicios, mailers, i18n, gemas, configuración, pruebas, seguridad, rendimiento y más. Cada respuesta proviene de tu aplicación.
Análisis de AST con Prism para la introspección de modelos. Cada resultado incluye
[VERIFIED]o[INFERRED]para que el asistente sepa qué es información real y qué necesita una comprobación en tiempo de ejecución.Tres formas de acceso: MCP por stdio, MCP montado dentro de tu aplicación Rails por HTTP, o CLI directa en cualquier terminal.
Archivos de contexto generados para Claude Code, Cursor, GitHub Copilot, OpenCode y Codex CLI, con la configuración de MCP que cada herramienta detecta automáticamente al abrir el proyecto.
Recursos en vivo: URIs
rails://yrails-ai-context://que se inspeccionan de nuevo en cada lectura.Reglas contra la alucinación incluidas en todos los archivos de contexto generados, activadas por defecto.
Nivel estático: cuando la aplicación no puede arrancar, las herramientas responden desde
config/routes.rb,db/schema.rb, las migraciones y los archivos fuente, y lo indican.Funciona con formas reales de aplicación: packs de packwerk, motores en el repositorio, volcados de esquema de múltiples bases de datos, Mongoid, aplicaciones solo API.
Herramientas personalizadas: registra tus propias clases
MCP::Tooljunto a las integradas y pruébalas con elTestHelperincluido.
Primeros pasos
Requisitos
Ruby 3.1 o más reciente
Rails 7.0 o más reciente
Opcional:
brakemanparasecurity_scan,listenparawatch,ripgreppara unsearch_codemás rápido
Instalación en el Gemfile
bundle add rails-ai-context --group development
rails generate rails_ai_context:installEl generador pregunta qué herramientas de IA utilizas y si quieres el modo MCP o CLI, y luego escribe los archivos de contexto, la configuración de MCP para cada herramienta y config/initializers/rails_ai_context.rb. Volver a ejecutarlo es seguro: conserva lo que ya tienes y añade lo que falta.
Instalación independiente
gem install rails-ai-context
cd your-rails-app
rails-ai-context init
rails-ai-context serveSin cambios en el Gemfile. La configuración vive en .rails-ai-context.yml. Funciona con rbenv, rvm, asdf, mise, chruby y el Ruby del sistema. Consulta Instalación independiente.
Comprueba que funciona
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=traceA continuación, abre el proyecto en tu herramienta de IA. La configuración de MCP que escribió se detecta al abrir, y el asistente empieza a llamar a rails_get_model_details en lugar de adivinar.
[!NOTE] Los comandos de CLI anteriores son para ti. Cuando MCP está conectado, el asistente llama a las mismas herramientas por sí mismo; nunca las escribes tú.
Uso
MCP por stdio
El modo predeterminado. Cada herramienta de IA recibe su propio archivo de configuración (.mcp.json, .cursor/mcp.json, .vscode/mcp.json, opencode.json, .codex/config.toml) que apunta a:
rails ai:serve # in-Gemfile
rails-ai-context serve # standaloneMCP por HTTP
Monta el servidor dentro de tu aplicación. Hereda tu enrutamiento, autenticación y middleware, y no necesita un segundo proceso.
# config/routes.rb
mount RailsAiContext::Engine, at: "/mcp"Apunta el cliente a http://localhost:3000/mcp. También hay un proceso HTTP independiente: rails-ai-context serve --transport http --port 6029.
[!WARNING] Cada cliente conectado que abre el canal SSE mantiene un hilo del servidor durante toda la conexión. Está bien para desarrollo; aumenta el número de hilos de Puma o usa el proceso HTTP independiente si varios clientes comparten la aplicación.
CLI
Las mismas 45 herramientas, sin servidor, en cualquier terminal.
rails 'ai:tool[search_code]' pattern="publishable?" match_type=trace
rails-ai-context tool schema --table users --detail fullLos nombres de las herramientas se resuelven de forma flexible: schema, get_schema y rails_get_schema funcionan todas. La mayoría de las herramientas aceptan detail=summary|standard|full.
Comandos
En el Gemfile | Independiente | Qué hace |
|
| Iniciar el servidor MCP (stdio) |
|
| Iniciar el servidor MCP (HTTP) |
|
| Ejecutar una herramienta |
|
| Listar las herramientas |
|
| Generar archivos de contexto |
|
| Diagnóstico y puntuación de preparación |
|
| Regenerar ante cambios de archivo |
|
| Ejecutar un preset de varias herramientas ( |
Banderas compartidas por los comandos que leen la aplicación: --app-path PATH para apuntar a otro directorio, --environment ENV para establecer RAILS_ENV, y --no-boot para omitir el intento de arranque y responder desde el código fuente. Lista completa en la referencia de CLI.
Herramientas
Cada herramienta es de solo lectura y responde desde tu aplicación.
Categoría | Herramientas |
Búsqueda y rastreo |
|
Comprensión |
|
Esquema y modelos |
|
Controladores y rutas |
|
Vistas y frontend |
|
Pruebas y calidad |
|
Configuración de la app y servicios |
|
Datos y depuración |
|
Algunas que conviene conocer desde el primer día:
search_codeconmatch_type=tracedevuelve la definición, el código fuente, todos los llamadores agrupados por tipo y las pruebas, en una sola llamada. Eso sustituye de 4 a 5 lecturas de archivos.get_controllersdevuelve el código fuente de la acción con los filtros heredados, los strong params y el mapa de renderizado.get_model_detailsdevuelve asociaciones, validaciones, scopes, enums y macros del AST, cada uno etiquetado como[VERIFIED]o[INFERRED].queryejecuta SQL de solo lectura con un tiempo de espera, un límite de filas y redacción de columnas.read_logsredacta los datos sensibles antes de que salgan del proceso.
Los parámetros de los 45 están en la referencia de herramientas; ejemplos resueltos en recetas.
Recursos en vivo
Los clientes MCP también pueden leer datos estructurados como recursos. Las plantillas se inspeccionan de nuevo en cada petición:
URI | Devuelve |
| Asociaciones, validaciones, esquema de un modelo |
| Acciones, filtros heredados, strong params |
| Código fuente de la acción con los filtros que se aplican |
| Contenido de la plantilla de vista (recorrido de rutas bloqueado) |
| Mapa de rutas en vivo de un controlador |
Además, 9 recursos estáticos: rails://schema, routes, conventions, gems, controllers, config, tests, migrations, engines.
Reglas anti-alucinación
Cada archivo de contexto generado (CLAUDE.md, .cursor/rules/, .github/instructions/, AGENTS.md) incluye seis reglas que el asistente lee antes de escribir código:
Verifica antes de escribir. Nunca hagas referencia a una columna, asociación, ruta, helper, método, clase, partial o gema que una llamada a herramienta en este turno no haya confirmado.
Marca cada suposición con
[ASSUMPTION]. «Necesitaría comprobar X primero» es una buena respuesta.Los datos de entrenamiento describen un Rails promedio. Esta app no es promedio. Cuando algo parezca obviamente estándar, consulta de todos modos.
Comprueba la cadena de herencia antes de cada edición: filtros heredados, concerns, includes, padres STI.
La salida vacía de una herramienta es información. «0 llamadores encontrados» significa investigar, no continuar.
El contexto obsoleto miente. Vuelve a consultar después de escribir.
Activadas por defecto. Desactívalas con config.anti_hallucination_rules = false si prefieres las tuyas propias.
Cuando la app no puede arrancar
rails-ai-context intenta un arranque completo para la reflexión en vivo. Cuando el arranque falla (variables de entorno ausentes, un servicio inaccesible, un initializer roto), los comandos de lectura de la app recurren al nivel estático en lugar de fallar: rutas desde config/routes.rb, esquema desde db/schema.rb, db/structure.sql o migraciones, modelos y controladores desde sus archivos fuente. Cada respuesta lleva un banner que indica la degradación, los datos estáticos se etiquetan como [STATIC] y las secciones que necesitan una app arrancada informan de [UNAVAILABLE] con el motivo.
--no-boot omite el intento por completo, lo que es rápido e inmune a los efectos secundarios del arranque. doctor sigue necesitando una app arrancable; diagnosticar el arranque es su trabajo.
El código se encuentra en el diseño convencional, en packs de packwerk (packs/*/app/*), en engines dentro del repositorio (engines/*/app/*) y en cualquier extra_app_paths de .rails-ai-context.yml. Los volcados de esquema de múltiples bases de datos (db/queue_schema.rb y similares) aparecen en una sección Secondary databases. Las apps Mongoid reciben una señal de esquema [UNAVAILABLE] más datos de modelo estáticos en lugar de una tabla vacía, y las apps solo API reciben «no aplicable» de las herramientas de vistas y frontend en lugar de un espacio en blanco silencioso. Detalles en Compatibilidad.
Configuración
# 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
endLas instalaciones independientes usan las mismas claves en .rails-ai-context.yml. Todas las opciones con sus valores por defecto están en Configuración.
Herramientas personalizadas
Registra tus propias herramientas junto a las integradas:
# 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"]Pruébalas con el helper incluido (RSpec o Minitest):
include RailsAiContext::TestHelper
response = execute_tool("business_metrics", period: "month")
assert_tool_response_includes(response, "Users")Consulta Herramientas personalizadas.
Observabilidad
Cada llamada MCP dispara un evento 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"
endCómo funciona
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:#fffLos detalles internos, la lista de introspectores y el motor AST están en Arquitectura e Introspectores.
Documentación
En funcionamiento en 5 minutos | |
Cada comando, parámetro y opción | |
Las 45 herramientas con cada parámetro | |
Flujos de trabajo reales, de principio a fin | |
Claude Code, Cursor, Copilot, OpenCode, Codex CLI, transporte HTTP | |
Comandos, flags y sintaxis de argumentos | |
Úsalo sin una entrada en el Gemfile | |
Cada opción con su valor por defecto | |
Crea y prueba tus propias herramientas | |
Diseño del sistema y detalles internos | |
Los 40 introspectores y el motor AST | |
Capas de seguridad SQL y bloqueo de archivos | |
Versiones compatibles, niveles de funcionamiento, matriz de formas de app | |
Problemas comunes y soluciones | |
Preguntas frecuentes |
Creado por un desarrollador de Rails con más de 10 años en producción. Si te ahorra tiempo, considera patrocinar el proyecto.
This server cannot be installed
Maintenance
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
- AlicenseNot gradedqualityAmaintenanceProvides 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.4Apache 2.0
- FlicenseNot gradedqualityCmaintenanceProvides structural code intelligence via 26 MCP tools, enabling AI assistants to query code symbols, dependencies, and call graphs accurately without file-pasting.
- AlicenseAqualityAmaintenanceEnables AI coding agents to efficiently explore codebases by providing structural outlines, module digests, symbol bodies, and AST-aware grep via MCP.433MIT

Tidewave Railsofficial
AlicenseNot gradedqualityAmaintenanceBetter agentic Rails development, runtime-level tools for your agent to talk to your running app.475Apache 2.0
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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