跳到正文
社区版开源 Web · 0.2.8 发行文档 · 0.2.8内容核对:2026-10-23查看 Markdown

6.7 接入只读 MCP 工具 ​

本篇用 Teloa 源码自带的资料服务,完成工具发现、读取和拒绝测试。它通过 stdio 运行,不调用模型,也不读取私人目录。要开发 HTTP MCP 服务,直接使用应用教程的完整例子。

准备文件 ​

需要 Node.js 24,以及已按源码环境安装依赖的 Teloa 源码目录。服务入口为 packages/mcp-reference/src/main.ts。

下载完整客户端示例,解压后在示例目录执行:

sh
npm install
node reference-client.mjs /absolute/path/to/teloa

把最后一个参数换成你实际的 Teloa 源码绝对路径。客户端启动服务并自动关闭;只手动运行服务时,它会等待 MCP 消息,没有聊天提示属于正常状态。

客户端怎样读取 ​

reference-client.mjs 已包含完整导入、连接和退出处理,核心调用如下:

js
const listing = await client.callTool({name: 'list_references', arguments: {}})
const ref = listing.structuredContent.references[0]
const read = await client.callTool({
  name: 'read_reference',
  arguments: {id: ref.id, version: ref.version},
})
console.log(read.structuredContent.text)

列表返回开放资料的 ID、来源和 SHA-256 版本;读取必须沿用该版本。客户端会输出一份实际正文及版本,再输出三条被拒绝的请求。

测试预期结果
列举资料返回 workbench、capabilities 两个 ID
读取列表给出的 ID 和版本返回正文、来源和同一版本
不存在的 IDreference/not-found
错误的 64 位版本reference/version-conflict
额外传入 path参数校验失败,不读取该路径

可在 Teloa 源码根目录运行同一服务的协议测试:

sh
pnpm test:references

在员工中使用 ​

默认组合登记了 teloa_reference 服务。先核对服务已连接,再给测试员工选择实际发现的读取工具;暂停员工、修改授权并恢复在岗后发起新的测试任务。当前完整工具名为 mcp__teloa_reference__list_references 和 mcp__teloa_reference__read_reference。

同一任务先测未授权拒绝,再测授权后读取;检查轨迹中的实际调用和回包。协议客户端通过,只证明服务边界;员工是否可以使用,还要经过岗位和任务授权。

改成自己的资料服务 ​

在服务端维护允许读取的资料清单,只接受资料 ID 和版本,不接受任意磁盘路径。先列举再按版本读取,资料变化时要求调用方重新核对。额外覆盖缺文件、编码错误、过大文件、权限撤回和停止。

服务端实现见 packages/mcp-reference/src/server.ts、catalog.ts。接入真实系统前,按授权边界完成服务账号和对象权限测试。