MCP для Rails
Что это за система
1. Avante.nvim — интерфейс в Neovim
Позволяет общаться с языковой моделью (LLM, например GPT-4) прямо в редакторе. Вводишь команду :Avante, пишешь вопросы — получаешь ответы.
2. mcp-hub — диспетчер инструментов
Фоновый процесс, который управляет подключёнными AI-сервисами. Он принимает запрос от Avante и пересылает его в нужный инструмент,
например — rails-mcp-server.
3. rails-mcp-server — адаптер для Rails
CLI-инструмент, который умеет разбирать структуру твоего Rails-проекта и отвечать на вопросы вроде:
- какие есть модели и связи между ними,
- какие маршруты настроены,
- где используется конкретный гем или библиотека,
- какие миграции есть в проекте,
- что делает конкретный контроллер и т.д.
Он не хранит глобальный контекст между сессиями и не является “памятью” в LLM-смысле — это просто аналитическая прослойка над кодом.
Как всё это работает
- Ты запускаешь
mcp-hub(фоновый процесс). - Avante через
:Avanteотправляет вопрос. mcp-hubпересылает его вrails-mcp-server.rails-mcp-serverсканирует проект, формирует ответ и отдаёт его обратно через Avante.
Что нужно для запуска
Установи
npm install -g mcp-hub
gem install rails-mcp-server
Плагин Avante.nvim добавь через lazy.nvim или любой другой менеджер плагинов:
-- ~/.config/nvim/lua/plugins/avante.lua
return {
"yetone/avante.nvim",
dependencies = {
"stevearc/dressing.nvim",
"nvim-lua/plenary.nvim",
"MunifTanjim/nui.nvim",
},
opts = {
provider = "openai",
mcp = {
enabled = true,
hub_url = "http://localhost:3001"
}
}
}
Настрой конфигурацию
Создай файл mcpservers.json в корне проекта:
{
"mcpServers": {
"rails": {
"command": "rails-mcp-server",
"args": ["--project-root", ".", "--cache-dir", ".mcp-cache"],
"env": {
"RAILS_ENV": "development",
"DATABASE_URL": "postgresql://localhost/myapp_development"
}
}
}
}
Как использовать
Примеры реальных запросов, которые имеет смысл отправлять через Avante:
Получить список моделей и связей
Какие у меня есть модели и как они связаны?
Посмотреть маршруты
Покажи API endpoint'ы
Найти использование конкретной библиотеки
Где используется Stripe в проекте?
Сгенерировать тест (если LLM умеет)
Создай тесты для PaymentService
Что важно понимать
- rails-mcp-server — это не хранилище памяти.
- Он не знает, что ты обсуждал раньше.
- Он не влияет на поведение модели напрямую — только даёт ей структурированные данные по запросу.
Вся "магия" ответа происходит в LLM — rails-mcp-server лишь предоставляет контекст из кода (и только из кода).
Итог
Эта связка позволяет спрашивать у LLM конкретные вопросы по структуре проекта, и получать точные ответы быстрее и без копания в дереве файлов. Контекст живёт в коде, не в памяти. MCP не «помнит», кто ты, но он хорошо анализирует то, что у тебя в проекте прямо сейчас.