Skip to content

工具描述:ToolSearch 工具搜索(扩展)

Tool Description: ToolSearch extended

v2.1.31

Extended usage instructions for ToolSearch including query modes and examples

为什么这一点不容妥协:

  • 延迟加载的工具在通过此工具发现之前不会被加载
  • 在未先加载的情况下调用延迟加载的工具将会失败

查询模式:

  1. 关键词搜索 - 当你不确定使用哪个工具或需要一次性发现多个工具时,使用关键词:

    • "list directory" - 查找用于列出目录的工具
    • "notebook jupyter" - 查找笔记本编辑工具
    • "slack message" - 查找 Slack 消息工具
    • 返回最多 5 个按相关性排序的匹配工具
    • 所有返回的工具立即可供调用——无需进一步选择步骤
  2. 直接选择 - 当你确切知道工具名称并且只需要该工具时,使用 select:<tool_name>

    • "select:mcp__slack__read_channel"
    • "select:NotebookEdit"
    • 如果该工具存在,则仅返回该工具

重要提示: 两种模式加载工具的效果相同。对于关键词搜索已返回的工具,请不要再使用 select: 调用进行跟进——它们已经被加载了。

  1. 必需关键词 - 使用 + 前缀来要求匹配:
    • "+linear create issue" - 仅来自 "linear" 的工具,按 "create"/"issue" 排序
    • "+slack send" - 仅 "slack" 工具,按 "send" 排序
    • 当你知道服务名称但不知道确切工具时很有用

正确的使用模式:

<example> 用户:我需要以某种方式使用 Slack 助手:让我搜索一下 Slack 工具。 [调用 ToolSearch,查询:"slack"] 助手:找到了几个选项,包括 mcp__slack__read_channel。 [直接调用 mcp__slack__read_channel——它已通过关键词搜索加载] </example>

<example> 用户:编辑 Jupyter 笔记本 助手:让我加载笔记本编辑工具。 [调用 ToolSearch,查询:"select:NotebookEdit"] [调用 NotebookEdit] </example>

<example> 用户:列出 src 目录中的文件 助手:我看到可用工具中有 mcp__filesystem__list_directory。让我选择它。 [调用 ToolSearch,查询:"select:mcp__filesystem__list_directory"] [调用该工具] </example>

错误的使用模式 - 绝对不要这样做:

<bad-example> 用户:读取我的 Slack 消息 助手:[未先加载就直接调用 mcp__slack__read_channel] 错误 - 你必须先使用此工具加载该工具 </bad-example>

<bad-example> 助手:[调用 ToolSearch,查询:"slack",返回 mcp__slack__read_channel] 助手:[调用 ToolSearch,查询:"select:mcp__slack__read_channel"] 错误 - 关键词搜索已经加载了该工具。select 调用是多余的。 </bad-example>


英文原文 / English Original

Why this is non-negotiable:

  • Deferred tools are not loaded until discovered via this tool
  • Calling a deferred tool without first loading it will fail

Query modes:

  1. Keyword search - Use keywords when you're unsure which tool to use or need to discover multiple tools at once:

    • "list directory" - find tools for listing directories
    • "notebook jupyter" - find notebook editing tools
    • "slack message" - find slack messaging tools
    • Returns up to 5 matching tools ranked by relevance
    • All returned tools are immediately available to call — no further selection step needed
  2. Direct selection - Use select:<tool_name> when you know the exact tool name and only need that one tool:

    • "select:mcp__slack__read_channel"
    • "select:NotebookEdit"
    • Returns just that tool if it exists

IMPORTANT: Both modes load tools equally. Do NOT follow up a keyword search with select: calls for tools already returned — they are already loaded.

  1. Required keyword - Prefix with + to require a match:
    • "+linear create issue" - only tools from "linear", ranked by "create"/"issue"
    • "+slack send" - only "slack" tools, ranked by "send"
    • Useful when you know the service name but not the exact tool

CORRECT Usage Patterns:

<example> User: I need to work with slack somehow Assistant: Let me search for slack tools. [Calls ToolSearch with query: "slack"] Assistant: Found several options including mcp__slack__read_channel. [Calls mcp__slack__read_channel directly — it was loaded by the keyword search] </example>

<example> User: Edit the Jupyter notebook Assistant: Let me load the notebook editing tool. [Calls ToolSearch with query: "select:NotebookEdit"] [Calls NotebookEdit] </example>

<example> User: List files in the src directory Assistant: I can see mcp__filesystem__list_directory in the available tools. Let me select it. [Calls ToolSearch with query: "select:mcp__filesystem__list_directory"] [Calls the tool] </example>

INCORRECT Usage Patterns - NEVER DO THESE:

<bad-example> User: Read my slack messages Assistant: [Directly calls mcp__slack__read_channel without loading it first] WRONG - You must load the tool FIRST using this tool </bad-example>

<bad-example> Assistant: [Calls ToolSearch with query: "slack", gets back mcp__slack__read_channel] Assistant: [Calls ToolSearch with query: "select:mcp__slack__read_channel"] WRONG - The keyword search already loaded the tool. The select call is redundant. </bad-example>