Skip to main content

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-смысле — это просто аналитическая прослойка над кодом.


Как всё это работает

  1. Ты запускаешь mcp-hub (фоновый процесс).
  2. Avante через :Avante отправляет вопрос.
  3. mcp-hub пересылает его в rails-mcp-server.
  4. 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 не «помнит», кто ты, но он хорошо анализирует то, что у тебя в проекте прямо сейчас.