Neovim MCP Server

Conecta qualquer cliente MCP ao editor Neovim para integração e controle contínuos.

Documentação

Servidor MCP do Neovim

Conecte o Claude Desktop (ou qualquer cliente do Model Context Protocol) ao Neovim usando MCP e a biblioteca oficial neovim/node-client JavaScript. Este servidor aproveita os comandos nativos de edição de texto e fluxos de trabalho do Vim, que o Claude já entende, para criar uma camada leve de assistência de texto para código ou uso geral com IA.

mcp-neovim-server MCP server

Recursos

  • Conecta-se à sua instância do nvim se você expor um arquivo de socket, por exemplo --listen /tmp/nvim, ao iniciar o nvim
  • Visualiza seus buffers atuais e gerencia a alternância de buffers
  • Obtém localização do cursor, modo, nome do arquivo, marcas, registradores e seleções visuais
  • Executa comandos do vim e, opcionalmente, comandos de shell através do vim
  • Pode fazer edições usando modos insert, replace ou replaceAll
  • Funcionalidade de busca e substituição com suporte a regex
  • Busca grep em todo o projeto com integração ao quickfix
  • Gerenciamento abrangente de janelas
  • Monitoramento de saúde e diagnóstico de conexão

API

Recursos

  • nvim://session: Sessão atual do editor de texto neovim
  • nvim://buffers: Lista de todos os buffers abertos na sessão atual do Neovim com metadados incluindo status de modificação, sintaxe e IDs de janela

Ferramentas

Ferramentas Principais

  • vim_buffer
    • Obtém o conteúdo do buffer com números de linha (suporta parâmetro de nome de arquivo)
    • Entrada filename (string, opcional) - Obtém buffer específico por nome de arquivo
    • Retorna linhas numeradas com o conteúdo do buffer
  • vim_command
    • Envia um comando ao VIM para navegação, edição pontual e exclusão de linhas
    • Entrada command (string)
    • Executa comandos do vim com nvim.replaceTermcodes. Vários comandos funcionam com quebras de linha
    • Comandos de shell suportados com prefixo ! quando ALLOW_SHELL_COMMANDS=true
    • Em caso de erro, o conteúdo de 'nvim:errmsg' é retornado
  • vim_status
    • Obtém status abrangente do Neovim
    • Retorna posição do cursor, modo, nome do arquivo, seleção visual com detecção aprimorada, layout da janela, aba atual, marcas, registradores, diretório de trabalho, informações do cliente LSP e detecção de plugins
    • Relatório aprimorado de seleção visual: detecta o tipo de modo visual (caractere/linha/bloco), fornece texto de seleção preciso, posições inicial/final e últimas marcas de seleção visual
  • vim_edit
    • Edita linhas usando modos insert, replace ou replaceAll
    • Entrada startLine (número), mode ("insert" | "replace" | "replaceAll"), lines (string)
    • insert: insere linhas em startLine
    • replace: substitui linhas a partir de startLine
    • replaceAll: substitui todo o conteúdo do buffer
  • vim_window
    • Manipula janelas do Neovim (split, vsplit, close, navigate)
    • Entrada command (string: "split", "vsplit", "only", "close", "wincmd h/j/k/l")
  • vim_mark
    • Define marcas nomeadas em posições específicas
    • Entrada mark (string: a-z), line (número), column (número)
  • vim_register
    • Define o conteúdo dos registradores
    • Entrada register (string: a-z ou "), content (string)
  • vim_visual
    • Cria seleções em modo visual
    • Entrada startLine (número), startColumn (número), endLine (número), endColumn (número)

Gerenciamento Aprimorado de Buffers

  • vim_buffer_switch
    • Alterna entre buffers por nome ou número
    • Entrada identifier (string | número) - Nome ou número do buffer
  • vim_buffer_save
    • Salva o buffer atual ou salva em um nome de arquivo específico
    • Entrada filename (string, opcional) - Salvar em arquivo específico
  • vim_file_open
    • Abre arquivos em novos buffers
    • Entrada filename (string) - Arquivo a ser aberto

Busca e Substituição

  • vim_search
    • Busca dentro do buffer atual com suporte a regex
    • Entrada pattern (string), ignoreCase (booleano, opcional), wholeWord (booleano, opcional)
  • vim_search_replace
    • Localizar e substituir com opções avançadas
    • Entrada pattern (string), replacement (string), global (booleano, opcional), ignoreCase (booleano, opcional), confirm (booleano, opcional)
  • vim_grep
    • Busca em todo o projeto usando vimgrep com lista quickfix
    • Entrada pattern (string), filePattern (string, opcional) - Padrão de arquivo para busca

Ferramentas Avançadas de Fluxo de Trabalho

  • vim_macro
    • Grava, interrompe e reproduz macros do Vim
    • Entrada action ("record" | "stop" | "play"), register (string, a-z), count (número, opcional)
  • vim_tab
    • Gerenciamento completo de abas
    • Entrada action ("new" | "close" | "next" | "prev" | "first" | "last" | "list"), filename (string, opcional)
  • vim_fold
    • Operações de dobramento de código
    • Entrada action ("create" | "open" | "close" | "toggle" | "openall" | "closeall" | "delete"), startLine/endLine (números, para create)
  • vim_jump
    • Navegação pela lista de saltos
    • Entrada direction ("back" | "forward" | "list")

Ferramentas de Sistema

  • vim_health
    • Verifica a saúde da conexão do Neovim e o status do socket

Usando este conjunto abrangente de 19 ferramentas, o Claude pode examinar sua sessão do neovim, navegar por buffers, realizar buscas, fazer edições, gravar macros, gerenciar abas e dobras, e lidar com seu fluxo de trabalho completo de desenvolvimento usando recursos padrão do Neovim.

Prompts

  • neovim_workflow: Obtém ajuda contextual e orientação para fluxos de trabalho comuns do Neovim, incluindo edição, navegação, busca, gerenciamento de buffers, operações de janela e uso de macros. Fornece instruções passo a passo para realizar tarefas com as ferramentas MCP disponíveis.

Tratamento de Erros

O servidor implementa tratamento abrangente de erros com classes de erro personalizadas e respostas de erro consistentes:

  • NeovimConnectionError: Falhas de conexão de socket com mensagens detalhadas
  • NeovimCommandError: Falhas de execução de comandos com contexto do comando
  • NeovimValidationError: Falhas de validação de entrada

Novo na v0.5.2: Todas as ferramentas agora incluem tratamento robusto de erros try-catch que retorna mensagens de erro significativas no formato MCP adequado. Os recursos incluem monitoramento de saúde da conexão, propagação graciosa de erros e mensagens de erro acionáveis para ajudar a diagnosticar problemas.

Limitações

  • Pode não interagir bem com configurações ou plugins complexos do neovim
  • A execução de comandos de shell está desabilitada por padrão por segurança
  • Requer conexão de socket - não funcionará com vim padrão

Configuração

Variáveis de Ambiente

  • ALLOW_SHELL_COMMANDS: Defina como 'true' para habilitar a execução de comandos de shell (por exemplo, !ls). O padrão é false por segurança.
  • NVIM_SOCKET_PATH: Defina como o caminho do socket do seu Neovim. O padrão é '/tmp/nvim' se não for especificado.

Instalação

Opção 1: Pacote DXT (Recomendado)

  1. Baixe o arquivo .dxt mais recente em Releases
  2. Arraste o arquivo para o Claude Desktop

Opção 2: Instalação Manual

Adicione isto ao seu claude_desktop_config.json:

{
  "mcpServers": {
    "MCP Neovim Server": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-neovim-server"
      ],
      "env": {
        "ALLOW_SHELL_COMMANDS": "true",
        "NVIM_SOCKET_PATH": "/tmp/nvim"
      }
    }
  }
}

Licença

Este servidor MCP é licenciado sob a Licença MIT. Isso significa que você é livre para usar, modificar e distribuir o software, sujeito aos termos e condições da Licença MIT. Para mais detalhes, consulte o arquivo LICENSE no repositório do projeto.