关于 veto
veto 将 OpenAPI API 目录转为 Agent 可调用的服务,面向希望在调用时施加控制的 API 团队。Agent 使用搜索、描述和调用三个工具;敏感操作可等待人工批准。
主要功能
- 01从 OpenAPI 规范构建 API 目录
- 02通过自然语言搜索 API
- 03查看接口模式及后续调用指引
- 04执行前要求人工批准敏感操作
- 05提供 CLI、脚本和 Go 客户端接口
适用场景
- 01让 Agent 在多个 API 中查找所需接口
- 02依据已声明关系逐步访问关联服务
- 03在删除操作执行前审核调用方和参数
MCP 相关
veto 将 OpenAPI 目录作为 MCP 服务公开,提供 search、describe 和 invoke 三个工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
docker run -i --rm ghcr.io/aiveto/veto:0.1.13本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
ghcr.io/aiveto/veto:0.1.13stdio工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
你的整个 API 平台,只需 3 个 MCP 工具。
你的 API 已经构建完成。
让 Veto 读取你的 OpenAPI 规范。Agent 会获得三个工具:搜索、描述和调用。你来指定 API 之间如何关联。删除操作会等待人员审批。
无需重写 API。Agent 不会为每个端点都获得一个工具。
亲自体验:运行 Harbor 演示。查看 Mara 的订单、客户和发票之间的关联,以及等待审批的删除操作。
100 个端点。1,000 个端点。仍然只需 3 个 MCP 工具。
搜索 → 描述 → 调用
- 搜索。 使用自然语言查找合适的 API。
- 描述。 查看其架构以及接下来该调用什么。
- 调用。 使用内置控制执行操作。
你的 API 目录不断扩展,Agent 可用的工具始终不变。
你的 API 已互相关联。你的 Agent 也应该了解这些关联。
提问:“谁下了订单 123?”
orders.get → customerId 7 → customers.get
Veto 会利用已声明的关联引导下一次 API 调用。不猜测端点,不虚构关联,也不将整个 API 目录加载到上下文中。
Agent 可以执行操作,而你始终掌握控制权。
提问:“删除订单 123。”
Veto 会暂缓操作,直到有人批准确切的调用方、操作和参数。需要审批时,未经批准就无法继续执行操作。
一个 OpenAPI 目录,多种使用方式。
| 想要…… | Veto 提供…… |
|---|---|
| 连接 Agent | 搜索、描述和调用 |
| 使用终端 | veto search、veto describe、veto invoke |
| 编写脚本 | veto serve --json |
| 从 Go 调用 | 一个为此运行时生成、供所有 API 共用的客户端 |
| 跟随链接访问其他服务 | 使用自然语言搜索,然后沿着你定义的链接继续 |
| 阻止敏感调用 | 由人员批准确切的调用方、操作和参数 |
| 查看运行记录 | 查看执行过的操作,同时排除机密信息 |
一个目录,一个运行时,各接口行为一致。模块 github.com/aiveto/veto。
开始使用
已经有 OpenAPI 规范?只需三条命令,即可创建你的第一个 MCP 服务。
brew install aiveto/veto/veto
veto init orders.yaml customers.yaml
veto serve --stdio
设置指南中包含 Claude、Cursor 或 ChatGPT 的配置代码块。
查看 Veto 的实际运行效果
Harbor 是一个可运行的示例:订单、客户、账单、它们之间的关联,以及等待审批的删除操作。运行 make demo 即可先通过 CLI、再通过 MCP 体验。
本仓库中的本地示例无需模型 API 密钥:go run ./examples/two-apis。
你已经有了 API。为你的 Agent 提供更好的使用方式。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。