关于 Gooo saved tool definitions
Gooo saved tool definitions 是一个本地 MCP 服务,供编码 Agent 检查服务授权变更是否仍保留指定请求,也可对比工具别名来源。它使用现有 Gooo 生成结果,不调用模型或目标服务。
主要功能
- 01评估服务授权变更
- 02按顺序评估多个请求
- 03比较工具别名来源
- 04返回完整决策与绑定信息
- 05通过 stdio 本地运行
适用场景
- 01检查缩窄授权是否保留必需请求
- 02审查授权变更对多个服务的影响
- 03更新前核对工具别名指向变化
MCP 相关
本地 stdio MCP 服务提供授权评估工具;可选启动参数还会暴露工具别名来源比较工具。它只检查提供的事实,不认证权限、不应用授权,也不调用服务或模型。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
docker run -i --rm ghcr.io/kimjooyoon/gooo-service-grant-mcp@sha256:a015a049318235eed7429347aef232c71703ab4bb9931277f99e2c6e3218a82e本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
ghcr.io/kimjooyoon/gooo-service-grant-mcp@sha256:a015a049318235eed7429347aef232c71703ab4bb9931277f99e2c6e3218a82estdio工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
原文在翻译后有更新,译文可能不是最新。
通过 MCP 检查服务授权变更
这个本地 stdio 服务可让编码 Agent 发现并调用一个工具:
assess_service_grant。它会检查受支持的收窄是否仍保留一个必需的服务请求。判定由现有的 Gooo 生成逻辑作出;
Go 适配器只负责处理 MCP 和精确传输事实。
例如,将 * 收窄为 mcp://* 会保留 mcp://weather。将同一授权收窄为
http://* 则会移除该请求。这两种评估都能成功,但判定不同。
构建并连接
使用 Go 1.27.2,从经过审查的代码库检出版本构建:
GOTOOLCHAIN=local GOWORK=off CGO_ENABLED=0 \
go -C examples/service-grant-mcp build -trimpath -o /absolute/private/bin/gooo-service-grant-mcp .
构建会通过已配置的 Go 代理和校验和服务下载固定版本的公共模块。生成的原生可执行文件在运行时不需要安装 Go 或 Gooo。配置 MCP 主机通过 stdio 启动该可执行文件的绝对路径,且不带参数。此服务不会开放 HTTP 端口,不需要 API 密钥,也不会调用模型。
Python 标准库中的线路验证器会测试协议版本
2025-11-25 和 2026-07-28。它会检查发现、工具架构、重复调用、
原生 CLI 证明的精确相等性、严格的输入错误,以及仅包含协议内容的 stdout。
Go 测试还会将并发处理器调用与完整的原生证明进行比较;精简工作流会在 Linux 和 macOS 上使用竞态检测器运行这些测试。
五项 Python 回归检查会使用实际退出的子进程和缓冲管道,验证失败的请求会保留其首个错误和诊断信息。
注入的取消异常会检查清理后的传播行为;它们不能证明操作系统信号的行为。
这些观察结果不能证明任务是在任何特定的 Agent 应用中完成的。
调用工具
工具参数对象中必须恰好提供四个 JSON 字符串:
{
"before": "*",
"after": "mcp://*",
"required_type": "mcp",
"required_name": "weather"
}
结果包含原始 facts、包含七个字段的 decision,以及完整的编译器/生成/来源 bindings,并同时出现在 MCP structuredContent 和 JSON 文本内容块中。请保留完整结果。
| 结果 | 含义 |
|---|---|
ELIGIBLE | 这个受支持的子集保留了提供的必需请求。 |
REFUSED | 所表示的变更未通过保留性或细化检查。 |
INVALID_INPUT | 这些字符串不符合 Gooo 策略的规范域。 |
MCP isError: true | 传输、来源绑定或执行失败;不会返回策略判定。 |
重复键、缺失字段或额外字段、null、类型错误以及未配对的 Unicode 代理项都会导致传输错误。原始参数对象上限为 4,096 字节;完整的入站 stdio 帧则另有 64 KiB 的上限。这些传输限制与策略所表示的字符串域不同。
此处不会对提供的先前授权和必需请求进行身份验证。该工具不会应用任何授权,不会检查实时权限,也不会联系任何服务。条件应用示例 展示了自动应用变更的应用所需的独立版本/写入者保护措施。
版本与验证
运行时固定使用公开的
agentmesh-service-policy module
v0.0.0-20261018191951-2aa0f96805f1。其 Gooo 编译器源码为
83928fa4538245abe33b08549da47f8cbdc50ed2;此适配器不会升级或
运行语言引擎。MCP 传输使用官方 Go SDK v1.8.0。
go.sum 固定了这两个模块及其依赖关系图。
fixtures/ 下的文件保留了实际的原生 CLI 输入和输出。
fixtures/origin.json 记录了这些文件的哈希、生成标识和 Linux CI
来源。验证器会比对完整的证明对象,包括 false/空字段和全部 89 项资产绑定;
不会重建替代的策略结果。
要验证构建好的命令,请选择一个全新的输出目录:
python3 -I -B examples/service-grant-mcp/verify.py \
--binary /absolute/private/bin/gooo-service-grant-mcp \
--out /absolute/private/new-mcp-verification
请在首次运行反馈表单中报告平台、源版本、命令、退出状态和第一条诊断信息。 请选择 原生设置、验证或重放,并使用合成的公开事实。 与其声称兼容所有 MCP 客户端或所有服务模式语言,不如反馈真实任务相关的问题或缺失的功能,这更有帮助。
可选的有序必需请求
默认命令和 assess_service_grant 工具保留原始的 839 项配置文件、七个决策字段和 89 项资产绑定。使用 --many-required 启动同一个原生命令,可额外公开
assess_service_grant_change。其参数是一个对象,例如:
{"before":"*","after":"mcp://*","required_requests":[{"type":"mcp","name":"weather"},{"type":"mcp","name":"calculator"}]}
此可选工具会保留请求的顺序和重复项。它会返回完整的有序列事实、12 个带类型的决策字段,以及独立的 de99 生成版本的 30 项资产和五项源哈希绑定。领域无效请求和超过 257 项请求的策略限制会返回决策;格式错误的 JSON 不会返回部分证明。提供的事实未经签名:此工具不会验证任何权限,也不会应用任何授权。五个 Gooo 源代码正文仍是仓库源码,而非嵌入的模块文件。
按上述方式构建传输后,分别运行现有的默认线路检查和可选检查。可选检查会读取此模块选定的确切公开依赖项 service-grant-many:
mcp_binary=/absolute/private/bin/gooo-service-grant-mcp
mkdir -p out
python3 -I -B examples/service-grant-mcp/verify.py \
--binary "$mcp_binary" --out "$PWD/out/mcp-default-wire"
many_module="$(go -C examples/service-grant-mcp list -m -f '{{.Dir}}' \
github.com/kimjooyoon/gooo-go-ports/examples/service-grant-many)"
python3 -I -B examples/service-grant-mcp/verify_many.py \
--binary "$mcp_binary" \
--legacy-verifier "$PWD/examples/service-grant-mcp/verify.py" \
--many-module "$many_module" --out "$PWD/out/mcp-many-wire"
两个客户端都会在不使用模型的情况下测试两个有文档说明的协议版本。成对的 MCP 输入无法表达两列长度不匹配的情况;该独立的公开 Go API 案例仍由 service-grant-many 测试覆盖。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。