关于 Mockd
Mockd 是一个多协议 API 模拟服务器,以单个二进制文件提供 HTTP、gRPC、GraphQL、WebSocket、MQTT、SSE 和 SOAP 的模拟。适合需要在本地测试或开发 API 的开发者与测试人员。项目内置 MCP 服务,可供 AI Agent 直接创建和管理模拟。
主要功能
- 01单一二进制文件,支持七种协议
- 02从 OpenAPI、Postman、HAR、WSDL 等格式导入
- 03混沌工程:延迟、错误和熔断器
- 04有状态 CRUD 接口与工作区隔离
- 05内置 Web 控制台与代理录制
适用场景
- 01在后端接口未就绪时进行前端开发
- 02模拟 Stripe 等第三方 API 进行集成测试
- 03通过 AI Agent 自动生成和验证模拟接口
MCP 相关
该项目内置 MCP 服务,提供18个工具,供 AI Agent 创建模拟、管理状态、导入规范和验证契约,无需直接使用命令行。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
docker run -i --rm ghcr.io/getmockd/mockd本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
ghcr.io/getmockd/mockdstdio工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
一个二进制文件。七种协议。零依赖。
通过单个 CLI 工具模拟 HTTP、gRPC、GraphQL、WebSocket、MQTT、SSE 和 SOAP。
导入 OpenAPI 规范。构建数字孪生。让 AI Agent 为你创建模拟。
快速开始
# Install
curl -sSL https://get.mockd.io | sh
# Start + create a stateful CRUD API in one command
mockd start
mockd add http --path /api/users --stateful users
# It works immediately
curl -X POST localhost:4280/api/users -d '{"name":"Alice","email":"[email protected]"}'
# → {"id":"a1b2c3","name":"Alice","email":"[email protected]"}
curl localhost:4280/api/users
# → {"data":[{"id":"a1b2c3","name":"Alice","email":"[email protected]"}],"meta":{"total":1}}
更多安装选项
brew install getmockd/tap/mockd # Homebrew
docker run -p 4280:4280 -p 4290:4290 ghcr.io/getmockd/mockd:latest # Docker
go install github.com/getmockd/mockd/cmd/mockd@latest # Go
可在 Releases 页面获取适用于 Linux、macOS 和 Windows 的预构建二进制文件。
为什么选择 mockd?
其他模拟工具都让你做出选择:选一种协议、安装运行时、再添加扩展。mockd 不会。
| mockd | WireMock | Mockoon | Prism | MockServer | Beeceptor | json-server | |
|---|---|---|---|---|---|---|---|
| 单个二进制文件,无需运行时 | ✅ | ❌ JVM | ❌ Electron | ✅ | ❌ JVM | ❌ SaaS | ❌ Node |
| 内置全部 9 种协议 | ✅ | 🔌 扩展 | 部分支持 | 仅 HTTP | 仅 HTTP | 部分支持 | 仅 REST |
| 故障配置文件 + 断路器 | ✅ | ⚠️ 云端 | ❌ | ❌ | ❌ | ❌ | ❌ |
| MCP 服务 | ✅ 本地 | ⚠️ 云端 | ❌ | ❌ | ❌ | ⚠️ 云端,Team 及以上 | ❌ |
| 免费 + 可自托管,无限使用 | ✅ | ✅ | ✅ | ✅ | ✅ | 每天 50 次请求 | ✅ |
🔌 扩展 = 需要单独的扩展 JAR • ⚠️ 云端 = 仅限付费/托管版本
完整功能矩阵(部署、协议、功能、导入/导出、定价)
部署
| mockd | WireMock | Mockoon | Prism | MockServer | Beeceptor | json-server | |
|---|---|---|---|---|---|---|---|
| 原生单个二进制文件 | ✅ Go | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ |
| 所需运行时 | 无 | JVM | Electron/Node | 可选 Node | JVM | 不适用(SaaS) | Node |
| Docker 镜像 | ✅ | ✅ | ✅ CLI | ✅ | ✅ | ⚠️ 企业版 | ❌ |
| 托管式 SaaS 服务 | 规划中 | WireMock Cloud | Mockoon Cloud | Stoplight | ❌ | ✅ | ❌ |
协议支持
| mockd | WireMock OSS | Mockoon | Prism | MockServer | Beeceptor | json-server | |
|---|---|---|---|---|---|---|---|
| REST / HTTP | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| gRPC | ✅ | 🔌 扩展 | ❌ | ❌ | ❌ | ✅ | ❌ |
| GraphQL | ✅ | 🔌 扩展 | ❌ | ❌ | ❌ | ✅ | ❌ |
| WebSocket | ✅ | 🔌 扩展(测试版) | ✅ | ❌ | ❌ | ❌ | ❌ |
| MQTT | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| SSE | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| SOAP(WSDL) | ✅ | ❌ | 部分支持 | ❌ | 部分支持 | ✅ | ❌ |
| mTLS | ✅ | ✅ | 部分支持 | ❌ | ✅ | ✅ | ❌ |
| OAuth 流程 | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
功能
| mockd | WireMock OSS | Mockoon | Prism | MockServer | Beeceptor | json-server | |
|---|---|---|---|---|---|---|---|
| 有状态 CRUD | ✅ | ❌ | ✅ | 部分支持 | ❌ | ✅ | ✅ |
| 多步骤有状态流程 | ✅ | ✅ 场景 | 部分支持 | ❌ | 部分支持 | ✅ | ❌ |
| 故障注入(延迟、错误) | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ❌ |
| 混沌配置 | ✅ | ⚠️ 云端 | ❌ | ❌ | ❌ | ❌ | ❌ |
| 熔断器 | ✅ | ⚠️ 云端 | ❌ | ❌ | ❌ | ❌ | ❌ |
| 带宽限制 | ✅ | ❌ | ❌ | ❌ | ❌ | 规划中 | ❌ |
| 管理 REST API | ✅ | ✅ | 仅 CLI | ❌ | ✅ | ✅ | 部分支持 |
| 内置 Web 仪表板 | ✅ | ⚠️ 云端 | ⚠️ 云端 | ❌ | ✅ 只读 | ✅ | ❌ |
| 原生桌面 GUI | ❌ | ❌ | ✅ Electron | ❌ | ❌ | ❌ | ❌ |
| MCP 服务 | ✅ 本地 | ⚠️ 云端 | ❌ | ❌ | ❌ | ⚠️ Cloud Team+ | ❌ |
| 云隧道共享 | ✅ | ❌ | ⚠️ 云端 | ❌ | ❌ | ✅ | ❌ |
导入 / 导出
| mockd | WireMock OSS | Mockoon | Prism | MockServer | Beeceptor | json-server | |
|---|---|---|---|---|---|---|---|
| 导入 OpenAPI | ✅ | ⚠️ 云端 | ✅ | ✅ | ✅ | ✅ | ❌ |
| 导入 Postman | ✅ | ⚠️ 云端 | ❌ | ✅ | ❌ | ❌ | ❌ |
| 导入 HAR | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| 导入 WSDL | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ |
| 导入 cURL | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| 导入 WireMock 格式 | ✅ | 原生支持 | ❌ | ❌ | ❌ | ❌ | ❌ |
| 导入 Mockoon 格式 | ✅ | ❌ | 原生支持 | ❌ | ❌ | ❌ | ❌ |
| 导出 HAR | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ❌ |
免费层限制
| 请求数 | Mock 规则 | 费用 | |
|---|---|---|---|
| mockd | 不限 | 不限 | 免费(Apache 2.0) |
| WireMock OSS | 不限 | 不限 | 免费(Apache 2.0) |
| Mockoon 桌面版 / CLI | 不限 | 不限 | 免费(MIT) |
| Prism | 不限 | 不限 | 免费(Apache 2.0) |
| MockServer | 不限 | 不限 | 免费(Apache 2.0) |
| Beeceptor 免费层 | 每个端点每天 50 次 | 3 条 | 更多功能需 $10/mo+ |
| json-server | 不限 | 不限 | 免费(MIT) |
图例:✅ 内置 • 🔌 Ext = 独立的 OSS 扩展 • ⚠️ 云端 = 仅限付费 / 托管层级 • 部分支持 = 实现有限 • 规划中 = 已列入项目公布的路线图,但尚未发布
关于 WireMock 导入的说明。 OpenAPI 和 Postman 导入旁的
⚠️ 云端标记指 WireMock 官方功能。社区也提供转换工具(例如openapi-to-wiremock、OpenAPI Generator 目标),但它们未随 OSS 独立 JAR 一同打包。
数字孪生
导入真实 API 规范,将其绑定到有状态表,即可获得能通过真实 SDK 测试的 Mock:
# mockd.yaml — Stripe digital twin
version: "1.0"
imports:
- path: stripe-openapi.yaml
as: stripe
tables:
- name: customers
idStrategy: prefix
idPrefix: "cus_"
seedData:
- { id: "cus_1", name: "Acme Corp", email: "[email protected]" }
extend:
- { mock: stripe.GetCustomers, table: customers, action: list }
- { mock: stripe.PostCustomers, table: customers, action: create }
- { mock: stripe.GetCustomersCustomer, table: customers, action: get }
- { mock: stripe.PostCustomersCustomer, table: customers, action: update }
- { mock: stripe.DeleteCustomersCustomer, table: customers, action: delete }
mockd start -c mockd.yaml --no-auth
curl -X POST localhost:4280/v1/customers -d "name=Test&[email protected]"
# → {"id":"cus_a1b2c3","object":"customer","name":"Test","email":"[email protected]"}
已使用真实 SDK 验证:
- Stripe:
stripe-goSDK 测试 49/49 通过 - Twilio:
twilio-goSDK 测试 13/13 通过 - OpenAI:已验证
openaiPython SDK(模型、助手、聊天补全)
完整的数字孪生配置请参阅 mockd-samples。
AI 原生(MCP)
mockd 内置 Model Context Protocol 服务,提供 18 个工具。AI Agent 无需使用 CLI,即可创建 Mock、管理状态、导入规范并验证契约:
{
"mcpServers": {
"mockd": { "command": "mockd", "args": ["mcp"] }
}
}
可用于 Claude Desktop、Cursor、Windsurf 以及任何兼容 MCP 的编辑器。工具涵盖 Mock CRUD、有状态资源、混沌注入、请求日志、验证、工作区以及导入 / 导出。
功能
多协议模拟 — 7 种协议,统一 CLI
| 协议 | 端口 | 示例 |
|---|---|---|
| HTTP/HTTPS | 4280 | mockd add http --path /api/hello --body '{"msg":"hi"}' |
| gRPC | 50051 | mockd add grpc --proto svc.proto --service Greeter --rpc-method Greet |
| GraphQL | 4280 | mockd add graphql --path /graphql --operation hello |
| WebSocket | 4280 | mockd add websocket --path /ws --echo |
| MQTT | 1883 | mockd add mqtt --topic sensors/temp --payload '{"temp":72}' |
| SSE | 4280 | mockd add http --path /events --sse --sse-event 'data: hello' |
| SOAP | 4280 | mockd add soap --path /soap --operation GetWeather --response '<OK/>' |
导入与导出 — OpenAPI、Postman、HAR、WireMock、cURL、WSDL
mockd import openapi.yaml # OpenAPI 3.x / Swagger 2.0
mockd import collection.json # Postman collections
mockd import recording.har # HAR files
mockd import wiremock-mapping.json # WireMock stubs
mockd import service.wsdl # WSDL → SOAP mocks
mockd import "curl -X GET https://api.example.com/users" # cURL commands
mockd export --format yaml > mocks.yaml
混沌工程 — 延迟、错误、断路器
mockd chaos apply flaky # 30% error rate
mockd chaos apply slow-api # 200-800ms latency
mockd chaos apply offline # 100% 503 errors
mockd chaos disable
云隧道 — 即时共享本地模拟
mockd tunnel
# → https://a1b2c3d4.tunnel.mockd.io → http://localhost:4280
全部 7 种协议通过端口 443 上的单个安全连接进行多路复用。可在 NAT 和防火墙环境下使用。
工作区 — 隔离的模拟环境
mockd workspace create -n "Payment API" --use
mockd import stripe-openapi.yaml
mockd workspace create -n "Comms API" --use
mockd import twilio-openapi.yaml
# Mocks, state, and logs are fully isolated per workspace
代理录制 — 录制真实流量,并重放为模拟
mockd proxy start --port 8888
# Configure your app to use http://localhost:8888 as proxy
# Traffic is recorded, then replay with:
mockd import recordings/session.json
Web 控制面板 — 直观管理模拟
发布版本会通过管理端口(http://localhost:4290)提供 Web UI。提供 VS Code 风格的编辑器、命令面板、带文件夹的模拟树、请求日志查看器,以及近似匹配调试功能。
Mockd Cloud
mockd 无需账户即可完全离线运行。对于希望使用共享环境的团队:
- 持久云端模拟 — 部署整个团队都能访问的模拟环境
- 团队管理 — 带访问控制的共享工作区
- 云隧道 — 带自定义域名的身份验证隧道
即将推出。加入候补名单。
文档
完整指南、API 参考和配置文档请访问 docs.mockd.io。
贡献
欢迎贡献!请参阅 CONTRIBUTING.md 了解设置方法。
许可证
Apache License 2.0 — 可免费用于商业用途。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。