Skip to main content
空工作区是一块白板,只是背后藏着一个查询规划器。
本教程把一个 HeavenBase 工作区暴露为实时 MCP 服务器。智能体可以定义实体、写入行、检查 schema 与查询数据,而你无需编写传输层或 CRUD 包装器。 这个表面不同于已注册 Toolkit。workspace.serve(...) 闭包捕获一个实时工作区对象,并且只在该进程运行时可用。已注册 Toolkit 则把可调用 Capsule 持久化为工作区行,之后可以按引用加载。

1. 动机

向智能体提供数据库密码只会暴露存储,却没有解释领域。编写自定义 MCP 服务器能够解释领域,但往往重复 schema 验证、路由、查询解析与序列化。 HeavenBase 直接暴露它已经拥有的工作区:
profile 限制面向模型的表面,而每个工具仍使用与 Python 代码相同的实体、Catalog、MetaSchema、路由计划与后端权限。

2. 创建并提供空工作区

创建 serve_space.py
运行:
debug 预设为教程提供本地 SQLite 支撑的工作区,无需 Docker。重新运行脚本会再次打开已注册工作区并保留数据。
不要把 workspace.drop() 放进服务器脚本,除非每次启动都应销毁工作区。只有在确实要删除其拥有的数据时,才先停止服务器,再显式删除工作区。
服务器监听 http://127.0.0.1:7001/mcp。外部客户端使用工具时,请保持此进程运行。

3. 理解实时边界

workspace.to_mcp(...)workspace.to_mcp_json(...)workspace.serve(...) 会创建一个闭包捕获当前工作区对象的仅执行期 Toolkit。 该 Toolkit 无法注册为持久 Capsule Toolkit,因为它的函数依赖实时工作区与后端对象。持久状态仍会保留在工作区中;MCP 传输本身不会保留。 需要持久可调用工具时使用 首个 MCP。希望智能体操作一个实时应用工作区时使用本页。

4. 选择显式 Profile

profile 是经过允许列表约束的 MCP 表面,不是启用所有扩展的请求。 本教程使用 agent。它省略批量变更、存在性检查与删除,同时保留首日 schema 与数据工作需要的工具。 选择可选 profile 前,先启用对应根扩展:
启用 memory 不会悄悄启用 database,选择 profile="database" 也不会替你安装 database 扩展。工作区清单会记录你显式选择的根。

5. 连接客户端

在一个客户端中配置正在运行的 Streamable HTTP 端点。
添加并验证服务器:
开启新会话并运行 /mcp,然后再让智能体使用工作区。
workspace.to_mcp_json(...) 打印的 JSON 可作为采用常见 mcpServers 结构的客户端的可移植起点。

6. 尝试一家小商店

按顺序发送以下提示。
1

定义模型

2

添加数据

3

提出问题

智能体通过 MetaSchema 定义 schema、写入具体行、通过 Catalog 感知工具发现它们,并通过与 Python 调用方相同的路由系统执行查询。

总结

  • 工作区 MCP 闭包捕获一个实时工作区,必须由运行中的进程提供服务。
  • 工作区数据独立于该传输进程持久化。
  • profile 暴露经过选择的工具集;可选 profile 需要先启用对应扩展。
  • 已注册 Capsule Toolkit 是另一种持久化机制,具有显式工作区所有权。

进一步探索

相关资源: