动态工具列表管理插件

用于在hyper-mcp中动态管理工具列表的插件,支持运行时修改工具列表并通知服务器。

  • by hyper-mcp-rs
  • Rust
  • 本地部署
  • 更新于
在 GitHub 查看 hyper-mcp-rs/tool-list-changed-plugin

使用说明

工具列表已更改插件

此插件演示了hyper-mcp中的动态工具列表管理。它展示了插件如何在运行时修改其工具列表,并将这些更改通知MCP服务器。

特性

  • 动态工具创建:以单个开头 add_tool 并动态创建新工具
  • 主机功能集成:使用 notify_tool_list_changed 主机功能通知服务器
  • 原子计数器:使用原子操作进行线程安全的工具计数

运作原理

该插件仅从一个可调用工具开始:

  • add_tool:调用时,此工具会创建一个名为的新工具 tool_n (其中n从1开始并递增)

每次通话后 add_tool:

  1. 一种新工具 tool_n 已添加到插件的工具列表中
  2. 插件调用 notify_tool_list_changed() 通知MCP服务器
  3. 服务器更新其对可用工具的理解

工具

初始工具

  • add_tool:创建新的动态工具并将工具列表更改通知服务器
    • 不接受任何参数
    • 返回一个包含新工具名称和当前工具计数的JSON对象

动态工具

  • 工具1、工具2、工具3、。..:在以下情况下动态创建 add_tool 被称为
    • 每个工具在调用时都会返回有关自身的信息
    • 不接受任何参数

用法示例

  1. 初始状态:只有 add_tool 可用的
  2. 呼叫 add_tool:创建 tool_1 并通知服务器
  3. 呼叫 add_tool 再次:创建 tool_2 并通知服务器
  4. 呼叫 tool_1:返回有关成为第一个动态创建的工具的信息

建筑

cd hyper-mcp/examples/plugins/v1/tool-list-changed
cargo build --target wasm32-unknown-unknown --release

编译后的WASM文件将在以下网址提供: target/wasm32-unknown-unknown/release/tool_list_changed.wasm

配置

此插件不需要额外配置。它使用原子操作来跨调用维护线程安全状态。

实现细节

  • 用途 AtomicUsize 用于螺纹安全刀具计数
  • 呼叫 notify_tool_list_changed 每次添加工具后的主机功能
  • 实现两个静态(add_tool)动态(tool_n)工具搬运
  • 提供JSON响应,其中包含有关操作的相关信息