返回市场
工具包

工具包

作者:modulewise14 星标更新:2025-10-03

项目介绍

模块化工具带

一个模型上下文协议 (MCP) 服务器,它将Wasm组件作为工具公开。

这目前是一个早期阶段的非生产原型。

(认证和可观测性将在路线图中实现)

构建

前提条件:当前的rust工具链

如果你还没有克隆,请克隆toolbelt项目。

然后在toolbelt目录下执行:

cargo install --path .

这将使用release配置构建二进制文件,并将其添加到你的cargo bin目录中,该目录应该已经在你的PATH中了。

运行简单组件

提供一个或多个.wasm文件的路径作为命令行参数:

toolbelt hello.wasm calculator.wasm

或者你可以指定已发布的Wasm组件的OCI URI,例如这些:

toolbelt oci://ghcr.io/modulewise/demo/hello:0.1.0 \
         oci://ghcr.io/modulewise/demo/calculator:0.1.0

[!TIP]

如果你想本地构建Wasm组件,请克隆 modulewise/demos项目并按照 components/README.md中的构建说明进行操作。

运行具有依赖关系的组件

默认情况下,组件以最小权限能力模式运行。 如果您的组件需要主机运行时的功能,您可以在.toml文件中指定这些功能。enables属性表示它们可用的作用域:

[wasip2]
uri = "wasmtime:wasip2"
enables = "any"

[http]
uri = "wasmtime:http"
enables = "any"

然后定义“暴露”的工具组件,该组件“期望”这些功能:

[flights]
uri = "file:///path/to/flight-search.wasm"
expects = ["wasip2", "http"]
exposed = true

将定义文件传递给服务器而不是直接传递.wasm文件:

toolbelt flights.toml

Wasm组件也可以定义为启用其他组件,它们可能有自己的依赖项。 请注意,这次运行时功能不是直接对暴露的“工具”组件可用,而是仅对启用暴露组件的内部组件可用:

runtime-features.toml

[wasip
uri = "wasmtime:wasip2"
enables = "unexposed"

[inherit-network]
uri = "wasmtime:inherit-network"
enables = "unexposed"

这些运行时功能随后由一个启用组件预期:

keyvalue.toml

[keyvalue]
uri = "../demos/components/lib/valkey-client.wasm"
expects = ["wasip2", "inherit-network"]
enables = "exposed"

最后,该组件可以组合成暴露的“工具”组件。 在这种情况下,暴露的组件也将与配置组合:

incrementor.toml

[incrementor]
uri = "../demos/components/lib/incrementor.wasm"
expects = ["keyvalue"]
exposed = true

[incrementor.config]
bucket = "increments"

现在可以将这些文件全部传递给服务器:

toolbelt runtime-features.toml keyvalue.toml incrementor.toml

这允许各种运行时功能、启用组件以及将作为工具暴露的组件的不同组合。它还促进了支持基础设施和暴露功能之间的责任驱动的关注分离。

使用MCP Inspector测试

  1. 按照上述说明运行服务器。

  2. 启动MCP Inspector

  3. 确保选择了Streamable HTTP传输类型。

  4. 确保指定的URL是http://127.0.0.1:3001/mcp(如果不是使用默认值,请替换主机或端口)。

  5. 点击Connect,然后点击List Tools

  6. 选择一个工具,提供参数值,然后点击Run Tool

许可证

版权所有 (c) 2025 Modulewise Inc 和 Modulewise Toolbelt 贡献者。

Apache 许可证 v2.0:详情见LICENSE