paulburgess1357/nvim-mcp

paulburgess1357/nvim-mcp

от paulburgess1357
nvim-mcp — MCP-сервер для подключения AI-агентов к работающему Neovim через msgpack-RPC без плагинов. Агенты видят буферы, диагностику, редактируют в памяти, выполняют Vim-команды и макросы. Полезе...

nvim-mcp

PyPI

An MCP server that gives AI agents first-class access to your running Neovim session. It connects through Neovim's native msgpack-RPC socket — no plugins required.

Works with Cursor, Claude Code, Codex, OpenCode, and any MCP-compatible client.

Before you connect an agent to Neovim, please read Working safely.

What agents can do

  • See what you see — editor mode, working directory, open buffers, window layout, cursor context, folds, selections, marks, and diagnostics.
  • Edit buffers in memory — find-and-replace or full rewrites with immediate feedback and full undo support. Nothing touches disk until you save.
  • Run any Vim command:w, :e, :vsplit, macros, or anything else you could type at the command line.
  • Send keystrokes — navigate, enter insert mode, trigger mappings.
  • Query LSP diagnostics — errors, warnings, and hints across one buffer or the whole session.
  • Annotate code with highlights and virtual text — colored line highlights and inline/above/below text notes that never touch the buffer's real content.
  • Work with multiple instances — auto-discovers running sessions and connects to the right one. See multiple instances.
Инструменты были проиндексированы:
add_virtual_text

Добавляет виртуальную текстовую аннотацию в буфер Neovim. Только визуально — фактическое содержимое буфера не меняется, ничего не записывается на диск. Аннотации накапливаются: несколько вызовов суммируются. file: путь относительно текущей рабочей директории Neovim (как показано в буферах get_state). Буфер уже должен быть открыт в Neovim; иначе возвращается ошибка. line: якорная строка с нумерацией от 1. Значения за границами диапазона прижимаются к краям. text: список строк, по одной на виртуальную строку. Должен быть непустым. Если position равно "eol", разрешён ровно один элемент. position: где появляется аннотация относительно якорной строки. Одно из значений: "eol" (после конца строки), "above" (между предыдущей и якорной строками) или "below" (между якорной и следующей строками). По умолчанию "eol". color: название группы подсветки Neovim (например, "Comment", "DiagnosticError") или шестнадцатеричный цвет (например, "#7a9ad4"). По умолчанию "Comment", адаптируется к цветовой схеме пользователя. Неизвестные названия (включая голые литералы цветов вроде "Red") возвращают ошибку. Используйте для одной аннотации. Для нескольких аннотаций за один вызов используйте add_virtual_texts. Чтобы удалить весь MCP-виртуальный текст из буфера, используйте clear_virtual_texts. При успехе возвращает {added: 1}, при ошибке — {error} с сообщением.

Параметры
  • colorstring
  • filestringобязательный
  • lineintegerобязательный
  • positionstring
  • textstring[]обязательный
add_virtual_texts

Добавляет несколько виртуальных текстовых аннотаций в буферы Neovim за один вызов. Только визуально — содержимое буфера не меняется. Аннотации накладываются: при вызове добавляются новые, предыдущие не удаляются. items: список словарей. Каждый словарь требует: - file: путь относительно рабочей директории Neovim. Буфер должен быть открыт. - line: якорная строка с нумерацией от 1. Значения за границами диапазона прижимаются к границам. - text: список строк, по одной на виртуальную строку. Непустой. В позиции EOL требуется ровно один элемент. И опционально: - position: "eol" (по умолчанию), "above" или "below". - color: hex-цвет (например "#7a9ad4") или имя группы подсветки Neovim (например "Comment", "DiagnosticError"). По умолчанию "Comment". Неизвестные имена (включая цветовые литералы вроде "Red") возвращают ошибку. Используйте, когда нужно добавить сразу несколько аннотаций (возможно в разных файлах). Для одной аннотации используйте add_virtual_text. Для удаления всех MCP-виртуальных текстов из буфера используйте clear_virtual_texts. Возвращает список результатов вида {added: 1} в порядке входных данных. Вызывает ValueError, если в любом элементе отсутствует обязательный ключ. Итерация последовательная: если элемент N не проходит проверку или менеджер выдаёт ошибку, элементы 0..N-1 уже применены (вызовите clear_virtual_texts, чтобы откатить). Пример: [{"file": "foo.py", "line": 10, "text": ["this is the bug"]}, {"file": "foo.py", "line": 20, "text": ["note one", "note two"], "position": "above", "color": "DiagnosticInfo"}]

Параметры
  • itemsobject[]обязательный
clear_highlights

Удаляет все MCP-подсветки из буфера Neovim. Снимает только те подсветки, которые добавлены через highlight_range или highlight_ranges — не трогает синтаксическую подсветку, LSP-подсветки и другие плагины. Содержимое буфера не меняется. Можно вызывать, даже если подсветок нет (в любом случае возвращает {cleared: true}). file: путь относительно текущей рабочей папки Neovim (как показано в буферах get_state). Буфер уже должен быть открыт в Neovim; иначе возвращает ошибку. Используйте это, чтобы очистить подсветки после рабочего процесса с аннотациями. Чтобы добавить подсветки, используйте highlight_range или highlight_ranges.

Параметры
  • filestringобязательный
clear_virtual_texts

Удаляет все MCP виртуальные текстовые аннотации из буфера Neovim. Удаляются только аннотации, добавленные через add_virtual_text или add_virtual_texts — подсветка, LSP виртуальный текст, внутренние подсказки и аннотации других плагинов не затрагиваются. Содержимое буфера не меняется. Безопасно вызывать, даже если аннотаций нет (в любом случае возвращает {cleared: true}). file: путь относительно текущей рабочей директории Neovim (как показано в буферах get_state). Буфер уже должен быть открыт в Neovim; иначе возвращается ошибка. Используйте это для очистки после рабочего процесса с аннотациями. Для добавления аннотаций используйте add_virtual_text или add_virtual_texts.

Параметры
  • filestringобязательный
connect

Подключиться к работающему экземпляру Neovim через его Unix-сокет или TCP-адрес. Вызывайте этот инструмент перед любым другим, если агент ещё не подключён. Подключение сохраняется на всю сессию; достаточно вызвать его один раз, если только вы не хотите переключиться на другой экземпляр. Вызов без аргументов: автоматическое подключение, когда запущен ровно один экземпляр; при обнаружении нескольких экземпляров возвращает их список. Опциональный выбор (укажите не более одного): - index: выбор из перечисленных экземпляров (нумерация с 1). - socket_path: прямое подключение к известному Unix-сокету или host:port. - terminal_pid: найти экземпляр Neovim, в дереве процессов которого присутствует этот PID (удобно, когда Neovim запущен внутри конкретного терминала). Возвращает {connected, cwd, file} в случае успеха или {error} с подробностями при ошибке (например, экземпляры не найдены, таймаут подключения, неверный индекс).

Параметры
  • indexinteger | null
  • socket_pathstring | null
  • terminal_pidinteger | null
find_and_replace_buf

Находит и заменяет текст в буфере Neovim. Правка происходит в памяти и полностью отменяема — ничего не записывается на диск, пока пользователь не сохранит. file: путь относительно рабочей директории Neovim (как показано в буферах get_state). old_string: точный текст для поиска. Должен совпадать ровно один раз в буфере; возвращает ошибку, если не найден или найдено несколько совпадений. Добавьте окружающие строки, чтобы устранить неоднозначность. new_string: текст для замены. Создаёт буфер, если его ещё нет. Используйте для точечных правок. Используйте write_full_buf, когда нужно заменить содержимое всего буфера. Сначала используйте read_full_buf или read_buf_range, если нужно увидеть текущее содержимое перед правкой. Возвращает {start_line, lines_removed, lines_added, total_lines} в случае успеха, или {error} с сообщением об ошибке.

Параметры
  • filestringобязательный
  • new_stringstringобязательный
  • old_stringstringобязательный
get_all_diagnostics

Получает LSP-диагностики из всех открытых буферов в Neovim. Только чтение. Используйте для общего обзора ошибок и предупреждений по всему проекту. Используйте get_buf_diagnostics, если нужны диагностики только для конкретного файла — он точнее и возвращает меньше данных. Возвращает список {file, line, col, severity, message, source}. severity — одно из: "error", "warning", "info", "hint". Возвращает пустой список, если диагностик нет. Результат зависит от того, какие LSP-серверы подключены и какие буферы загружены в Neovim.

Параметры

Без параметров.

get_buf_diagnostics

Получает LSP-диагностику для одного буфера Neovim. Только для чтения. file: путь относительно текущей рабочей директории Neovim (как показано в буферах get_state). Буфер уже должен быть открыт в Neovim; иначе возвращает ошибку. Используйте это, когда нужна диагностика для одного конкретного файла. Для общего обзора проекта используйте get_all_diagnostics. Возвращает список из {file, line, col, severity, message, source}. severity принимает одно из значений: "error", "warning", "info", "hint". Возвращает пустой список, если у буфера нет диагностики.

Параметры
  • filestringобязательный
get_state

Полный снимок текущей сессии Neovim. Только для чтения - не изменяет состояние редактора. Используйте get_state_brief для быстрой ориентации в начале шага. Используйте этот инструмент, когда нужна полная картина: все детали окон, свёртки, метки, сводки диагностики, подсветки, виртуальный текст и настройки отступов. Возвращает: режим (normal/insert/visual и т.д.), cwd, буферы (относительные пути всех перечисленных буферов), modified_buffers, current_tab, tab_count. windows - список видимых окон (только текущая вкладка). Активное окно всегда первое, альтернативное окно (предыдущее) - второе. Каждая запись окна содержит: file (путь относительно cwd), filetype, total_lines, modified, buftype ("file" для обычных буферов, "terminal" и т.д.), line, col, indent: {expandtab, shiftwidth, tabstop}. Необязательные поля для каждого окна (присутствуют, когда применимо): - role: "active" или "alternate". - context: нумерованные строки вокруг курсора. - selection: {start_line, start_col, end_line, end_col} в визуальных режимах. - folds: список закрытых диапазонов свёрток [start, end]. - diagnostics_summary: количество {error, warning, info, hint}. - marks: список {mark, line, col} для строчных (a-z) меток буфера. - mcp_highlights: список {start_line, end_line, color} для активных подсветок. - mcp_virtual_text: список {line, position, lines, color} для активного виртуального текста.

Параметры

Без параметров.

get_state_brief

Легковесный снимок сессии Neovim для быстрой ориентации. Только для чтения — не изменяет состояние редактора. Используйте это в начале каждого хода, чтобы увидеть, над чем работает пользователь. Вместо этого используйте get_state, когда нужна полная картина: все окна, складки, метки, сводки диагностики, подсветка, виртуальный текст и настройки отступов. Возвращает: режим (normal/insert/visual и т.д.), cwd, буферы (относительные пути всех перечисленных буферов), modified_buffers и active_window: {file, filetype, total_lines, modified, buftype, line, col, context}. context — это короткий список нумерованных строк вокруг курсора. Если существует альтернативное окно, также возвращает alternate_window с теми же полями.

Параметры

Без параметров.

highlight_range

Добавляет подсветку цветной линией в буфере Neovim. Это только визуальная аннотация — содержимое буфера не меняется и на диск ничего не сохраняется. Подсветки накапливаются: при многократном вызове добавляются новые, а старые не удаляются. file: путь относительно рабочей директории Neovim (как показано в буферах get_state). Буфер уже должен быть открыт в Neovim; иначе возвращается ошибка. start_line: первая строка для подсветки (нумерация с 1, включительно). end_line: последняя строка для подсветки (нумерация с 1, включительно). Значения за границами диапазона обрезаются. Если start_line больше end_line, они меняются местами. color: шестнадцатеричный цвет (например "#3b4048") или название группы подсветки Neovim (например "Comment", "DiagnosticError"). Для групп итоговый цвет переднего плана становится цветом фона строки — подсветка подстраивается под цветовую схему пользователя. По умолчанию — "Comment". Неизвестные имена (включая литералы цвета вроде "Red") возвращают ошибку. Используйте для одной подсветки. Чтобы применить несколько подсветок за один вызов, используйте highlight_ranges. Чтобы убрать все подсветки с буфера, используйте clear_highlights. Возвращает {highlighted} с количеством подсвеченных строк или {error} с сообщением в случае ошибки.

Параметры
  • colorstring
  • end_lineintegerобязательный
  • filestringобязательный
  • start_lineintegerобязательный
highlight_ranges

Добавляет цветную подсветку строк в один или несколько буферов Neovim за один вызов. Это только визуальная аннотация, она не изменяет содержимое буфера и не сохраняется на диск. Подсветки накапливаются: каждый вызов добавляет новые подсветки, не удаляя предыдущие. highlights: список словарей. Каждый словарь должен содержать: - file: путь относительно текущей рабочей директории Neovim (как показано в get_state). Буфер должен быть открыт в Neovim. - start_line: первая строка (нумерация с 1, включительно). - end_line: последняя строка (нумерация с 1, включительно). - color (необязательно): hex-цвет (например "#5f3a3a") или имя группы подсветки Neovim (например "Comment", "DiagnosticError"). Для групп цвет переднего плана становится фоном строки. По умолчанию "Comment". Неизвестные имена (включая строковые литералы цвета, например "Red") возвращают ошибку. Строки за пределами диапазона обрезаются до границ. Используйте это, когда нужно подсветить несколько диапазонов сразу (возможно, в разных файлах). Для одного диапазона используйте highlight_range. Чтобы удалить все подсветки из буфера, используйте clear_highlights. Возвращает список результатов {highlighted} в том же порядке, что и входные данные. Вызывает ошибку, если у любого элемента отсутствуют обязательные ключи. Пример: [{"file": "foo.py", "start_line": 1, "end_line": 3, "color": "DiagnosticError"}, {"file": "foo.py", "start_line": 10, "end_line": 12}]

Параметры
  • highlightsobject[]обязательный
read_buf_range

Читает указанный диапазон строк из буфера Neovim. Только чтение; читает из оперативной памяти Neovim, содержимое может отличаться от файла на диске, если есть несохранённые изменения. file: путь относительно текущей рабочей директории Neovim (как указано в get_state buffers). Буфер уже должен быть открыт в Neovim; иначе возвращает ошибку. start_line: первая строка для чтения (нумерация с 1, включительно). end_line: последняя строка для чтения (нумерация с 1, включительно). Значения за пределами диапазона обрезаются по границам буфера. Если start_line > end_line, они автоматически меняются местами. Используйте это, когда вам нужна только часть файла. Используйте read_full_buf, если нужен весь буфер. Возвращает {lines, total_lines}. lines — список строк, каждая с префиксом — номером строки начиная с 1 (например, "10: some code").

Параметры
  • end_lineintegerобязательный
  • filestringобязательный
  • start_lineintegerобязательный
read_full_buf

Читает полное содержимое буфера Neovim. Только чтение; читает из оперативной памяти Neovim, которая может отличаться от файла на диске, если есть несохранённые изменения. file: путь относительно рабочей директории Neovim (как показано в get_state buffers). Буфер должен быть открыт в Neovim; иначе возвращает ошибку. Используйте эту функцию, чтобы увидеть весь файл. Если нужен только определённый участок, используйте read_buf_range — он возвращает меньше данных. Возвращает {lines, total_lines}. lines — список строк, каждая с префиксом номера строки, начиная с 1 (например, "1: first line").

Параметры
  • filestringобязательный
send_command

Выполняет одну или несколько команд Vim ex в Neovim. Это инструмент изменения состояния — команды могут менять буферы, файлы на диске, окна и состояние редактора. command: одна строка команды или список строк, без ведущего символа ':'. Например: "w", "e src/main.py", "42", "wincmd v", "lua vim.print(...)" или ["wincmd p", "e file.py", "wincmd p"]. Используйте для операций редактора, под которые нет отдельного инструмента (например, сохранение, открытие файлов, разделение окон, настройка опций). Если нужны движения в нормальном режиме или последовательности операторов — используйте send_keys. Для редактирования текста буфера используйте find_and_replace_buf или write_full_buf — они безопаснее и поддерживают отмену. Возвращает {output} с захваченным выводом команды или {error}, если команда завершилась ошибкой. При передаче списка возвращает список результатов в том же порядке; выполнение останавливается на первой ошибке.

Параметры
  • commandstring | string[]обязательный
send_keys

Отправляет сырые нажатия клавиш в Neovim так, как если бы их вводил пользователь. Это мутирующий инструмент — клавиши могут изменять буферы, переключать режимы и вызывать действия редактора. keys: строка нажатий клавиш в формате Vim. Esc добавляется автоматически, так что ввод всегда начинается в нормальном режиме. Многомодовые последовательности нужно отправлять одним вызовом (например, "17GVG", а не "17GV" и потом "G"). Для специальных клавиш используй нотацию Vim (например, "<CR>", "<C-w>v", "<Tab>"). Используй этот инструмент для движений в нормальном режиме, выделений в визуальном режиме или последовательностей операторов. Для Ex-команд используй send_command, а для правки текста — find_and_replace_buf или write_full_buf: они безопаснее и возвращают структурированный результат. Возвращает {sent} с подтверждением, какие клавиши были отправлены. Клавиши отправляются по принципу «забыл и полетело»; ошибки от последующих действий Vim в возвращаемое значение не попадают.

Параметры
  • keysstringобязательный
send_to_terminal

Печатает текст в работающую программу буфера терминала (обычно оболочку), записывая его в канал задания. Это инструмент изменения - текст попадает в stdin программы, как если бы его ввели с клавиатуры, но не выполняется, если только submit не равен true. text: текст для отправки, в сыром виде. В большинстве оболочек встроенный перевод строки действует как нажатие Enter, поэтому многострочный текст может выполняться строка за строкой. Когда submit равен false, завершающие переводы строк удаляются, чтобы ничего не выполнилось случайно. terminal: терминал, в который нужно направить текст - номер буфера или имя буфера, как указано в terminals в get_state / get_state_brief. Сначала ищется точное совпадение имени, затем по уникальной подстроке. Можно опустить, когда существует ровно один терминал; при нескольких открытых терминалах пропуск этого параметра возвращает ошибку с их списком. submit: false (по умолчанию) оставляет текст в приглашении для просмотра пользователем и нажатия Enter. true добавляет возврат каретки, так что программа выполняет текст немедленно. НИКОГДА не передавайте submit=true, если только пользователь явно не попросил выполнить команду - «put», «paste», «type» или «prepare» команды всегда означают submit=false. Самостоятельное предложение команды не является разрешением на её выполнение. Если сомневаетесь, используйте submit=false и дайте пользователю нажать Enter. Используйте этот инструмент всякий раз, когда текст нужно поместить в терминал. Он работает независимо от фокуса, режима или видимости и никогда не перемещает курсор пользователя - в отличие от send_keys, который требует установки фокуса на терминал и переключения режимов. Буферы терминала нельзя редактировать инструментами для буферов. Возвращает {sent, terminal, buf, submitted} в случае успеха - sent содержит количество фактически записанных байт. В случае неудачи возвращает {error}, включая список terminals, если целевой терминал отсутствует или неоднозначен.

Параметры
  • submitboolean
  • terminalstring | integer | null
  • textstringобязательный
write_full_buf

Заменяет всё содержимое буфера Neovim. Правка происходит в памяти и полностью отменяема: ничего не записывается на диск, пока пользователь не сохранит. file: путь относительно cwd Neovim (как показано в буферах get_state). content: полный новый текст для этого буфера. Создаёт буфер, если его ещё нет. Используйте это, когда нужно переписать весь файл. Вместо этого используйте find_and_replace_buf для точечных правок, которые сохраняют окружающий контент. Возвращает {total_lines}: количество строк.

Параметры
  • contentstringобязательный
  • filestringобязательный

Похожие MCP-сервера

agentrpc/agentrpc

agentrpc/agentrpc

AgentRPC — универсальный RPC слой, который позволяет ИИ-агентам через MCP сервер вызывать функции на любом языке в приватных сетях, Kubernetes и облаках. Сервер регистрирует и отслеживает инструменты, обеспечивая отказоустойчивость и наблюдаемость. Полезен разработчикам, строящим кросс-сетевые аг...

TypeScript135
agenticempire/axint

agenticempire/axint

Axint - MCP сервер для AI-агентов, работающих с Apple-экосистемой. Он компилирует описания App Intents и SwiftUI в валидный Swift, проверяет Apple-специфичные правила и выдает repair packet для быстрого исправления ошибок. Полезен разработчикам и AI-агентам для создания нативных Apple-компонентов.

TypeScript17
varun29ankuS/shodh-memory

varun29ankuS/shodh-memory

Shodh-Memory - MCP сервер для персистентной памяти AI-агентов и роботов. Запоминает суть, забывает лишнее и обучается без LLM. Использует локальные эмбеддинги и граф знаний. Работает офлайн, один б...

Rust280
pzfreo/build123d-mcp

pzfreo/build123d-mcp

MCP сервер для 3D CAD на build123d, позволяющий AI-агентам создавать, инспектировать и итерировать геометрию. Закрывает цикл обратной связи: AI видит результат, а не пишет вслепую. Полезен инженера...

Python85
mroops0111/openapi-mcp-gateway

mroops0111/openapi-mcp-gateway

MCP сервер для подключения OpenAPI (Swagger) спецификаций и FastAPI приложений. Поддерживает несколько API в одном процессе, каждый со своей аутентификацией (bearer, OAuth2, API key) и транспортами (HTTP, SSE, stdio). Полезен разработчикам AI-агентов и интеграций.

Python6
valado/pantheon-mcp

valado/pantheon-mcp

MCP сервер Pantheon-MCP предоставляет по запросу инструкции для 42+ специализированных AI-агентов. Инструменты list_agents, get_agent и search_agents помогут найти агента по категориям: бизнес, продукт, технологии. Полезно разработчикам агентных систем.

TypeScript8
© Каталог MCP, 2026. Все права защищены.
Проект не аффилирован с Anthropic и любыми упомянутыми продуктами.
Все названия и торговые марки принадлежат их владельцам.
Контакты для связи: hi@mcp-katalog.ru

Лука Никитин