6.0.0 起需 Java 17+,仍用 Java 11 要锁定 5.15.x;6.0.0 移除了 shaded classifier,需改用 mockserver-netty-no-dependencies;仅限开发测试使用,不要用于生产环境。
mockserver-monorepo
mock-serverApache-2.0活跃维护一个支持 HTTP/1.1、HTTP/2、gRPC、WebSocket、TCP 的 mock 服务器和代理,能模拟 API、检查修改实时流量并注入故障,适合联调和混沌测试。
MockServer is an HTTP(S) mock server and proxy for testing that lets you mock APIs, inspect and modify live traffic, and inject failures. It supports HTTP/1.1, HTTP/2, gRPC, WebSockets, TCP and more on a single port, with additional support for HTTP/3, message brokers, and AI/LLM APIs.
docker run -d --rm -p 1080:1080 mockserver/mockserver
curl -X PUT http://localhost:1080/mockserver/expectation -H 'Content-Type: application/json' -d '{"httpRequest":{"method":"GET","path":"/hello"},"httpResponse":{"statusCode":200,"body":"Hello World"}}'README 未说明 GPU 或显存要求;运行时需 Java 17+,官方 Docker 镜像自带 JVM,容器用户无需自装 JVM。
单端口自动识别多协议的 HTTP(S) mock 与代理服务器,用于模拟 API、录制改写流量并注入故障
一个支持 HTTP/1.1、HTTP/2、gRPC、WebSocket、TCP 的 mock 服务器和代理,能模拟 API、检查修改实时流量并注入故障,适合联调和混沌测试。
核心能力
- 单端口按首字节自动识别 HTTP/1.1、HTTP/2、gRPC、WebSocket 与 TCP
- 可作正向代理或端口转发,录制、查看并改写 TLS 加密流量
- 按需注入延迟、断连和错误,做混沌测试
- 从 OpenAPI/Swagger 规范自动生成 mock 期望
- 内置 MCP 服务,可 mock OpenAI、Anthropic 等 LLM 接口
容易踩的坑
- mockserver-9.2.0MockServer 9.2.0最新正式版2026-10-27 · 2026-10-27 00:11 UTC
[9.2.0] - 2026-10-26
Security
- In the
mockserver-netty-no-dependenciesjar and the Docker images, the bundled Kafka client used for AsyncAPI mocking now refuses theJndiLoginModuleandLdapLoginModuleJAAS login modules in asaslJaasConfig, as Kafka does by default since CVE-2023-25194. The jar renames the libraries it bundles, and the renaming changed the module names Kafka checks against, so the check never matched (#2869) - With
dataPlaneAuthenticationRequiredon, a mocked endpoint could still be reached without credentials in several ways. A path that only starts with/mockserver(such as/mockserverfoo), or a/mockserver/...path that the server does not handle (such as/mockserver/nope, or/mockserver/statusand/readyover HTTP/3), skipped the check and was answered by any matching expectation, a catch-all one included. Over HTTP/1.1, an expectation withrespondBeforeBodyanswered the first request on a connection without checking credentials. And a gRPC bidirectional-streaming expectation (respondWithGrpcBidi) answered over HTTP/2 or HTTP/3 without checking them. gRPC server reflection also answered without credentials, listing the loaded services and message types, and so did a gRPC chaos fault and theUNIMPLEMENTEDanswer for an unknown gRPC method, which told the caller which methods exist. All of these are now refused (401, or gRPC statusUNAUTHENTICATED) like any other mocked endpoint. A refused request does not use up the expectation'sTimes, move its scenario on or count towards a gRPC chaos profile. The control plane, the readiness and liveness probes (the gRPC health check included), and CORS preflights for the control plane still work without data-plane credentials. Data-plane authentication does not apply to DNS mocking dataPlaneAuthenticationRequirednow applies to the WAR deployments (mockserver-war,mockserver-proxy-war) and toInProcessMockServer, which served their mocks without credentials whatever it said. Credentials are checked before a request can match an expectation, so a refused request uses up noTimesand moves no scenario, and a CORS preflight for a control-plane route stays open, as on the standalone server. An in-process request carries its credentials in its headers. In a WAR,tlsMutualAuthenticationRequiredis now enforced too: a mocked request over plain HTTP gets426 Upgrade Required, and one over HTTPS without a client certificate verified by the servlet container gets401; the container's trust store decides which certificates are accepted (see upgrading to 9).- The Kafka SASL JAAS configuration for AsyncAPI broker mocking can now only be set at startup, with the new
asyncKafkaSaslJaasConfigproperty (-Dmockserver.asyncKafkaSaslJaasConfigorMOCKSERVER_ASYNC_KAFKA_SASL_JAAS_CONFIG). A JAAS configuration names the Java login class the Kafka client loads, andPUT /mockserver/asyncapilet any control-plane caller choose it throughbrokerConfig.kafkaSecurity.saslJaasConfig. That request is now rejected with a400that names the startup property, and so is any other field inkafkaSecuritythat MockServer does not know, so no Kafka client setting that loads a class can be passed in;saslMechanismandsecurityProtocolmust be one of Kafka's own values. A request that selectsSASL_PLAINTEXTorSASL_SSLuses the startup JAAS configuration (or the JVM's own JAAS file). Because every SASL login is now held by the server, such a request may only use the startupasyncKafkaBootstrapServers: it must omitkafkaBootstrapServersor name the same brokers, or it gets a400and no credential is sent, and it gets a400while no startup bootstrap servers are set.asyncKafkaBootstrapServerscan now only be set at startup:PUT /mockserver/configurationignores it and lo
- In the
- mockserver-9.1.0MockServer 9.1.02026-10-21 · 2026-10-21 11:40 UTC
查看更新说明
[9.1.0] - 2026-10-21
Security
- Control-plane mTLS could be bypassed by sending the CA certificate after an untrusted client certificate. With
controlPlaneTLSMutualAuthenticationRequiredon, MockServer 5.13.0 to 9.0.0 accepted a control-plane request if any certificate the client sent could be validated againstcontrolPlaneTLSMutualAuthenticationCAChain. A CA certificate is public, so anyone who could reach the control plane could send their own certificate followed by your CA certificate and create, read or delete expectations, change the configuration or reset the server, without the CA's private key. Also requiring data-plane mTLS (tlsMutualAuthenticationRequired) did not prevent this in the default set-up: the data-plane check also trusts MockServer's own CA, which by default is the CA bundled with MockServer, and its private key is published in the jar, so an attacker could sign their certificate with it. Data-plane mTLS prevented it only if MockServer had its own CA (certificateAuthorityCertificateandcertificateAuthorityPrivateKey, ordynamicallyCreateCertificateAuthorityCertificate) and every CA intlsMutualAuthenticationCertificateChainwas private. MockServer now checks only the client's own certificate (the one whose private key it used for the connection): it must be signed by a CA in the chain, directly or through intermediate CA certificates the client sends after it, be in date, allow digital signatures if it lists key usages, allow client authentication if it lists extended key usages, and not be a CA certificate, a self-signed certificate or one of the certificates in the chain. A self-signed client certificate listed incontrolPlaneTLSMutualAuthenticationCAChainis no longer accepted; sign client certificates with a CA instead. AcontrolPlaneTLSMutualAuthenticationCAChainthat contains the bundled CA (or any certificate for its key) is now refused: MockServer does not start,PUT /mockserver/configurationanswers400, and any other change makes every control-plane request fail, where before only a warning was logged. If MockServerClient and MockServer share that property in one JVM (for exampleClientAndServeror the JUnit rule) and you added the bundled CA so the client trusts MockServer's certificate, give MockServer its own CA withcertificateAuthorityCertificateandcertificateAuthorityPrivateKeyand put that CA in the chain instead. The control-plane audit log now records the validated client certificate's subject as a verified principal (verified-mtls) unless OIDC supplied one; with mTLS and JWT both on, the audit principal is now the certificate subject instead of the unverified JWTsub. If a MockServer reachable by others had control-plane mTLS on, with or without data-plane mTLS, treat its expectations, recorded traffic and settings as possibly read or changed by someone else - mTLS (
tlsMutualAuthenticationRequired) no longer accepts client certificates anyone can create (BREAKING for mTLS set-ups that use MockServer's default CA; see upgrading to 9). Up to 9.0.0, MockServer trusted client certificates signed by MockServer's own CA whenever mTLS was on, even withtlsMutualAuthenticationCertificateChainset. By default that CA is the one bundled with MockServer, and its private key is published in the MockServer jar, so anyone could create a client certificate, with any name, that MockServer accepted. That client also matched any client certificate condition in your expectations and, when control-plane authentication was off, could create, read or delete expectations. MockServer now never trusts the bundled CA for mTLS. If mTLS is on and nothing but the bundled CA would be trusted, ortlsMutualAuthenticationCertificateChaincontains the bundled CA, MockServer does not start,PUT /mockserver/configurationanswers400, and the message names the fix: give MockServer
- Control-plane mTLS could be bypassed by sending the CA certificate after an untrusted client certificate. With
- mockserver-9.0.0MockServer 9.0.02026-10-15 · 2026-10-15 21:51 UTC
查看更新说明
[9.0.0] - 2026-10-15
This release delivers a sustained performance and memory programme alongside data-integrity fixes under load, plus a large set of LLM-provider correctness fixes, dashboard improvements, and client-library parity work. Headline numbers from the single-load-generator benchmark on the same six-core rig (builds 420 and 464): the healthy ceiling rises from 39,033 to 57,149 req/s and the peak from 43,671 to 59,905 req/s, with p95 at 32,000 req/s falling from 56.6 ms to 0.44 ms on the new ZGC default in the Docker images; event-log retained heap at 20,000 entries falls from 429 MB to 61 MB; Docker image download shrinks ~23%; and instance shutdown drops from ~107 ms to near zero. 22 BREAKING changes affect HTTP/3, DNS mocking, binary (non-HTTP) proxying and binary expectation matching while proxying, template-failure response codes,
maxLoggedMatchFailures's default, initialisation-fileidconflicts, the Node client's TypeScript typings andexportsmap,LOG_ENTRIESlog output, control-plane error handling and mTLS, the Rust client's enums, verification-failure wording, responsestatusCodevalidation, AsyncAPI and response/OpenAPI verification, GenAI trace span names, the Node client's recorded-request typings, and the Go client/Testcontainers module's/v9module paths — see Upgrading from 8.0.0 and theBREAKINGentries under Changed. For a per-change migration list, see the upgrade guide at https://www.mock-server.com/mock_server/upgrading_to_9.html.Metric Before After Throughput, healthy ceiling / peak (req/s, 6 cores) 39,033 / 43,671 57,149 / 59,905 p95 latency at 32,000 / 48,000 req/s offered 56.6 ms / 82.4 ms 0.44 ms / 12.0 ms Event-log heap (20,000 entries) 429 MB 61 MB Docker image download (linux/arm64, standard image) ~167 MB ~129 MB Instance shutdown time ~107 ms ~0 ms "Before" is perf build 420 (commit d568695a2, 2026-09-24, JDK 17.0.20, G1 collector), measured nine days after the 8.0.0 tag and already carrying some of this release's own work, since 8.0.0 itself was never measured on this rig. "After" is perf build 464 (commit efdc5227b2, 2026-09-27, JDK 25, ZGC), the performance page's single-load-generator figures; the page's headline is now a different, multi-generator measurement (see Changed). Both are comparable with each other but not with any benchmark published after this release.
Upgrading from 8.0.0
- Go client and Go Testcontainers module users: both modules move to
/v9module paths (the Go module proxy refused their 8.0.0 tags) — rungo get github.com/mock-server/mockserver-monorepo/mockserver-client-go/v9(and the Testcontainers module's/v9path if you use it) and change your imports from the/v7/unsuffixed paths to the/v9ones; see Changed. - HTTP/3 users (
http3Portset): the QUIC native library now ships separately — use the-jar-with-dependencies-http3jar or themockserver/mockserver:<version>-http3Docker image (latest-http3,snapshot-http3; Helm:image.variant=http3), and a server that cannot serve HTTP/3 (missing native, or the port unusable) now refuses to start instead of silently falling back. - DNS mocking users (
dnsEnabled=true): MockServer now refuses to start if itsdnsPortcannot be bound, instead of logging a warning and running without DNS. LeavednsPortat its default of0to let the OS pick a free port, or setdnsEnabled=false. - TypeScript users of
mockserver-client/llm: the deep-import typings no longer declare a default export; import frommockserver-clientitself, useimport llm = require(...)/import * as llm from ..., or turn onesModuleInterop(see Changed). - Binary (non-HTTP) proxy users: a client connection now always keeps one upstream connection for its whole life — forwarding one message per upstream connection is removed, along with its `forwardBinaryRequestsWithoutWaitingForRespo
- Go client and Go Testcontainers module users: both modules move to
- mockserver-8.0.0MockServer 8.0.02026-09-15 · 2026-09-15 09:33 UTC
查看更新说明
[8.0.0] - 2026-09-15
Added
- Test port allocation can opt into a fixed port band instead of the OS ephemeral range.
org.mockserver.socket.PortFactorynormally finds a free port withbind(0), which draws from the same ephemeral range (on macOSnet.inet.ip.portrange.hifirst..hilast, typically 49152-65535) that every otherbind(0)on the machine uses — including unrelated applications, IDE helpers, and other JVMs. On a busy developer machine that causes two kinds of test flake: a foreign process can occupy a number a test is about to choose, and a test can momentarily connect to that foreign listener instead of the server under test. Setting bothmockserver.testPortRangeStartandmockserver.testPortRangeEnd(for example-Dmockserver.testPortRangeStart=20000 -Dmockserver.testPortRangeEnd=40000) makesPortFactorychoose ports by explicitly binding inside that band — which the OS does not itself hand out tobind(0)— retrying past any number already in use. Both properties are unset by default, so continuous integration and any machine that does not set them keep the exactbind(0)behaviour as before. This affects only test port selection; it does not change how MockServer binds its own ports at runtime (starting on port0and reading back the assigned port remains the fully race-free option and is unchanged). In a surefire/failsafe fork the two properties must reach the fork, e.g. via-Dmockserver.testArgLine="-Dmockserver.testPortRangeStart=20000 -Dmockserver.testPortRangeEnd=40000".
Changed
- HTTP/2 now gives every request stream its own channel. MockServer's HTTP/2 server — both
h2(over TLS) and cleartexth2c— now uses Netty's stream-multiplexing model for every connection, replacing the previous shared-connection HTTP/2 pipeline. Each HTTP/2 stream is processed on its own isolated child channel. This removes a class of cross-stream interference on busy connections: concurrent streaming responses (Server-Sent Events, NDJSON, AWS Bedrock event-stream, and therefore all streaming LLM responses) can no longer have a later chunk of one stream mis-routed onto another, and each stream's end-of-stream is delivered independently, so a slow or streaming response on one stream cannot stall another. This model was previously used only whengrpcBidiStreamingEnabledwas set; it is now the standard HTTP/2 pipeline and needs no configuration — so the HTTP/2 correctness fixes listed below apply to all HTTP/2 traffic, not only when that flag is enabled. There is no change to the REST/Java API, to how expectations are written, or to HTTP/1.1 and HTTP/3 traffic, and HTTP/2 clients receive the same responses. Users driving very large numbers of concurrent streams over a single connection may notice different memory and throughput characteristics, since each stream now has its own lightweight channel. (GitHub issue #2669). - Behaviour change — over HTTP/2,
closeSocketnow ends the stream, not the connection. A per-expectationConnectionOptions.closeSocket/closeChannel(and theslowCloseDelayconnection-lifecycle chaos) applied to an HTTP/2 request now closes only that request's stream; other requests in flight on the same connection continue and complete normally. Previously it tore down the whole TCP connection, killing every concurrent stream on it — so one expectation could destroy unrelated clients' in-flight requests. Ending a single stream is the correct HTTP/2 semantic and is what the same expectation already did over HTTP/1.1, where a connection carries one request at a time. If you rely oncloseSocketto tear down an HTTP/2 connection — for example to test how your client recovers from a dropped connection — use theresetMidResponseconnection-lifecycle chaos fault instead, which still aborts the whole TCP connection (that is its purpose, and it now does so properly rather than degrading into a single-st
- Test port allocation can opt into a fixed port band instead of the OS ephemeral range.
- mockserver-7.6.0MockServer 7.6.02026-08-17 · 2026-08-17 17:10 UTC
查看更新说明
[7.6.0] - 2026-08-17
Changed
- The three Kubernetes container-integration cases that need Java-built images —
helm_sidecar_injection(admission-webhook sidecar injection),helm_clustered_convergence, andhelm_jgroups_dns_ping(both the-clusteredInfinispan image) — now run blocking in CI instead of recording a skip. Previously the CI helm step ran with no JDK and never built those images, so all three recorded an honest but permanent SKIP — coverage that looked green while proving nothing. A new:maven: build container-test images (jars)step in themockserver-container-testspipeline builds themockserver-netty,mockserver-k8s-webhook, andmockserver-state-infinispanjars from the tree (once, via the Maven-in-Docker reactor) and hands them to the helm step as Buildkite artifacts; the helm step downloads them and does cheapdocker builds (a COPY into distroless) to produce the-clusteredandmockserver-webhookimages, then runs the suite. The jars travel as artifacts (~200 MB total) rather thandocker saved images (~1.3 GB), mirroring the node-launcher / WAR hand-off. Both layers fail closed: the helm step exits non-zero if any jar artifact is absent, and the harness runs withREQUIRE_CLUSTERED_IMAGE=true/REQUIRE_WEBHOOK_IMAGE=trueso an image that is expected-but-absent is recorded as a FAILURE, never a skip — a skip in CI is now impossible. Localcontainer_integration_tests/integration_tests.shis unchanged for a developer without the images: it still records a comprehensible SKIP (no fail-closed flag set), and the harness now also builds themockserver-webhookimage locally (build_webhook_docker) so the sidecar case runs blocking in local dev too — it was never built by the harness before, so that case had always skipped.
Added
- Two new rules in the always-on
check-false-green-guards.shCI gate. Rule 4 fails the build if a CI step runs the container-integration harness with the helm/k3d cases active but does not export bothREQUIRE_CLUSTERED_IMAGE=trueandREQUIRE_WEBHOOK_IMAGE=true— the exact way the three image-dependent Kubernetes cases could silently revert to a green SKIP. It is keyed on the step's behaviour (invokesintegration_tests.shwithoutSKIP_HELM_TESTS=true), not on a filename, so a rename or a second helm-running step is covered automatically. Rule 5 fails the build if amockserver-coretest that performs a JVM-global logging side effect (reachingLogManager.readConfiguration's handlerreset()via the staticConfigurationPropertieslogging setters or a forced fresh<clinit>) is not in thesequential-testsinclude list — the shape behind a release-blocking flake thatParallelStaticStateGuardTeststructurally cannot catch. Both rules fail closed on an empty corpus and carry a rotating allow-list. See docs/operations/false-green-guards.md. - A
jarPathlauncher option and matchingMOCKSERVER_JAR_PATHenvironment variable formockserver-node, pointingstart_mockserverat a pre-provisionedmockserver-nettyjar-with-dependencies instead of downloading one from Maven Central. When set, that exact jar is launched and no download is attempted; a configured-but-missing path is a hard error (... refusing to fall back to downloading a release) rather than a silent fall-back to a released jar, so a missing artifact fails loudly. Mirrors the existingMOCKSERVER_BINARY_BASE_URLbring-your-own-artifact path for the standalone binary, and serves air-gapped/corporate installs as well as testing a locally-built jar (jarPathtakes precedence overmockServerVersion/artifactory*; the option beats the env var). The Node launcher integration tests now use it in CI: a new:maven: build node launcher jarstep builds the jar from the tree and the launcher-test step downloads it as an artifact and launche
- The three Kubernetes container-integration cases that need Java-built images —
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
MockServer

MockServer mocks, records, and chaos-tests any HTTP(S) dependency your application talks to — one binary, no per-protocol setup.
Why MockServer
- One port, every protocol — HTTP/1.1, HTTPS, HTTP/2, gRPC & gRPC-Web, WebSockets and raw TCP are auto-detected from the first bytes of each connection. Beyond that: HTTP/3 (QUIC, experimental), JSON-RPC for MCP/A2A mocking, and AsyncAPI-driven testing against Kafka/MQTT brokers.
- Mock, proxy, or both — return canned/templated/callback responses, or sit as a proxy (port forwarding, HTTP proxy, HTTPS tunneling, SOCKS) and record, inspect, and modify real traffic in flight, with full visibility into TLS-encrypted exchanges.
- Chaos engineering built in — inject latency, dropped connections, and errors on demand to see how your application copes when a dependency misbehaves.
- Mock AI too — chat-completion APIs for OpenAI, Anthropic, Gemini, Bedrock, Azure OpenAI and Ollama (including streaming), plus a built-in MCP server so AI coding assistants can drive MockServer directly.
- Generate mocks, don't hand-write them — from an OpenAPI/Swagger spec, with request matching on method, path, query, headers, cookies, and body (JSON, XML, JSONPath, XPath, regex).
- Fits your stack — Java, JavaScript/Node, Python, Ruby, Go, .NET, Rust, and PHP clients, plus JUnit and Spring support; runs as Docker, Helm/Kubernetes, a JAR, or a WAR, with a live dashboard and optional clustered state for multi-instance deployments.
See the changelog for what shipped in each version.
Getting started in 60 seconds
Run MockServer with Docker, then mock an endpoint and call it:
# 1. Start MockServer
docker run -d --rm -p 1080:1080 mockserver/mockserver
# 2. Mock an endpoint: GET /hello -> 200 "Hello World"
# (MockServer exposes a REST control plane on the same port)
curl -X PUT http://localhost:1080/mockserver/expectation \
-H 'Content-Type: application/json' \
-d '{
"httpRequest": { "method": "GET", "path": "/hello" },
"httpResponse": { "statusCode": 200, "body": "Hello World" }
}'
# 3. Call your mock
curl http://localhost:1080/hello
# -> Hello World
…or, on macOS / Linux, install with Homebrew and run the mockserver command directly:
brew install mockserver
mockserver run --port 1080
For every way to run MockServer — Docker, docker-compose recipes, the mockserver CLI, a JVM-less binary bundle, Helm/Kubernetes, the JAR, and Testcontainers — see the Self-Hosting MockServer guide. The same setup can be driven from any client library or the dashboard at http://localhost:1080/mockserver/dashboard.
One-command recipes
The examples/docker-compose recipes are a single docker compose up each — mock from an OpenAPI spec, a record/replay proxy, a contract-validating proxy, or a chaos proxy:
cd examples/docker-compose/mock-from-openapi
docker compose up
curl http://localhost:1080/pets
Drive it from Postman or Bruno
- Postman — click the button above, or import
examples/postman(guide). - Bruno (open-source, git-native) — open
examples/brunoin Bruno via Open Collection (guide).
Install
| Channel | Command |
|---|---|
| Docker | docker run -d --rm -p 1080:1080 mockserver/mockserver |
| Docker from GitHub Container Registry (avoids Docker Hub's pull limit) | docker run -d --rm -p 1080:1080 ghcr.io/mock-server/mockserver |
| Homebrew (macOS/Linux) | brew install mockserver |
| Helm (chart guide) | helm upgrade --install --namespace mockserver mockserver oci://ghcr.io/mock-server/charts/mockserver |
| Maven Central | org.mock-server:mockserver-netty-no-dependencies — see all Maven artifacts (server, WARs, JUnit 4/5, Spring, Maven plugin) |
| npm | mockserver-node (start/stop) |
Client libraries (create expectations, verify requests, drive the control plane from your tests):
Full install options (SNAPSHOT repository, WAR deployment, Testcontainers modules, package-manager channels) are on the Self-Hosting guide and Where to find MockServer.
Requirements
Runtime: Java 17+ (raised from Java 11 in MockServer 6.0.0 — see the Java 17 / Jakarta upgrade guide; pin to 5.15.x if you need Java 11). The official Docker image bundles its own JVM, so containerised users need no JVM of their own.
Building from source: JDK 17+.
Security note: MockServer is a development and testing tool only — see SECURITY.md.
Documentation
- Usage guide: www.mock-server.com
- Architecture, code structure, infrastructure, and operations docs: docs/
- AI/MCP integration: built-in MCP server at
/mockserver/mcp— see llms.txt and the AI Integration docs
Versions
- What changed: changelog and GitHub releases (every version is also a git tag
mockserver-<version>). - API docs for a version: Java API at
https://mock-server.com/versions/<version>/apidocs/index.html; REST API on SwaggerHub (one spec permajor.minor.x). - Java 11: the last Java 11-compatible release is 5.15.0 (January 2023).
6.0.0 breaking change: the
<classifier>shaded</classifier>Maven form was removed. Replacemockserver-netty:<version>:shadedwithmockserver-netty-no-dependencies:<version>(same shaded bytes, new coordinates).
Community & Contributing
- Issues / bugs / feature requests: GitHub Issues — please include your MockServer version, how you're running it (Docker, Maven plugin, etc.), and INFO-level (or higher) log output.
- Discussions: GitHub Discussions
- Roadmap: GitHub Project
- Security policy: SECURITY.md
- Community tools: MockServer Browser Admin, a React + TypeScript web UI for managing expectations
- Contributing: pull requests are very welcome — read CONTRIBUTING.md first, then check the open issues and let us know if you intend to work on something.
