Skip to content

[FEATURE] Define Custom Tools #149

@onemenzel

Description

@onemenzel

Feature Description

I'd like to be able to define custom MCP tools in the plugin's config.

Use Case

Users would be able to define any function that can be run by Claude within neovim. The use cases are basically infinite. Anything you can imagine as a Lua function could be run by Claude.

Proposed Solution

I Imagine the function definition to look somewhat like this:

{
  "coder/claudecode.nvim",
  dependencies = { "folke/snacks.nvim" },
  -- ...
  custom_tools = {
    {
      "tool_name",
      title = "The tool's title",
      desc = "Does something",
      input_schema = {
        -- ...
      },
      output_schema = {
        -- ...
      },
      annotations = {
        -- ...
      },
      callback = function(arg1, arg2)
        -- ...
      end
    },
  },
}

Alternatives Considered

  • Letting claude execute arbitrary vim commands. That's not very Neovimy and more risky though. And this feature could still be implemented using the proposed solution.
  • Making my own plugin. Though the power of claudecode.nvim is its WebSocket based integration, which I'd have to replicate (or I'd have to use a local http transport).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions