mockd is a versatile multi-protocol mock server for API simulation, testing, and development — with stateful data, chaos engineering, and AI-native tooling.
Multi-protocol Mocking: Create, retrieve, update, delete, list, and toggle mock endpoints for HTTP/HTTPS, gRPC, GraphQL, WebSocket, MQTT, SSE, SOAP, and OAuth — with request matching rules (path, method, headers, query params) and configurable responses.
Stateful Resource Management: Define and interact with CRUD collections (stateful tables) that persist data across requests — add items, list/get items, and reset to seed data.
Custom Operations: Register, list, retrieve, delete, and execute custom operations on stateful resources with defined steps and response logic.
Import/Export: Import mock definitions from OpenAPI specs, Postman collections, HAR files, WireMock stubs, cURL commands, or WSDL; export current mocks as YAML or JSON for backup or version control.
Chaos Engineering: Configure fault injection with latency, error rates, bandwidth throttling, and advanced stateful faults (circuit breakers, retry-after, progressive degradation, chunked dribble) — or apply named profiles like
slow-api,flaky, oroffline. Reset stats and manually trip/reset circuit breakers.Request Logging & Verification: Capture and filter request/response logs, identify unmatched requests with near-miss analysis, verify mock invocation counts (exact, at-least, at-most), and reset verification data between test runs.
Workspace Management: Organize mocks into isolated environments, keeping configurations, state, and logs separate per project or scenario.
Server Administration: Get server health, active ports, statistics, and manage server contexts to communicate with different mockd instances.
Proxy Recording & Cloud Tunneling: Record live traffic for replay as mocks, and share local mocks publicly via secure cloud tunnels.
AI Integration (MCP): Acts as an AI-native server via the Model Context Protocol, exposing 18 tools so AI agents can create and manage mocks programmatically.
Web Dashboard: Visual interface for managing mocks and viewing request logs via a dedicated admin port.
Allows importing cURL commands to instantly generate mock API definitions.
Provides tools for mocking GraphQL APIs, including operation-specific matching and response definitions.
Provides a built-in MQTT broker for mocking messaging topics and payloads.
Enables importing Postman collections to automatically create functional mock servers.
Supports importing OpenAPI and Swagger 2.0 specifications to generate mock API structures.
Supports mocking XML-based protocols such as SOAP and defining XML response bodies.
Uses YAML for mock configuration, environment setup, and importing/exporting API definitions.
Quick Start
# 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":"alice@test.com"}'
# → {"id":"a1b2c3","name":"Alice","email":"alice@test.com"}
curl localhost:4280/api/users
# → {"data":[{"id":"a1b2c3","name":"Alice","email":"alice@test.com"}],"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 # GoPre-built binaries for Linux, macOS, and Windows on the Releases page.
Why mockd?
Every other mock tool makes you choose: pick one protocol, install a runtime, bolt on extensions. mockd doesn't.
mockd | WireMock | Mockoon | json-server | Prism | MockServer | |
Single binary, no runtime | :white_check_mark: | :x: JVM | :x: Node | :x: Node | :x: Node | :x: JVM |
HTTP + gRPC + GraphQL + WS | :white_check_mark: | 🔌 Ext | :x: | :x: | :x: | Partial |
MQTT + SSE + SOAP + OAuth | :white_check_mark: | :x: | :x: | :x: | :x: | :x: |
Stateful CRUD | :white_check_mark: | :x: | :white_check_mark: | :white_check_mark: | :x: | :x: |
Import OpenAPI/Postman/HAR | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: | :white_check_mark: |
Chaos engineering | :white_check_mark: | :white_check_mark: | :x: | :x: | :x: | :x: |
MCP server (AI-native) | :white_check_mark: | :x: | :x: | :x: | :x: | :x: |
Cloud tunnel sharing | :white_check_mark: | :x: | :white_check_mark: | :x: | :x: | :x: |
Built-in web dashboard | :white_check_mark: | :x: | :white_check_mark: | :x: | :x: | :x: |
🔌 Ext = available via separate extension, not bundled. mockd includes everything in a single binary.
Digital Twins
Import a real API spec, bind it to stateful tables, and get a mock that passes the real SDK:
# 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: "billing@acme.com" }
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=test@corp.com"
# → {"id":"cus_a1b2c3","object":"customer","name":"Test","email":"test@corp.com"}Validated with real SDKs:
Stripe: 49/49
stripe-goSDK tests passTwilio: 13/13
twilio-goSDK tests passOpenAI:
openaiPython SDK verified (models, assistants, chat completions)
See mockd-samples for complete digital twin configs.
AI-Native (MCP)
mockd includes a built-in Model Context Protocol server with 18 tools. AI agents can create mocks, manage state, import specs, and verify contracts without touching the CLI:
{
"mcpServers": {
"mockd": { "command": "mockd", "args": ["mcp"] }
}
}Works in Claude Desktop, Cursor, Windsurf, and any MCP-compatible editor. Tools cover mock CRUD, stateful resources, chaos injection, request logs, verification, workspaces, and import/export.
Features
Protocol | Port | Example |
HTTP/HTTPS | 4280 |
|
gRPC | 50051 |
|
GraphQL | 4280 |
|
WebSocket | 4280 |
|
MQTT | 1883 |
|
SSE | 4280 |
|
SOAP | 4280 |
|
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.yamlmockd chaos apply flaky # 30% error rate
mockd chaos apply slow-api # 200-800ms latency
mockd chaos apply offline # 100% 503 errors
mockd chaos disablemockd tunnel
# → https://a1b2c3d4.tunnel.mockd.io → http://localhost:4280All 7 protocols multiplexed through a single secure connection on port 443. Works behind NAT and firewalls.
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 workspacemockd proxy start --port 8888
# Configure your app to use http://localhost:8888 as proxy
# Traffic is recorded, then replay with:
mockd import recordings/session.jsonRelease builds serve a web UI from the admin port (http://localhost:4290). VS Code-style editor, command palette, mock tree with folders, request log viewer, and near-miss debugging.
Mockd Cloud
mockd works fully offline with no account required. For teams that want shared environments:
Persistent cloud mocks — deploy mock environments your whole team can hit
Team management — shared workspaces with access controls
Cloud tunnels — authenticated tunnels with custom domains
Coming soon. Join the waitlist.
Documentation
Full guides, API reference, and config docs at mockd.io.
Contributing
Contributions welcome! See CONTRIBUTING.md for setup.
License
Apache License 2.0 — free for commercial use.