项目简介

MCP Hub for Neovim (mcphub.nvim) 是一款 Neovim 插件,旨在为 Neovim 用户提供便捷的 MCP 服务器管理和集成体验。它允许用户在 Neovim 中集中配置、管理和使用各种 MCP 服务器,通过直观的用户界面和编程 API,轻松访问 MCP 服务器提供的工具、资源和 Prompt 功能,从而增强 Neovim 在 LLM 应用开发和集成方面的能力。

主要功能点

  • 集中化管理 MCP 服务器: 通过统一的配置文件管理多个 MCP 服务器,方便启用、禁用、启动和停止服务器,并持久化服务器状态。
  • 直观的用户界面: 提供 ':MCPHub' 命令打开用户界面,方便用户浏览、安装、测试和管理 MCP 服务器及其提供的工具和资源。
  • 市场集成: 允许用户浏览 MCP 服务器市场,查看服务器详情、文档和安装指南,一键安装服务器。
  • 交互式测试: 提供工具和资源的实时测试界面,方便用户在 Neovim 中直接测试 MCP 服务器的功能。
  • API 访问: 提供 Lua API,允许其他 Neovim 插件或用户自定义脚本通过编程方式调用 MCP 服务器的工具和访问资源。
  • 扩展性: 提供扩展接口,方便与其他 Neovim 聊天插件(如 CodeCompanion, Avante)集成,在聊天界面中使用 MCP 服务器的功能。

安装步骤

  1. 确保环境:

    • Neovim 版本 >= 0.8.0
    • Node.js 版本 >= 18.0.0
    • 安装 plenary.nvim Neovim 插件 (通常作为依赖自动安装)
  2. 使用插件管理器安装: 以 lazy.nvim 为例,在你的 Neovim 插件配置文件中添加以下配置:

    {
        "ravitemer/mcphub.nvim",
        dependencies = {
            "nvim-lua/plenary.nvim",
        },
        build = "npm install -g mcp-hub@latest", -- 安装 mcp-hub npm 模块
        config = function()
            require("mcphub").setup({
                port = 3000,  -- MCP Hub 服务器端口
                config = vim.fn.expand("~/mcpservers.json"),  -- MCP 服务器配置文件路径(绝对路径)
            })
        end
    }
    • 运行 ':Lazy sync' 或你的插件管理器对应的命令来安装插件。
    • 'build = "npm install -g mcp-hub@latest"' 会在插件安装时自动安装 'mcp-hub' npm 包,这是 MCP Hub Neovim 插件的后端服务。
  3. 配置 MCP 服务器:

    创建或编辑 'config' 配置项指定的 JSON 配置文件(例如 '~/mcpservers.json')。该文件用于定义你要管理的 MCP 服务器。

服务器配置

MCP Hub Neovim 插件本身 不是 一个独立的 MCP 服务器实现,而是一个 MCP 服务器 管理器客户端。 你需要在配置文件中指定要管理的 外部 MCP 服务器 的启动命令和参数。

以下是一个 '~/mcpservers.json' 配置文件的示例,用于配置两个外部 MCP 服务器:

{
  "mcpServers": {
    "fetch": {
      "command": "uvx",
      "args": ["mcp-server-fetch"]
    },
    "todoist": {
      "command": "npx",
      "args": ["-y", "@abhiz123/todoist-mcp-server"],
      "disabled": true,
      "env": {
        "TODOIST_API_TOKEN": "your-api-token-here"
      }
    }
  }
}
  • '"mcpServers"': 根节点,包含所有要管理的 MCP 服务器的配置。
  • '"fetch"' 和 '"todoist"': 服务器名称,可以自定义,用于在 MCP Hub 中标识服务器。
  • '"command"': 启动 MCP 服务器的命令。例如 'uvx' 或 'npx'。
  • '"args"': 启动命令的参数,以数组形式提供。例如 '["mcp-server-fetch"]' 或 '["-y", "@abhiz123/todoist-mcp-server"]'。
  • '"disabled"': (可选) 'true' 表示初始状态禁用该服务器,默认为 'false'。
  • '"env"': (可选) 环境变量,以键值对形式提供,用于配置服务器运行时的环境变量,例如 API Token。

你需要根据你要使用的 MCP 服务器,修改 'command' 和 'args' 配置。 例如,如果你要使用 'mcp-server-fetch' 服务器,并且你的系统已经安装了 'uvx' 和 'mcp-server-fetch',则可以使用示例中的配置。如果你要使用 'todoist-mcp-server',你需要确保安装了 Node.js 和 npm,并根据 'todoist-mcp-server' 的文档配置 'command' 和 'args' 以及必要的环境变量(如 'TODOIST_API_TOKEN')。

基本使用方法

  1. 打开 MCP Hub 界面: 在 Neovim 中运行命令 ':MCPHub',即可打开 MCP Hub 用户界面。

  2. 管理服务器: 在 MCP Hub 界面中,你可以:

    • 查看已配置的 MCP 服务器列表。
    • 启用/禁用服务器。
    • 启动/停止服务器。
    • 查看服务器状态和日志。
    • 管理服务器的工具。
    • 测试工具和资源。
  3. 在 Lua 代码中使用 API: 你可以通过 Lua API 在 Neovim 插件或自定义脚本中与 MCP 服务器交互:

    local hub = require("mcphub").get_hub_instance()
    
    -- 调用工具 (同步)
    local response, err = hub:call_tool("server-name", "tool-name", {
        param1 = "value1"
    }, {
        return_text = true -- 将响应解析为适合 LLM 的文本
    })
    
    -- 访问资源 (同步)
    local response, err = hub:access_resource("server-name", "resource://uri", {
        return_text = true
    })
    
    -- 获取 Prompt 助手
    local prompts = hub:get_prompts()
    -- prompts.active_servers: 列出当前激活的服务器
    -- prompts.use_mcp_tool: 工具使用说明示例
    -- prompts.access_mcp_resource: 资源访问说明示例

    将 'server-name' 替换为你在 'mcpservers.json' 中配置的服务器名称,'tool-name' 和 'resource://uri' 替换为你要调用的工具名称和资源 URI,并根据需要传递参数。

  4. 集成到聊天插件: MCP Hub 提供了与 CodeCompanion 和 Avante 等 Neovim 聊天插件的集成扩展,可以让你在聊天界面中直接使用 MCP 服务器的功能。具体配置方法请参考仓库 README.md 文档中 “Extensions” 部分的说明。

通过 MCP Hub for Neovim,你可以方便地在 Neovim 中管理和使用各种 MCP 服务器,利用 LLM 的强大能力提升你的工作效率。

信息

分类

开发者工具