空工作区是一块白板,只是背后藏着一个查询规划器。
workspace.serve(...) 闭包捕获一个实时工作区对象,并且只在该进程运行时可用。已注册 Toolkit 则把可调用 Capsule 持久化为工作区行,之后可以按引用加载。
1. 动机
向智能体提供数据库密码只会暴露存储,却没有解释领域。编写自定义 MCP 服务器能够解释领域,但往往重复 schema 验证、路由、查询解析与序列化。 HeavenBase 直接暴露它已经拥有的工作区:2. 创建并提供空工作区
创建serve_space.py:
debug 预设为教程提供本地 SQLite 支撑的工作区,无需 Docker。重新运行脚本会再次打开已注册工作区并保留数据。
服务器监听 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 端点。- Claude Code
- Codex
- VS Code
添加并验证服务器:开启新会话并运行
/mcp,然后再让智能体使用工作区。workspace.to_mcp_json(...) 打印的 JSON 可作为采用常见 mcpServers 结构的客户端的可移植起点。
6. 尝试一家小商店
按顺序发送以下提示。1
定义模型
2
添加数据
3
提出问题
总结
- 工作区 MCP 闭包捕获一个实时工作区,必须由运行中的进程提供服务。
- 工作区数据独立于该传输进程持久化。
- profile 暴露经过选择的工具集;可选 profile 需要先启用对应扩展。
- 已注册 Capsule Toolkit 是另一种持久化机制,具有显式工作区所有权。

