工具列表已更改插件
此插件演示了hyper-mcp中的动态工具列表管理。它展示了插件如何在运行时修改其工具列表,并将这些更改通知MCP服务器。
特性
- 动态工具创建:以单个开头
add_tool并动态创建新工具 - 主机功能集成:使用
notify_tool_list_changed主机功能通知服务器 - 原子计数器:使用原子操作进行线程安全的工具计数
运作原理
该插件仅从一个可调用工具开始:
add_tool:调用时,此工具会创建一个名为的新工具tool_n(其中n从1开始并递增)
每次通话后 add_tool:
- 一种新工具
tool_n已添加到插件的工具列表中 - 插件调用
notify_tool_list_changed()通知MCP服务器 - 服务器更新其对可用工具的理解
工具
初始工具
- add_tool:创建新的动态工具并将工具列表更改通知服务器
- 不接受任何参数 - 返回一个包含新工具名称和当前工具计数的JSON对象
动态工具
- 工具1、工具2、工具3、。..:在以下情况下动态创建
add_tool被称为
- 每个工具在调用时都会返回有关自身的信息 - 不接受任何参数
用法示例
- 初始状态:只有
add_tool可用的 - 呼叫
add_tool:创建tool_1并通知服务器 - 呼叫
add_tool再次:创建tool_2并通知服务器 - 呼叫
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响应,其中包含有关操作的相关信息
