Contributing to MockServer

May 30, 2026 · View on GitHub

This project is governed by the Code of Conduct. By participating, you are expected to uphold it.

Issues

If you have any problems, please check the project issues and avoid opening issues that have already been fixed. When you open an issue please provide:

  • MockServer version
  • How you are running MockServer (Maven plugin, Docker, JAR, etc.)
  • MockServer log output at INFO level (or higher)
  • What the error is
  • What you are trying to do

Repository Structure

This is a monorepo containing several projects:

DirectoryLanguageDescription
mockserver/JavaMain MockServer (Netty HTTP server + Maven plugin sibling module)
mockserver/mockserver-maven-plugin/JavaMaven plugin for starting/stopping MockServer (separate build, inherits version from parent)
mockserver-ui/TypeScriptDashboard React SPA
mockserver-node/JavaScriptNode.js launcher
mockserver-client-node/JavaScriptNode.js/browser API client
mockserver-client-python/PythonPython API client
mockserver-client-ruby/RubyRuby API client
mockserver-performance-test/JavaScriptk6 performance tests

For a deeper picture of how these fit together — module dependencies, the Netty pipeline, request matching, event system, dashboard, TLS — start with the code overview and follow the topic links in docs/README.md. High-level architecture: docs/architecture.md.

Where to make changes

Most contributions touch one of these areas. Skim the linked docs before opening a PR — they save asking maintainers where a feature should live.

Change typeModule(s)Key reference
New request matcher / matching behaviourmockserver/mockserver-core (model + matchers + serialisation)docs/code/request-processing.md, docs/code/domain-model.md
New action type (response/forward/error variant)mockserver/mockserver-core action + mockserver-netty handler wiringdocs/code/request-processing.md
Netty pipeline / protocol detection / SSE / WebSocket / JSON-RPCmockserver/mockserver-netty (handlers + unification)docs/code/netty-pipeline.md, docs/code/ai-protocol-mocking.md
TLS, mTLS, certificates, JWT authmockserver/mockserver-core/socket/tls/, mockserver-netty/unification/docs/code/tls-and-security.md
Configuration property (new flag / env var)mockserver/mockserver-core/configuration/ + mockserver.example.properties + jekyll-www docsdocs/code/configuration-reference.md
Memory / ring buffer / log retention tuningmockserver/mockserver-core/log/ + mockserver-core/mock/docs/code/memory-management.md
Event logging / verification / persistencemockserver/mockserver-core/log/ + mockserver-core/persistence/docs/code/event-system.md
Dashboard UI (React/Redux) or live-feed protocolmockserver-ui/ (TS) + mockserver-netty/web/ (server-side WebSocket)docs/code/dashboard-ui.md
Java client API or JUnit/Spring integrationsmockserver/mockserver-client-java, mockserver-junit-*, mockserver-spring-test-listenerdocs/code/client-and-integrations.md
Non-Java client (Python / Ruby / Node)mockserver-client-python/, mockserver-client-ruby/, mockserver-client-node/docs/code/client-and-integrations.md
MCP / A2A mockingServer handler: mockserver/mockserver-netty/src/main/java/org/mockserver/netty/mcp/. Builders: McpMockBuilder and A2aMockBuilder in mockserver/mockserver-client-java/src/main/java/org/mockserver/client/docs/code/ai-protocol-mocking.md
Build / Maven / dependency upgrademockserver/pom.xml + child poms + scripts/buildkite_*.shdocs/operations/build-system.md, Java 17 floor in AGENTS.md
Docker image (server or CI base)docker/, docker_build/docs/infrastructure/docker.md
Helm chart / Kubernetes deploymenthelm/mockserver/, helm/mockserver-config/docs/infrastructure/helm.md
CI/CD pipeline (Buildkite, GitHub Actions).buildkite/, .github/workflows/docs/infrastructure/ci-cd.md
AWS infrastructure / Buildkite agentsterraform/buildkite-agents/, terraform/buildkite-pipelines/docs/infrastructure/aws-infrastructure.md
Release pipeline (per-component publish)scripts/release/components/<component>.shdocs/operations/release-process.md, docs/operations/release-principles.md
Consumer docs sitejekyll-www.mock-server.com/docs/operations/website.md

Building

Java (main server)

cd mockserver && ./mvnw clean install

UI

cd mockserver-ui && npm ci && npm run build

Node.js client

cd mockserver-client-node && npm ci && npx grunt

Python client

cd mockserver-client-python
python3 -m venv .venv
.venv/bin/pip install -e '.[dev]'
.venv/bin/pytest

Ruby client

cd mockserver-client-ruby
bundle install
bundle exec rspec

Maven plugin

cd mockserver && ./mvnw clean install -DskipTests
./mvnw -f mockserver-maven-plugin/pom.xml clean verify

Contributions

Pull requests are welcome. Please:

  1. Open an issue first to discuss what you plan to change
  2. Follow existing code conventions in the module you are changing
  3. Add tests for any new functionality
  4. Ensure all tests pass before submitting

Opening a pull request shows a checklist template covering tests, changelog, docs, and the Java 17 / jakarta.* requirement — work through it before requesting review.

Feature Requests

Feature requests are submitted to GitHub issues and tracked on the project roadmap.