mock-server/mockserver-monorepo

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.

MockServer – 柔軟なモック、プロキシ、混沌工学サーバー

何であるか – MockServer は自己完結型の HTTP(S) サーバーであり、プロキシとしても機能します。受信リクエストに対して期待する動作(ルール)を定義し、実際の下流サービスが起動していなくても、必要なレスポンスを返すことができます。また、リアルなトラフィックを記録し、リアルタイムで編集可能にし、故意に障害(遅延、接続切断、エラーコード)を注入して、アプリケーションの耐障害性をテストできます。

AI/MLプロジェクトにおける重要性 – 現代のAIサービス(LLMチャットコンプリーションAPI、ベクトルストアバックエンド、データパイプラインエンドポイントなど)は通常、HTTP/gRPC経由でアクセスされます。開発段階では、これらの外部サービスの安定的で制御可能な代替が必要になることがよくあります。特に以下の状況で重要です:

  • 実際のサービスがレート制限されている、高コスト、またはまだデプロイされていない。
  • エラーハンドリング、タイムアウト、不正なレスポンスをテストしたい。
  • 再現可能なCIテストのために、記録したリクエスト/レスポンスのフローを再実行したい。
  • OpenAI、Anthropic、Gemini、Bedrock、Azure OpenAI、Ollama、あるいはカスタムのMCPベースのコーディングアシスタントとやり取りするAIアプリケーションを開発している。MockServerはこれらのエンドポイントを模倣でき、ストリーミングレスポンスも含めます。

主な機能(READMEに記載)

機能 実現可能なこと
マルチプロトコル対応 HTTP/1.1、HTTPS、HTTP/2、実験的HTTP/3(QUIC)、gRPC、gRPC-Web、WebSockets、Raw TCP、JSON-RPC、KafkaやMQTTなどのメッセージブローカープロトコルをサポート。接続の最初のバイトから自動検出されます。
モック メソッド、パス、クエリ、ヘッダー、クッキー、ボディ(JSON、XML、JSONPath、XPath、正規表現、OpenAPI)に基づいて期待を定義。静的ボディ、テンプレートレスポンス(Velocity、Mustache、JavaScript)、カスタムコールバック/ウェブフックを返すことができます。
プロキシ&記録 実際のトラフィックを転送し、リクエスト/レスポンスをキャプチャ。TLS暗号化されたトラフィックを検査し、インタラクティブブレークポイントでリクエストを編集または中止可能。ネットワークトラフィック用のデバッガーと同等です。
混沌工学 遅延、接続の遅延または切断、エラーステータスコードを注入して、障害状態下でのシステムの振る舞いを確認できます。
LLM/AIモック OpenAI、Anthropic、Gemini、Bedrock、Azure OpenAI、Ollamaなどの人気チャットコンプリーションAPIのビルトインモックエンドポイント(ストリーミングモード対応)と、AIコーディングアシスタント統合用のMCPサーバーを提供。
検証 テスト実行後に、特定のリクエストが受信されたか、順序や回数をアサーションできます。
ライブダッシュボード /mockserver/dashboard でリアルタイムUIを表示。期待される動作、受信リクエスト、ログを確認できます。
クライアントライブラリ Java、JavaScript/Node、Python、Ruby、Go、PHP、.NET、Rustの公式クライアント。JUnit、Spring、Testcontainersとの統合も提供。
デプロイオプション Dockerコンテナ、Homebrew(mockserver CLI)、単純なJAR/WAR、Kubernetes用公式Helmチャート、またはユニットテストにNettyベースのサーバーを直接埋め込む。

通常のワークフロー(60秒クイックスタート)

  1. 起動:サーバーを起動(docker run -d -p 1080:1080 mockserver/mockserver)。
  2. 期待を設定:コントロールプレーンエンドポイント /mockserver/expectationcurl POSTで簡単な設定を送信。例:GET /hello200 レスポンス(「Hello World」を含む)にマッピング。
  3. 呼び出し:モックされたエンドポイントを呼び出し(curl http://localhost:1080/hello)て、設定されたレスポンスを受信。

上記すべてをスクリプト化可能。CIパイプラインから駆動可能、またはPostman、Bruno、コミュニティ作成のReact管理UIなどのUIツールで管理可能。

AI開発パイプラインでの利用例

  • OpenAIの /v1/chat/completions を呼び出すコードのユニット/統合テスト – 実サービスを、確定的なJSONペイロードまたはストリーミングチャンクシーケンスを返すMockServerの期待に置き換える。
  • パフォーマンス/レジリエンステスト – すべてのLLMリクエストに5秒の遅延を注入し、フロントエンドが遅いレスポンスをどう処理するかを確認。
  • 記録&リプレイ – 本番LLMゲートウェイからのリアルトラフィックをキャプチャし、ローカルでデバッグのために再実行。
  • コントラクト検証 – 自分のAIマイクロサービスのOpenAPI仕様から期待を自動生成し、実装が仕様に準拠しているかを検証。

インストールとエコシステム

  • Dockerdocker run -d --rm -p 1080:1080 mockserver/mockserver
  • Homebrewbrew install mockserver && mockserver run --port 1080
  • Kubernetes – Helmチャート mockserver/mockserver(OCIホスティング)でクラスタ環境にデプロイ可能。
  • 言語クライアント – Maven/Gradleアーティファクト(mockserver-netty-no-dependenciesmockserver-client-javaなど)、NPMパッケージ(mockserver-nodemockserver-client)、PyPI(mockserver-client)、RubyGems、Goモジュール、NuGet、crates.io。

プロジェクトの健全性 – 活発にメンテナンス中(最新バージョン 7.6.0 は2026年6月リリース)、BuildkiteによるCI、オープンなイシュー追跡、ディスカッションフォーラム、GitHub上のロードマッププロジェクトあり。Java 17+が必要(Dockerイメージにはランタイムがバンドル済み)。


結論 – MockServerはプロダクションレベルの、プロトコルに依存しないモックおよびプロキシサーバーであり、HTTPベースの任意のAPI(急速に拡大するLLMチャットコンプリーションサービス群を含む)をシミュレート、記録、ストレステストするのに非常に便利です。AIを搭載したアプリケーションの開発、テスト、ベンチマークを行うすべての人にとって信頼できるツールです。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト