Token导航 LogoToken导航TokenDH.com
MCP Tools Nvim logo
AI代理未说明官方级别未说明来源级核验

MCP Tools Nvim

MCP Server

一个为AI编程助手(如OpenCode、Claude Code和Cursor)提供Lua函数作为MCP工具集的NeoVim插件,支持DAP调试、LSP工具、撤销树、面试工具等功能。

工具数

28

提示词数

0

GitHub Stars

5

资源数

0
AI编程助手ClaudeAI代理ClaudeCursor

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

guill

提供方

guill

最后核验

2026/5/17 20:19

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

mcp-tools.nvim

一个NeoVim插件,它将Lua函数作为MCP(模型上下文协议)工具,用于OpenCode、Claude Code和Cursor等AI编码助手。

特性

  • DAP集成:检查调试会话、调用堆栈、变量和计算表达式
  • LSP工具:查询悬停信息、文档符号和诊断
  • 撤消树:检查撤消历史记录
  • 面试工具:AI可以通过原生NeoVim UI向用户提出多项选择或自由文本问题
  • OpenCode自动集成:启动时自动向OpenCode注册
  • Ampcode集成:通过MCP工具启动Amp CLI :AmpStartWithMCP
  • 定制工具:将您自己的Lua函数注册为MCP工具

需求

安装

lazy.nvim

{
  "guill/mcp-tools.nvim",
  build = "cd bridge && npm install",
  config = function()
    require("mcp-tools").setup()
  end,
}

包装商nvim

use {
  "guill/mcp-tools.nvim",
  run = "cd bridge && npm install",
  config = function()
    require("mcp-tools").setup()
  end,
}

配置

所有工具和集成都是 默认情况下禁用.启用您需要的功能:

require("mcp-tools").setup({
  -- Enable/disable built-in tools (all default to false)
  tools = {
    dap = true,         -- Debug Adapter Protocol tools
    diagnostics = true, -- LSP diagnostics
    lsp = true,         -- LSP hover, symbols
    undo = true,        -- Undo tree
    interview = true,   -- Interview tool (requires nui-components.nvim)
    test = true,        -- Test tools (for development)
  },

  -- Enable/disable integrations (all default to false)
  integrations = {
    opencode = true, -- Auto-register with OpenCode
    ampcode = true,  -- Enable :AmpStartWithMCP command
  },

  -- Bridge configuration
  bridge = {
    port = 0,            -- 0 = OS assigns port
    log_level = "info",  -- debug, info, warn, error
  },

  -- Callbacks
  on_ready = function(port)
    print("MCP bridge ready on port " .. port)
  end,
  on_stop = function()
    print("MCP bridge stopped")
  end,
})

内置工具

DAP工具(需要nvim-DAP)

会话管理:

工具说明
nvim_dap_status获取调试会话状态
nvim_dap_run使用配置启动新的调试会话
nvim_dap_terminate终止当前调试会话
nvim_dap_disconnect断开与调试适配器的连接

执行控制:

工具说明
nvim_dap_continue继续执行(使用可选的wait_until_used)
nvim_dap_step_over跳过(可选wait_until_used)
nvim_dap_step_into进入(可选wait_until_used)
nvim_dap_step_out退出(可选wait_until_used)
nvim_dap_run_to运行到特定的文件和行
nvim_dap_wait_until_paused等待调试器暂停

断点:

工具说明
nvim_dap_set_breakpoint在带有可选条件的file:行设置断点
nvim_dap_remove_breakpoint删除file:行处的断点
nvim_dap_clear_breakpoints清除所有断点
nvim_dap_breakpoints列出所有断点

检查:

工具说明
nvim_dap_stacktrace获取当前调用堆栈
nvim_dap_scopes获取堆栈帧的作用域
nvim_dap_variables获取作用域中的变量
nvim_dap_evaluate计算表达式
nvim_dap_threads列出所有线程
nvim_dap_current_location使用代码上下文获取当前位置
nvim_dap_program_output获取程序stdout/stderr/控制台输出

LSP工具

工具说明
nvim_lsp_hover获取悬停信息
nvim_lsp_symbols获取文档符号
nvim_diagnostics_list获取诊断信息

撤消工具

工具说明
nvim_undo_tree获取撤消树结构

测试工具(用于开发/调试)

这些工具验证MCP网桥异步/同步执行模式:

工具说明
nvim_test_async_prompt通过用户提示测试异步执行
nvim_test_sync_buffers通过NeoVim API测试同步执行

面试工具(需要nui组件.nvim)

允许AI助手通过原生NeoVim浮动窗口UI向用户提问。支持单选、多选和自由文本问题。

工具说明
nvim_interview使用多项选择或自由文本输入提出问题

注册自定义工具

工具使用基于回调的API。呼叫 cb(result) 返回成功或 cb(nil, "error message") 返回错误。

同步工具(最常见):

local mcp = require("mcp-tools")

mcp.register({
  name = "my_tool",
  description = "Does something useful",
  args = {
    bufnr = {
      type = "number",
      description = "Buffer number",
      required = false,
      default = 0,
    },
  },
  execute = function(cb, args)
    local buf = args.bufnr == 0 and vim.api.nvim_get_current_buf() or args.bufnr
    cb({ buffer = buf, lines = vim.api.nvim_buf_line_count(buf) })
  end,
})

异步工具(用于长时间操作或用户交互):

mcp.register({
  name = "delayed_response",
  description = "Returns after a delay",
  args = {
    delay_ms = { type = "number", required = false, default = 1000 },
  },
  execute = function(cb, args)
    vim.defer_fn(function()
      cb({ message = "Done after delay" })
    end, args.delay_ms)
  end,
})

交互式工具(等待用户输入):

mcp.register({
  name = "confirm_action",
  description = "Ask user for confirmation",
  args = {
    prompt = { type = "string", required = true },
  },
  execute = function(cb, args)
    vim.ui.select({"Yes", "No"}, { prompt = args.prompt }, function(choice)
      cb({ confirmed = choice == "Yes" })
    end)
  end,
})

集成

OpenCode

integrations.opencode = true,插件会自动检测OpenCode何时启动,并向其注册MCP服务器。不需要手动步骤。

安培码

integrations.ampcode = true,插件提供 :AmpStartWithMCP 命令如下:

  1. 启动MCP网桥(如果已经运行,则重用现有网桥)
  2. 打开NeoVim终端 amp --ide --mcp-config

MCP配置通过临时文件传递,并与现有的Amp设置合并(不会覆盖 .amp/settings.json).

这两种集成可以同时启用,并共享同一个MCP桥。

手动桥接控制

local mcp = require("mcp-tools")

-- Start bridge manually
mcp.start({
  nvim_socket = vim.v.servername,
  port = 0,
})

-- Stop bridge
mcp.stop()

-- Check status
if mcp.is_running() then
  print("Bridge on port " .. mcp.get_port())
end

-- List registered tools
for name, def in pairs(mcp.list_tools()) do
  print(name .. ": " .. def.description)
end

健康检查

:checkhealth mcp-tools 以验证您的安装。

运作原理

  1. 插件生成一个TypeScript MCP桥,通过RPC连接到NeoVim
  2. 该桥通过MCP协议(流式HTTP传输)公开工具
  3. AI助手通过MCP发现工具 tools/list
  4. 当调用一个工具时,桥通过以下方式调用Lua nvim.call('luaeval', ...)

OpenCode流: 插件通过以下方式检测OpenCode opencode.state.subscribe 并通过以下方式自动注册 POST /mcp.

安培码流量: 用户运行 :AmpStartWithMCP,这打开了一个终端,其中Amp被配置为连接到电桥。

建筑

NeoVim Instance
├── mcp-tools.nvim (this plugin)
│   ├── Tool Registry (Lua)
│   └── MCP Bridge (TypeScript, child process)
│       ├── Connects to NeoVim via socket
│       ├── Exposes tools via MCP protocol
│       └── Routes tool calls back to Lua
├── opencode.nvim (optional)
│   └── Auto-discovers nvim-tools MCP server
└── Amp terminal (optional, via :AmpStartWithMCP)
    └── Connects to nvim-tools MCP server

许可证

麻省理工学院

目录标签

目录标签

AI编程助手ClaudeAI代理Lua本地部署NeoVim插件DAP调试LSP工具MCP协议

支持客户端

ClaudeCursor

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

28

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP