Skip to main content
没有主人的工具,只是一个四处找麻烦的函数。
HeavenBase 可以把普通 Python 函数变成 MCP 工具,但真正重要的边界是所有权。已注册的 Toolkit 及其引用的每个 Capsule 都属于一个显式的应用工作区 (Workspace)。 该工作区让创建、检查、提供服务与删除始终指向同一持久状态。不存在进程全局的 Toolkit 数据库;另一个进程必须打开同一个已注册工作区,才能加载这些工具。

1. 动机

全局注册表会让简短演示显得方便,直到两个应用都注册 math-tools、一个应用删除另一个的修订,或服务器悄悄打开错误的数据库。 HeavenBase 改为显式指定工作区:
工作区拥有 Toolkit 行、引用的 Capsule 行及其后端生命周期。你的 Python 函数仍是普通函数;HeavenBase 在其外部添加持久身份与 MCP 适配器。

2. 创建工作区拥有的 Toolkit

创建 math_tools.py
运行一次:
注册会把可调用对象的源代码、签名、注解、导入、序列化器与 Toolkit 元数据捕获为工作区拥有的行。稳定引用为 quickstart/math-tools:1
Capsule 恢复会执行捕获的 Python。只注册和加载你信任的代码,并把访问所属工作区视为代码执行权限。

3. 从另一个进程加载并提供服务

提供服务的进程显式打开同一个工作区:
即使删除 math_tools.py,你仍可运行这段代码,因为工作区保留了捕获的 Capsule。该进程仍需使用同一 HeavenBase 主目录、工作区注册与工件存储;持久化以工作区为作用域,而非环境隐式提供或神奇地跨机器共享。 服务器默认监听 http://127.0.0.1:7001/mcp。每个进程使用一种传输:

4. 用 CLI 检查并提供服务

每条 Toolkit 命令都接受所属工作区:
调用会打印 5。无需服务脚本即可启动 HTTP 服务器:
同一所有权规则也适用于 Python:
删除 Toolkit 默认会把其行标记为墓碑。删除工作区是范围更广的生命周期操作,因为工作区还拥有相关数据与 Capsule 行。

5. 连接客户端

保持服务器运行,然后为一个客户端配置其 Streamable HTTP URL。
添加并验证服务器:
开启新会话并运行 /mcp,检查发现的工具。
对其他客户端,先使用 hb mcp mcp-json quickstart.math-tools --workspace math-demo 输出的 JSON,只调整客户端专属的外层键。

6. 动手试试

向已连接的智能体提问:
智能体从签名与文档字符串发现 multiplyadd,调用它们,并应返回 3085

总结

  • 具体 Toolkit 及其引用的 Capsule 属于显式工作区。
  • 注册结果可以比源文件长寿,但加载仍需同一工作区权限。
  • Python 与 CLI 操作使用相同的工作区拥有行。
  • 工作区绑定工具是受信任的可执行代码,而非惰性数据。

进一步探索

相关资源: