Function: claude-code-ide-make-tool
claude-code-ide-make-tool is a natively compiled function defined in
claude-code-ide-mcp-server.el.
Signature
(claude-code-ide-make-tool &rest SLOTS)
Documentation
Make a Claude Code IDE tool for MCP use.
The following keyword arguments are available:
NAME: The name of the tool, recommended to be in snake_case.
FUNCTION: The function itself (lambda or symbol) that runs the tool.
DESCRIPTION: A verbose description of what the tool does, how to call it and what it returns.
ARGS: A list of plists specifying the arguments, or nil for a function that
takes no arguments. Each plist in ARGS should have the following keys:
- :name - Argument name (string)
- :type - Argument type (symbol: string, number, integer, boolean,
array, object, null)
- :description - Argument description (string)
- :optional - Whether the argument is optional (boolean, default nil)
- :enum - For enumerated types, a vector of allowed values
- :items - For array types, a plist describing the array items
- :properties - For object types, a plist of property specifications
CATEGORY: A string indicating a category for the tool (optional).
The tool is automatically added to claude-code-ide-mcp-server-tools.
Returns the tool specification for convenience.
Source Code
;; Defined in /nix/store/yjvbhwl7p6zrbw9xlnni7y4hra8sa3pl-emacs-packages-deps/share/emacs/site-lisp/claude-code-ide-mcp-server.el
;;; Tool Definition Functions
(defun claude-code-ide-make-tool (&rest slots)
"Make a Claude Code IDE tool for MCP use.
The following keyword arguments are available:
NAME: The name of the tool, recommended to be in snake_case.
FUNCTION: The function itself (lambda or symbol) that runs the tool.
DESCRIPTION: A verbose description of what the tool does, how to
call it and what it returns.
ARGS: A list of plists specifying the arguments, or nil for a function that
takes no arguments. Each plist in ARGS should have the following keys:
- :name - Argument name (string)
- :type - Argument type (symbol: string, number, integer, boolean,
array, object, null)
- :description - Argument description (string)
- :optional - Whether the argument is optional (boolean, default nil)
- :enum - For enumerated types, a vector of allowed values
- :items - For array types, a plist describing the array items
- :properties - For object types, a plist of property specifications
CATEGORY: A string indicating a category for the tool (optional).
The tool is automatically added to `claude-code-ide-mcp-server-tools'.
Returns the tool specification for convenience."
(let ((function (plist-get slots :function))
(name (plist-get slots :name))
(description (plist-get slots :description))
(args (plist-get slots :args))
(category (plist-get slots :category)))
;; Validate required parameters
(unless function
(error "Tool :function is required"))
(unless name
(error "Tool :name is required"))
(unless description
(error "Tool :description is required"))
;; Build the tool specification
(let ((spec (list :function function
:name name
:description description)))
(when args
(setq spec (plist-put spec :args args)))
(when category
(setq spec (plist-put spec :category category)))
;; Add to the tools list
(add-to-list 'claude-code-ide-mcp-server-tools spec)
;; Return the spec for convenience
spec)))