vim-mcp-server
Servidor MCP para controlar o Vim
Documentação
vim-mcp-server
Um servidor MCP (Model Context Protocol) embutido no Vim. Ele expõe ferramentas via HTTP que permitem que clientes compatíveis com MCP — como agentes de codificação de IA — leiam e modifiquem buffers, movam o cursor, recuperem seleções visuais, gerenciem listas de quickfix e de localização, abram diffs lado a lado (incluindo diffs de git calculados dentro do Vim), leiam o histórico de mensagens e executem comandos Ex.
Atualmente, uso isso principalmente para fazer o agente me mostrar arquivos/linhas no Vim. Às vezes, uso para mostrar regiões selecionadas ao agente.
Requisitos
- Vim compilado com
+python3
Instalação
Use seu gerenciador de plugins preferido.
vim-plug
Plug 'breggles/vim-mcp-server'
Vundle
Plugin 'breggles/vim-mcp-server'
Manual
Clone o repositório no diretório de pacotes do seu Vim:
git clone https://github.com/breggles/vim-mcp-server.git \
~/.vim/pack/plugins/start/vim-mcp-server
Uso
Iniciar o servidor
No Vim, execute:
:McpServerStart
Inicie o servidor automaticamente ao abrir o Vim adicionando isto ao seu vimrc:
let g:mcp_server_autostart = 1
Configuração do Cliente MCP
Aponte seu cliente MCP para http://127.0.0.1:8765/mcp (ou qualquer porta que você
escolher).
Por exemplo, para opencode, adicione o servidor ao seu opencode.jsonc:
"mcp": {
"vim": {
"type": "remote",
"url": "http://localhost:8765/mcp",
"enabled": true
}
}
Comandos
| Comando | Descrição |
|---|---|
:McpServerStart [port] | Iniciar o servidor (porta padrão 8765) |
:McpServerStop | Parar o servidor |
:McpServerStatus | Exibir o status do servidor e a URL |
Opções
| Variável | Padrão | Descrição |
|---|---|---|
g:mcp_server_port | 8765 | Porta em que o servidor escuta |
g:mcp_server_autostart | 0 | Iniciar o servidor automaticamente no VimEnter |
g:mcp_server_allow_execute | 0 | Habilitar a ferramenta execute_command |
g:mcp_server_allow_save | 0 | Habilitar a ferramenta save_buffer |
g:mcp_server_allow_edit | 0 | Habilitar a ferramenta edit_buffer |
Ferramentas
O servidor expõe as seguintes ferramentas aos clientes MCP:
| Ferramenta | Descrição |
|---|---|
list_buffers | Listar todos os buffers abertos |
get_buffer | Ler o conteúdo do buffer (opcionalmente um intervalo de linhas) |
edit_buffer | Substituir, inserir ou excluir linhas em um buffer |
open_file | Abrir um arquivo via :edit |
save_buffer | Salvar um buffer via :write (opt-in, veja acima) |
close_buffer | Fechar um buffer via :bdelete |
get_cursor | Obter a posição atual do cursor |
set_cursor | Mover o cursor para uma linha e coluna |
get_visual_selection | Obter a seleção visual atual, se houver |
execute_command | Executar um comando Ex arbitrário (opt-in, veja acima) |
get_quickfix_list | Obter as entradas atuais da lista de quickfix |
set_quickfix_list | Definir a lista de quickfix |
get_location_list | Obter a lista de localização da janela atual |
set_location_list | Definir a lista de localização da janela atual |
get_messages | Obter o histórico de mensagens do Vim (saída de :messages) |
show_diff | Abrir uma visualização de diff lado a lado em uma nova aba (arquivos ou conteúdo) |
show_git_diff | Abrir um diff de git lado a lado em uma nova aba; o git calcula ambos os lados dentro do Vim |
Quando uma ferramenta aceita um argumento de buffer, ele pode ser especificado por número
(buffer_id) ou por caminho de arquivo (buffer_path). Quando ambos são omitidos, o
buffer atual é usado.
Modo de Plano do OpenCode
Por padrão, o modo de plano do OpenCode desativa todas as ferramentas MCP. Para permitir ferramentas
vim somente leitura no modo de plano, adicione o seguinte ao seu opencode.jsonc:
{
"agent": {
"plan": {
"tools": {
"vim_*": false,
"vim_list_buffers": true,
"vim_get_buffer": true,
"vim_get_cursor": true,
"vim_get_visual_selection": true,
"vim_open_file": true,
"vim_set_cursor": true,
"vim_get_quickfix_list": true,
"vim_set_quickfix_list": true,
"vim_get_location_list": true,
"vim_set_location_list": true,
"vim_get_messages": true,
"vim_show_diff": true,
"vim_show_git_diff": true
}
}
}
}
Isso desativa todas as ferramentas vim_* primeiro e depois reativa as específicas. Ajuste
a lista conforme seu fluxo de trabalho.
Desenvolvimento
Para trabalhar no plugin sem instalá-lo, clone o repositório e adicione-o ao caminho de runtime do Vim:
set rtp+=~/path/to/vim-mcp-server
Adicione isto ao seu vimrc ou execute manualmente. As alterações entram em vigor na próxima vez
que o Vim for iniciado.
Gere as tags de ajuda com:
:helptags ~/path/to/vim-mcp-server/doc
Licença
MIT