3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Neovim経由でMCPを使う

Last updated at Posted at 2025-05-08

はじめに

最近よく聞くMCPですが、Neovimでも使えるようです。
今回はmcphubというプラグインを使用します。

前提

  • Neovimと生成AIを統合するプラグインで主流なものとしてavantecodecompanionの2つがありますが、今回はavanteを使った手順を紹介します

  • プラグインマネージャはlazyを使用しますが、他のプラグインを使っている方は適宜置き換えてください

MCPサーバを利用する場合、AIが意図しないリソースへアクセスする場合があります。
ツール利用の自動承認をOFFにする(今回紹介するプラグインではデフォルトでOFFになっています)などして、業務コードなどの秘匿情報は各自の責任で保護してください。

インストール手順

1. avanteのインストール

mcphubはチャットツールがないと使えないので、まずはavanteをインストールします。
公式のインストール手順をコピペします。

{
  "yetone/avante.nvim",
  event = "VeryLazy",
  version = false, -- Never set this value to "*"! Never!
  opts = {
    -- add any opts here
    -- for example
    provider = "openai",
    openai = {
      endpoint = "https://api.openai.com/v1",
      model = "gpt-4o", -- your desired model (or use gpt-4o, etc.)
      timeout = 30000, -- Timeout in milliseconds, increase this for reasoning models
      temperature = 0,
      max_completion_tokens = 8192, -- Increase this to include reasoning tokens (for reasoning models)
      --reasoning_effort = "medium", -- low|medium|high, only used for reasoning models
    },
  },
  -- if you want to build from source then do `make BUILD_FROM_SOURCE=true`
  build = "make",
  -- build = "powershell -ExecutionPolicy Bypass -File Build.ps1 -BuildFromSource false" -- for windows
  dependencies = {
    "nvim-treesitter/nvim-treesitter",
    "stevearc/dressing.nvim",
    "nvim-lua/plenary.nvim",
    "MunifTanjim/nui.nvim",
    --- The below dependencies are optional,
    "echasnovski/mini.pick", -- for file_selector provider mini.pick
    "nvim-telescope/telescope.nvim", -- for file_selector provider telescope
    "hrsh7th/nvim-cmp", -- autocompletion for avante commands and mentions
    "ibhagwan/fzf-lua", -- for file_selector provider fzf
    "nvim-tree/nvim-web-devicons", -- or echasnovski/mini.icons
    "zbirenbaum/copilot.lua", -- for providers='copilot'
    {
      -- support for image pasting
      "HakonHarnes/img-clip.nvim",
      event = "VeryLazy",
      opts = {
        -- recommended settings
        default = {
          embed_image_as_base64 = false,
          prompt_for_file_name = false,
          drag_and_drop = {
            insert_mode = true,
          },
          -- required for Windows users
          use_absolute_path = true,
        },
      },
    },
    {
      -- Make sure to set this up properly if you have lazy=true
      'MeanderingProgrammer/render-markdown.nvim',
      opts = {
        file_types = { "markdown", "Avante" },
      },
      ft = { "markdown", "Avante" },
    },
  },
}

その後、接続するプロバイダによってシェルに環境変数を設定します。
↓公式から引用

For Claude:

export ANTHROPIC_API_KEY=your-api-key

For OpenAI:

export OPENAI_API_KEY=your-api-key

For Azure OpenAI:

export AZURE_OPENAI_API_KEY=your-api-key

For Amazon Bedrock:

export BEDROCK_KEYS=aws_access_key_id,aws_secret_access_key,aws_region[,aws_session_token]

Note: The aws_session_token is optional and only needed when using temporary AWS credentials

自分は.zshrcで自動的に設定するようにしています。

if [ -f "$HOME/openai_api_key" ]; then
    export OPENAI_API_KEY=$(cat "$HOME/openai_api_key")
fi

環境変数の設定が済んだら、Neovimからavanteを起動します。
デフォルトのキーバインドは<leader>aaです。

こんな感じで右側にプロンプトが表示されれば成功です。
スクリーンショット 2025-05-07 18.14.34.png

avante単体でも触ってて面白いと思うので、mcphubのインストールに進む前に色々触ってみてください。

2. mcphubのインストール

avanteを使えるようになったので、次にmcphubをインストールします。

mcphubをインストールする前に、以下をターミナルで実行しておいてください。
mcphubが参照するファイルが存在しない場合、Neovim実行時エラーになるので事前に手動で作成します。

mkdir -p ~/.config/mcphub
echo '{ "mcpServers": {} }' > ~/.config/mcphub/servers.json

ではプラグインのインストールです。
公式のインストール手順をコピペします。

{
    "ravitemer/mcphub.nvim",
    dependencies = {
      "nvim-lua/plenary.nvim",  -- Required for Job and HTTP requests
    },
    -- uncomment the following line to load hub lazily
    --cmd = "MCPHub",  -- lazy load 
    build = "npm install -g mcp-hub@latest",  -- Installs required mcp-hub npm module
    -- uncomment this if you don't want mcp-hub to be available globally or can't use -g
    -- build = "bundled_build.lua",  -- Use this and set use_bundled_binary = true in opts  (see Advanced configuration)
    config = function()
      require("mcphub").setup()
    end,
    keys = {
		{ "<leader>m", "<cmd>MCPHub<cr>", desc = "Open MCPHub" },
	},
}

追加で自分は<leader>mでmcphubのUIを起動するキーバインドを組んでいます。
お好みに変更してください。

次に、avanteとmcphubを統合するためにavante側の設定を書き換えます。
以下をコピペします。

{
  "yetone/avante.nvim",
  event = "VeryLazy",
  version = false, -- Never set this value to "*"! Never!
  opts = {
    -- add any opts here
    -- for example
    provider = "openai",
    openai = {
      endpoint = "https://api.openai.com/v1",
      model = "gpt-4o", -- your desired model (or use gpt-4o, etc.)
      timeout = 30000, -- Timeout in milliseconds, increase this for reasoning models
      temperature = 0,
      max_completion_tokens = 8192, -- Increase this to include reasoning tokens (for reasoning models)
      --reasoning_effort = "medium", -- low|medium|high, only used for reasoning models
    },
	-- system_prompt as function ensures LLM always has latest MCP server state
	-- This is evaluated for every message, even in existing chats
	system_prompt = function()
		local hub = require("mcphub").get_hub_instance()
		return hub:get_active_servers_prompt()
	end,
	-- Using function prevents requiring mcphub before it's loaded
	custom_tools = function()
		return {
			require("mcphub.extensions.avante").mcp_tool(),
		}
	end,
 	disabled_tools = {
 		"list_files",
 		"search_files",
 		"read_file",
 		"create_file",
 		"rename_file",
 		"delete_file",
 		"create_dir",
 		"rename_dir",
 		"delete_dir",
 		"bash",
 	},
  },
  -- if you want to build from source then do `make BUILD_FROM_SOURCE=true`
  build = "make",
  -- build = "powershell -ExecutionPolicy Bypass -File Build.ps1 -BuildFromSource false" -- for windows
  dependencies = {
  	"ravitemer/mcphub.nvim",
    "nvim-treesitter/nvim-treesitter",
    "stevearc/dressing.nvim",
    "nvim-lua/plenary.nvim",
    "MunifTanjim/nui.nvim",
    --- The below dependencies are optional,
    "echasnovski/mini.pick", -- for file_selector provider mini.pick
    "nvim-telescope/telescope.nvim", -- for file_selector provider telescope
    "hrsh7th/nvim-cmp", -- autocompletion for avante commands and mentions
    "ibhagwan/fzf-lua", -- for file_selector provider fzf
    "nvim-tree/nvim-web-devicons", -- or echasnovski/mini.icons
    "zbirenbaum/copilot.lua", -- for providers='copilot'
    {
      -- support for image pasting
      "HakonHarnes/img-clip.nvim",
      event = "VeryLazy",
      opts = {
        -- recommended settings
        default = {
          embed_image_as_base64 = false,
          prompt_for_file_name = false,
          drag_and_drop = {
            insert_mode = true,
          },
          -- required for Windows users
          use_absolute_path = true,
        },
      },
    },
    {
      -- Make sure to set this up properly if you have lazy=true
      'MeanderingProgrammer/render-markdown.nvim',
      opts = {
        file_types = { "markdown", "Avante" },
      },
      ft = { "markdown", "Avante" },
    },
  },
}

mcphubのインストールが完了したら、:MCPHubを実行します。
keysでキーバインドを設定している方はキーバインドで実行しても問題ないです。

こんな感じになったら成功です:tada:
スクリーンショット 2025-05-07 18.47.05.png

使ってみる

サーバのインストール

早速mcphub経由でmcpサーバをインストールしてみます。
今回はfile-systemGit Toolsのサーバをインストールしてみます。

mcphubのUIでCを押して設定ファイルを開いた後、eを押して編集に入ります。
以下をコピペします。フォルダ指定のところだけ書き換えてください。

{
  "mcpServers": {
    "file-system": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/path/to/allowed/dir"
      ]
    },
    "git-tools": {
      "command": "uvx",
      "displayed": false,
      "args": ["mcp-server-git"]
    }
  }
}

各サーバのインストール過程でnpxuvxを使うので、用意してください。

その後、mcphubのUIでHを押してホームに戻りRで再起動します。

再起動後、このようになっていれば成功です!
スクリーンショット 2025-05-07 19.26.28.png

インストールできるサーバ一覧はmcphubのUIでMを押すとみれます。

本来サーバをインストールするときはavante経由でインストールできるのですが、実行時すると~/.config/mcphub/servers.jsonの編集権限がなく実行できなかったので今回は自動インストールにしています。

スクリーンショット 2025-05-07 19.29.22.png

チャットで指示する

適当なプロジェクトをNeovimで開いて、avanteのプロンプトで修正指示やコミットの指示を投げてみてください。
AIがツールを使ってファイル修正やコミットをしてくれると思います。

最後に

Neovimがまだまだ現役で活躍してくれそうで嬉しいです!

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?