MCP Hub
MCP Hub is an extension that integrates the Model Context Protocol (MCP) with CodeCompanion. It allows you to leverage MCP tools and resources directly within your chat interactions.
Features
- Access MCP tools via the
@mcp
tool in the chat buffer. - Utilize MCP resources as context variables using the
#
prefix (e.g.,#resource_name
). - Execute MCP prompts directly using
/mcp:prompt_name
slash commands. - Receive real-time updates in CodeCompanion when MCP servers change.
Installation
First, install the MCP Hub Neovim plugin:
{
"ravitemer/mcphub.nvim",
build = "npm install -g mcp-hub@latest",
config = function()
require("mcphub").setup()
end
}
For detailed MCP Hub configuration options, please refer to the documentation.
Next, register MCP Hub as an extension in your CodeCompanion configuration:
require("codecompanion").setup({
extensions = {
mcphub = {
callback = "mcphub.extensions.codecompanion",
opts = {
show_result_in_chat = true, -- Show mcp tool results in chat
make_vars = true, -- Convert resources to #variables
make_slash_commands = true, -- Add prompts as /slash commands
}
}
}
})
Usage
Once configured, you can interact with MCP Hub within the CodeCompanion chat buffer:
- Tool Access: Type
@mcp
to add available MCP servers to the system prompt, enabling the LLM to use registered MCP tools. - Resources as Variables: If
make_vars = true
, MCP resources become available as variables prefixed with#
. You can include these in your prompts (e.g.,Summarize the issues in #mcp:lsp:get_diagnostics
):
Example: Accessing LSP diagnostics:
Prompts as Slash Commands: If make_slash_commands = true
, MCP prompts are available as slash commands (e.g., /mcp:prompt_name
). Arguments are handled via vim.ui.input
.
Example: Using an MCP prompt via slash command:
Auto-approvals
MCP tool requests can be automatically approved, bypassing the confirmation prompt, if any of the following are true:
- MCP Hub configuration:
require("mcphub").setup({
config = { auto_approve = true }
})
- Global MCP Hub variable:
vim.g.mcphub_auto_approve = true
- CodeCompanion auto tool mode:
vim.g.codecompanion_auto_tool_mode = true
(toggled viagta
in the chat buffer)