本地优先、AI 原生的 OpenAPI 工作室

从本地 API 开发,
到文档发布与 AI 连接。

让 Codex、Claude Code、Cursor 按接口定义写代码。在本地优先的 Powerduck 客户端中,扫描代码生成文档,用 AI 编排测试,再通过 Hub 免费托管 OpenAPI 文档与 MCP Server。

commerce-api/openapi.yaml OpenAPI 3.1 · 本地文件
一份 OpenAPI 契约
/orders
  post  createOrder
  get   listOrders
/products
  get   listProducts
/customers
  get   listCustomers
编译为可运行的 MCP 服务器 · 12 个可调用工具
你的编码 Agent Cursor · Claude Code · Codex
powerduck · MCP server
powerduck.read_spec() 发现 12 个接口
powerduck.start_mock("POST /orders") Mock 服务已启动 :4010
powerduck.generate_tests("POST /orders") 已生成 orders.test.js
powerduck.call_api("POST /orders", {total:49}) 200 OK · 已通过契约校验
powerduck.publish_docs() 参考文档已更新
一份 OpenAPI 文件直接编译为 Agent 可调用的工具——mock、测试、接口调用与文档,全部对照同一契约校验。

本地工作无需账号;远程 AI 使用你选择的模型服务,在线托管需要 Cloud 账号。

规范编辑器  ·  API 调试  ·  测试  ·  Mock  ·  API 文档  ·  MCP 服务

POWERDUCK HUB

一份 OpenAPI 规范,贯穿本地开发与在线分享。

在客户端完成 API 开发与验证,通过 Hub 分享文档,让 AI 工具连接你的 API。

  1. 01

    开发与验证

    在 Powerduck 中设计、调试和测试 API。

  2. 02

    从 OpenAPI 发布

    将规范发布为在线 API 文档和可连接的 MCP 服务。

  3. 03

    分享与连接

    分享文档链接、连接 MCP 客户端,自主选择是否在 Hub 公开展示。

免费托管受套餐额度限制;业务 API 仍由你自己的后端提供。

为什么选择 Powerduck

一个本地文件,取代整套 API 工具。

仓库里的一份 OpenAPI YAML 即可驱动设计、调试、测试、mock、文档与 MCP——你的编程助手也使用同一份文件。

一份文件,贯穿所有环节

用同一份 OpenAPI 规范完成设计、调试、测试、mock、文档与 MCP 发布,任何环节都不会脱节。

其他工具 集合、文档、mock、测试文件各自维护
Powerduck 一份 YAML 驱动所有工具和你的编程助手

每个响应都经过契约校验

每个响应都会对照 OpenAPI 规范检查,而不仅仅是显示——错误的类型或路径当场就能发现。

其他工具 只发送请求并显示 200 响应
Powerduck 响应一返回,规范偏差立即被标记

本地优先,无需账号,适配编程助手

文件留在你的机器上,无需账号或上传即可使用。Codex、Claude Code 和 Cursor 读取的正是你手上的同一份规范。

其他工具 开始前需要云账号并上传文件
Powerduck 本地运行;你的编程助手读取同一份文件
~/commerce-api/openapi.yaml OpenAPI 3.1.0 3 个问题 未保存
142 /users/{id}:
143 get:
144 operationId: getUser
145 summary: Retrieve a user
146 tags: [Users]
147 parameters:
148 - $ref: '#/components/parameters/UserId'
149 responses:
150 '200':
151 description: The requested user
152 content:
153 application/json:
154 schema:
155 $ref: '#/components/schemas/User'
156 '404': # description is required
157 contents:
158 application/json:
159 schema:
160 $ref: '#/components/schemas/Erorr'
161 delete:
162 summary: Delete a user
问题 2 个错误 · 1 个警告 已按 3.1 方言验证
156:9 contents is not a valid Response Object key. Did you mean content? oas3-schema
160:24 Unresolved $ref — schemas/Erorr does not exist. ref-resolution
162:7 Operation has no operationId. It will be skipped when generating MCP tools. operation-operationId
第 156 行,第 9 列 YAML UTF-8 空格:2 3.1.0
从 openapi.yaml 生成的集合 Postman 导入 契约检查已开启
GET ▾
{{baseUrl}}/users/{{userId}}?include=profile
预发布环境 ▾
参数1 鉴权bearer 请求头3 请求体 脚本 设置
# GET has no requestBody in the specification — body disabled
# Path parameter id resolved from environment → userId = usr_8Kd2Xa
200 OK 148 ms 1.2 KB 契约:1 处不一致
请求体 请求头9 Cookie 契约1 时间线
{
  "id": "usr_8Kd2Xa",
  "email": "ada@example.com",
  "created": 1757030400,
  "profile": {
    "name": "Ada L.",
    "locale": "en-GB"
  },
  "scope": "users:read orders:read"
}
Contract mismatch — response differs from the specification scope is present in the response but is not declared on components/schemas/User. Add the property to the schema or remove it from the handler.
mcp://localhost:7433 运行中 stdio + HTTP

从 openapi.yaml 生成

6 个工具 7 个资源 1 项降级 保存时重新生成

Every operation with an operationId becomes a tool. Arguments come from parameters and requestBody. Nothing is hand-written.

POST /auth/login → operationId → loginUser
loginUser

Exchange credentials for a bearer token.

email : string password : string
GET /users/{id} → operationId → getUser
getUser

Retrieve a single user by identifier.

id : string include? : string
POST /orders → operationId → createOrder
createOrder

Create an order for the authenticated customer.

items : array currency : string
POST /orders/{id}/refund → operationId → refundOrder
refundOrder

Refund an order in full or in part.

id : string amount? : integer
14:02:11 watch openapi.yaml changed (line 144)
14:02:11 build parsed 3.1.0 · 11 operations · 14 schemas
14:02:11 build 6 个工具, 7 resources · 1 skipped (no operationId)
14:02:12 serve listening on stdio and http://localhost:7433
14:02:31 call getUser { id: "usr_8Kd2Xa" } → 200 in 148 ms
docs.example.dev/reference/users/get 静态导出 与规范同步

Retrieve a user

GET /v1/users/{id}

Returns the user object for a valid identifier. If the user has been deleted, an Error object is returned with status 404.

路径参数
id string 必填
The identifier of the user, prefixed with usr_.
查询参数
include string
Expand a related object.

在真实工作流中查看

每个熟悉的繁琐工作,都变成契约驱动的流程。

选择下面的任务。Powerduck 直接用你机器上的 OpenAPI 文件运行——环境、测试与 mock 一应俱全,无需账号或上传。

选择本地,不该意味着功能缩水。

本地 API 工作台,无需账号,也不用先上传文件。请求、鉴权、环境、断言,熟悉的工作照常做。需要在线发布时,再选择 Cloud。

  • 导入 cURL / Postman / OpenAPI
  • 鉴权与环境变量
  • 脚本与断言
  • 请求集合与场景测试
  • 本地 Mock 服务
  • 七种协议调试

本地工作无需账号;远程 AI 使用你选择的模型服务,在线托管需要 Cloud 账号。

你是否拿到了接口文档,却还得翻源码才能确认它写得对不对?

从项目生成接口文档。

一份可审阅的接口定义,以及能打开的本机文档链接。

查看配置与使用条件

你是否把文档给了 AI,生成的字段和路径却仍然对不上?

让编程助手读取真实接口定义。

代码有定义可依,结果有真实响应可验。

查看配置与使用条件

你是否每改一次接口,就得手动重跑一遍相同的业务流程?

让 AI 编排并运行整个业务场景。

每一步的执行结果和失败断言,不是只给你一段测试代码。

查看配置与使用条件

你是否只是换了一种接口协议,就不得不换一个调试工具?

七种协议,在一个工作台排查。

需要亲自排查时,每一次请求和返回都看得清。

查看配置与使用条件

你是否每次让 AI 排错,都得重新复制请求、响应和接口背景?

带着真实请求上下文,让 AI 排错。

基于真实请求结果的排查,而不是凭空猜原因。

查看配置与使用条件

你是否只是想分享文档和 MCP,却还要单独搭建、维护托管服务?

一份 API,发布文档与 MCP。

文档地址 + MCP 服务地址,不用自己搭建托管环境。

查看配置与使用条件

从你自己的电脑开始

下载,打开,把活干完。

Powerduck 的主场是桌面:打开本地文件,发出第一个请求,需要时再接上编程助手。开始工作,不需要先注册。

日常工作的主力

把这里变成你的 API 工作台。

本地文件、代码扫描、原生协议调试,都在桌面版。需要帮手时,接入你选择的 AI 模型,协助设计、排错和测试。

  1. 1 下载应用并体验本地示例,无需账号或模型 Key。
  2. 2 打开自己的 OpenAPI 文件,或扫描已有代码库。
  3. 3 连接编程 Agent,修改代码,再按契约验证真实后端。
下载桌面版

macOS 12+ · Windows 10+ · Linux

还想先看看?

浏览器里,快速体验一下。

网页版演示使用共享云端模型,需要登录。无需账号的本地工作,请下载桌面版。

打开网页版

契约验证

一个真实的契约错误,以及验证通过的修复

普通 API 客户端只发送请求并展示响应;Powerduck 还会按 OpenAPI 契约校验每一个响应,一旦偏离规范即可立即发现。

查看实战示例
~/commerce-api — response check OpenAPI 3.1
契约要求
total:
  type: number
后端返回了字符串
{
  "total": "49.00"
}
/total 必须是 number —— 响应不符合契约
返回数字
{
  "total": 49
}
响应符合契约

OpenAPI 规范编辑器

OpenAPI 规范编辑器

大纲依据规范的真实结构生成,而不是靠缩进猜测。以树形浏览路径和组件,在问题所在处直接修复。

  • 基于 Schema 的校验。 按文件实际声明的 3.0、3.1 或 3.2 方言进行校验。
  • 可解析的 $ref 导航。 跳转到定义、查看引用,并获得拼写错误引用的建议。
  • 就地编辑。 你的仓库始终是唯一事实来源。
  • 问题带规则名。 CI 报错和编辑器诊断使用同一套词汇。
openapi.yaml 3 个问题
▾ info
▾ paths
 /users
 /users/{id}
 /orders
▾ components
 schemas
 responses
142 /users/{id}:
143 get:
144 operationId: getUser
145 responses:
156 contents:
160 $ref: Erorr
问题 · 2 个错误 · 1 个警告
156:9 contents is not a valid Response Object key
160:24 Unresolved $ref. Closest match: Error
API 调试 契约检查已开启
▾ Users
 GET listUsers
 GET getUser
▾ Orders
 POST createOrder
GET {{baseUrl}}/users/{{userId}} 发送
参数 鉴权 请求体 请求头
{
  "id": "usr_8Kd2Xa",
  "email": "ada@example.com",
  "scope": "users:read"
}
Contract mismatch — "scope" is not declared on User.

接口调试

基于规范调试 API

请求界面沿用开发者熟悉的工具形态,再加上那些工具默认做不到的一件事:对照契约校验响应。

  • 按路径和标签自动生成集合。 无需导入,也不用手动重新同步。
  • 每次响应都做契约检查。 内联发现未声明字段、缺失字段和类型漂移。
  • 环境与变量。 复用已有的开发、预发配置。
  • 从 securitySchemes 生成鉴权。 Bearer、API Key 和 OAuth 配置都从规范开始。

MCP 服务器生成器

从 OpenAPI 生成 MCP 服务器

你的规范本身就是一份工具清单。Powerduck 把它编译成可运行的 MCP 服务器,并清楚展示每个工具来自哪些 OpenAPI 字段。

  • 来源可见。 每个工具都能追溯到它的 operation、operationId 和 schema。
  • 降级与跳过状态。 缺失的元数据会明确显示,而不是悄悄生成能力薄弱的工具。
  • 保存即重新生成。 修改规范,工具随之更新,无需构建步骤。
  • 本地传输方式。 通过 stdio 或 HTTP 运行,服务本地助手与工作流。
mcp://localhost:7433 运行中
从 openapi.yaml 生成 6 个工具 7 个资源
GET /users/{id} → operationId
getUser
id: string
POST /orders → operationId
createOrder
items: array
POST /auth/login
loginUser
email, password
DELETE /users/{id}
已跳过
缺少 operationId
14:02 build 6 tools, 7 resources
14:02 serve listening on :7433
14:03 call getUser → 200
API 参考 静态导出
Users
概览
Retrieve a user
List users
Update user

Retrieve a user

GET /v1/users/{id}
Returns the user object for a valid identifier.
路径参数
id · string · required
返回值
User · object
curl /users/{id}

{
  "id": "usr_...",
  "email": "ada@..."
}

接口文档生成器

来自同一契约的 API 文档

参考文档直接从 OpenAPI 模型生成,导出为静态文件,想部署到哪里都可以。

  • 从 schema 生成参数表。 必填标记、枚举和描述始终保持同步。
  • 多语言示例。 从 operation 生成 cURL、Node、Python 和 Go 示例。
  • 响应来自真实契约。 成功和错误响应与调试器校验的是同一批对象。
  • 静态导出。 无运行时依赖,也不被任何文档平台锁定。

唯一事实来源

本地一个 OpenAPI 文件,
所有能力,皆由 AI 驱动。

在本地打开 openapi.yaml 或 openapi.json,Powerduck 就把你已有的契约变成完整的 API 工作台。无需导入、无需转换、没有并行的集合、没有云端副本。用大白话描述想要的结果,内置助手就通过可审阅的步骤完成——同一份文件还能用 MCP 与任何 AI 编程助手对话。

本地打开
{ }
openapi.yaml
或 openapi.json

文件始终留在你的仓库里。

01 规范编辑器

编辑、浏览并校验真实契约。

02 接口调试

发送由同一批 operation 生成的请求。

03 MCP 服务器

把 operation 编译成面向助手的工具。

04 接口文档

从同一来源发布文档。

Powerduck

不是又一个 API 客户端,
不是又一个规范查看器,
而是一种 AI 原生的 API 构建方式。

这是围绕 OpenAPI 文件本身打造的本地原生、AI 驱动工作台。

无需云端你的规范根本不需要离开你的机器。
无需手动同步再没有别的东西需要和契约保持同步。
无需额外副本你现有的 YAML 或 JSON 就是工作台。

本地工作、远程服务与你的选择

本地文件读写无需账号。远程 AI 会向你配置的模型服务发送相关上下文;主动发布到 Cloud 时上传所选内容。可选使用统计默认关闭,采集字段与开关见隐私说明。

隐私政策

本地功能不需要购买 Cloud。免费使用包含两个规范名额,审核通过的分享奖励可增加名额;桌面授权解除名额限制。自带 Key 的费用由模型服务商收取,托管模型额度与 Cloud 托管另行计费。

按你的需要,选择下一步

对比产品与价格 →

常见问题

开发者最先问的问题

关于本地文件、OpenAPI 版本、MCP 生成与授权的实用细节。

Powerduck 会把我的 OpenAPI 规范上传到任何地方吗?

本地文件读写无需账号。远程 AI 会向你配置的模型服务发送相关上下文;主动发布到 Cloud 时上传所选内容。可选使用统计默认关闭,采集字段与开关见隐私说明。

支持哪些 OpenAPI 版本?

OpenAPI 3.0、3.1 和 3.2。Powerduck 会检测声明的版本,并按对应的方言校验,而不是采用最小公约数。

MCP 服务器是怎么生成的?

带 operationId 的 operation 会成为 MCP 工具,参数由 parameters 和 requestBody schema 推导而来。组件 schema 可作为资源暴露。规范一旦变化,生成的服务器就会更新。

桌面授权是订阅制吗?

不是。Powerduck 桌面版是一次性购买的永久授权,大版本内的更新都包含在内,未来的大版本升级仍然可选。

我还能继续用 Postman 集合吗?

可以。已有的集合和环境都能继续使用。Powerduck 把 OpenAPI 规范当作权威契约,并帮你找出请求与契约的偏差。

能用在 CI 里吗?

可以。同一套校验和生成引擎通过 @powerduck/openapi-cli 暴露,这是一个可用于 CI 的命令行工具,在 Pull Request 和自动化流水线中运行。它支持跨 6 种协议(HTTP、SSE、WebSocket、gRPC、MCP、GraphQL)批量测试、可配置并发,并生成兼容 JUnit 的报告用于 CI 集成。

了解 openapi-cli →