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秒クイックスタート)
- 起動:サーバーを起動(
docker run -d -p 1080:1080 mockserver/mockserver)。 - 期待を設定:コントロールプレーンエンドポイント
/mockserver/expectationにcurlPOSTで簡単な設定を送信。例:GET /helloを200レスポンス(「Hello World」を含む)にマッピング。 - 呼び出し:モックされたエンドポイントを呼び出し(
curl http://localhost:1080/hello)て、設定されたレスポンスを受信。
上記すべてをスクリプト化可能。CIパイプラインから駆動可能、またはPostman、Bruno、コミュニティ作成のReact管理UIなどのUIツールで管理可能。
AI開発パイプラインでの利用例
- OpenAIの
/v1/chat/completionsを呼び出すコードのユニット/統合テスト – 実サービスを、確定的なJSONペイロードまたはストリーミングチャンクシーケンスを返すMockServerの期待に置き換える。 - パフォーマンス/レジリエンステスト – すべてのLLMリクエストに5秒の遅延を注入し、フロントエンドが遅いレスポンスをどう処理するかを確認。
- 記録&リプレイ – 本番LLMゲートウェイからのリアルトラフィックをキャプチャし、ローカルでデバッグのために再実行。
- コントラクト検証 – 自分のAIマイクロサービスのOpenAPI仕様から期待を自動生成し、実装が仕様に準拠しているかを検証。
インストールとエコシステム
- Docker –
docker run -d --rm -p 1080:1080 mockserver/mockserver - Homebrew –
brew install mockserver && mockserver run --port 1080 - Kubernetes – Helmチャート
mockserver/mockserver(OCIホスティング)でクラスタ環境にデプロイ可能。 - 言語クライアント – Maven/Gradleアーティファクト(
mockserver-netty-no-dependencies、mockserver-client-javaなど)、NPMパッケージ(mockserver-node、mockserver-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を搭載したアプリケーションの開発、テスト、ベンチマークを行うすべての人にとって信頼できるツールです。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト