mcpField
P
pepe

pepe

ローカル
pepe.mhaimdat.com開発ツール971 日前に更新

pepe について

pepe はリアルタイムのダッシュボードを備えた HTTP 負荷テストツールで、URL への ping による遅延のフェーズ別分解も行います。スクリプトや CI で利用できるバージョン付き JSON レポートを出力し、キャパシティの上限確認や実行結果の比較を行う開発者・運用担当者に適しています。テスト対象より自身の負荷が小さいことを明示しています。

主な機能

  1. 01スループット、レイテンシ分位、ステータスコードを表示するダッシュボード
  2. 02ping モードによる 1 リクエストのフェーズ別時間の分解
  3. 03段階的に同時接続数を上げるランプモード
  4. 04OpenAPI、フロー、アクセスログのリプレイによる入力
  5. 05ガードレール、バージョン付き JSON レポート、終了コード
  6. 06pepe mcp コマンドによるエージェント向けツールの提供

活用シーン

  1. 01リリース前に API の負荷テストを行い、2 回の結果を比較する
  2. 02CI でレイテンシが基準値を超えた場合にジョブを失敗させる
  3. 03ping で URL の DNS、TLS、最初のバイトまでの遅延を調べる

MCP 対応

pepe は pepe mcp コマンドを備えており、起動時に設定されたガードレールの下で、負荷テストの各モードを MCP クライアントやエージェント向けのツールとして提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"omarmhaimdat-pepe": {
"command": "uvx",
"args": [
"pepe-http"
]
}
}
}
起動コマンドuvx pepe-http

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypipepe-http0.57.0
ocighcr.io/omarmhaimdat/pepe:0.57.0

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Pepe、ピクセルアートの唐辛子

pepe

テスト対象のサーバーよりも低コストで動作する、ライブダッシュボード付きの HTTP 負荷生成ツールです。

CI Release Downloads License: MIT Rust 1.85+

インストール · クイックスタート · できること · スクリプト、CI、エージェント · 比較 · ドキュメント · ロードマップ

サーバーに負荷テストを行うpepe:ライブダッシュボード、リクエストログ、判定

pepeはURLにリクエストを送り、指定した数だけ同時に実行し、スループット、レイテンシのパーセンタイルとヒートマップ、ステータスコード、原因別の失敗数、任意のリクエストを開けるログなど、結果をリアルタイムで表示します。実行が終わると、わかりやすい言葉で判定を示し、時間がどこにかかったかを説明します。curlコマンドを入力として受け取り、負荷を段階的に上げてターゲットが処理しきれなくなる点を見つけたり、OpenAPI仕様の全エンドポイントに負荷テストを行ったり、アクセスログを再生したり、各ステップの結果を次のステップに渡すリクエストフローを実行したりできます。pepe pingは、同じエンジンを毎秒1リクエストで動かします。URLのレイテンシを時間経過とともにグラフ化し、各pingをDNS、接続、TLS、最初のバイト、ダウンロードに分け、確認すべき点も示します。

pepeは軽量でもあります。1スレッドで、Apple M4 Proでは毎秒16万件、Linuxでは毎秒40万件のリクエストを送信できます。wrkよりリクエストあたりのCPU使用量とメモリ使用量が少なく、ohaと比べてCPU使用量は4分の1から2分の1、メモリ使用量は10分の1以下です。また、制限要因がターゲットではなくpepe自身の場合も知らせます。

インストール

curl -LsSf https://pepe.mhaimdat.com/install.sh | sh        # macOS and Linux
brew install omarmhaimdat/pepe/pepe                         # Homebrew
nix run github:omarmhaimdat/pepe -- https://example.com     # Nix, without installing
docker run --rm -it ghcr.io/omarmhaimdat/pepe https://example.com
cargo install --locked --git https://github.com/omarmhaimdat/pepe

Windowsでは、PowerShellで次を実行します:powershell -ExecutionPolicy Bypass -c "irm https://pepe.mhaimdat.com/install.ps1 | iex"。各リリースには、macOS、Linux、Windows向けのバイナリとチェックサム、署名済みの来歴情報、シェル補完、manページも含まれています。pepe self-updateで最新リリースをインストールできます。pepeは1日1回更新を確認し、実行終了時にそのことを知らせます。詳しくはインストールページをご覧ください。

クイックスタート

pepe https://example.com                                     # 100 requests, one per core at a time, and watch
pepe -z 30s -c 50 -m POST -H 'Content-Type: application/json' -d '{"key":"value"}' https://httpbin.org/post
pepe -z 30s --curl -- curl 'https://api.example.com/items' -H 'Authorization: Bearer …'   # from "Copy as cURL"
pepe ping https://example.com --once                         # three pings, then why it is slow, and out
pepe                                                         # the setup screen: every option on a form

ダッシュボードでは、spaceで一時停止、+と-で同時実行数を変更、tabでビューを切り替え、enterでリクエストを確認、?ですべてのキーを一覧表示、qで終了できます。終了後も判定はシェルに残ります。

できること

コマンド用途ドキュメント
pepe URLライブダッシュボード付きの負荷テストです。負荷の形状(--number、--duration、--concurrency、--rate、--warmup、--threads)、任意のヘッダー、ボディ、メソッド、curl コマンド、コードの隣に置く pepe.toml、--snapshot を使った長時間実行に対応します負荷テスト、ダッシュボード
pepe ping URL…1 秒ごとにリクエストを送信し、DNS、接続、TLS、最初のバイト、ダウンロードに分けてグラフ表示します。複数のターゲット、TCP ping、--slo の制限、HTTP/2、証明書の有効期限、確認すべき点を示す指摘にも対応しますPing
pepe ramp URL同時実行数を段階的に増やし、維持できたレベル、スループットの伸びが止まった地点、動作しなくなった地点、容量の推定値を見つけますランプテスト
pepe api SPECOpenAPI 3 または Swagger 2 の仕様にあるエンドポイントを、画面上またはタグで選択し、パラメーターや認証情報とともに実行しますOpenAPI
pepe flow FILEリクエストを順番に実行し、各ステップに直前のステップの結果を渡します。ログインしてトークンを取得し、それを使う、といった処理ができますフロー
pepe replay LOGアクセスログ内の URL を、実際の比率で別のホストに送信しますリプレイ
pepe logs FILESnginx のログから、現在のリクエストレートと、分・時・日ごとのリクエストレート、パス、エラー、ログ行そのものをリアルタイムで確認できますnginx ログ
pepe compare A B2 つのレポート間の変化を、判定の言葉で示します。バッジと SVG カードも表示します比較

すべてのコマンドのフラグはコマンドリファレンスに記載されており、man pepe にも同じ内容があります。

スクリプト、CI、エージェント

すべてのモードは画面なしで実行でき、プログラムから呼び出せるように作られています。

  • バージョン管理された JSON レポート:--json を指定します(schema_version: 1。pepe schema は各レポートの JSON Schema を出力します)。レポートには判定と指摘が含まれます。--json を指定せずにパイプへ出力すると、テキスト形式の判定になります。
  • 意味のある終了コード:指定どおりの場合は 0、起動できなかった場合または応答がなかった場合は 1、使用方法の誤りまたはガードレール違反の場合は 2、制限を超えた場合は 4(--fail-if 'p99 > 300ms'、ping の --slo)。
  • 送信前に確認されるガードレール:--allow-host .example.com、--max-requests、--max-rate、--max-concurrency、送信予定の内容を表示するだけで実際には送信しない --dry-run。これらは pepe.toml に設定できます。
  • GitHub Action:テストを実行し、数値をジョブのサマリーと出力に追加します。pepe compare でプルリクエストをベースブランチと比較し、結果にコメントし、ジョブを失敗させることもできます:CI と Docker。
  • Prometheus メトリクス:--metrics :9100 を指定すると、長時間実行する負荷テストや ping を Grafana で確認できます。
  • MCP サーバー:pepe mcp は、起動時に設定されたガードレールのもとで、各モードをエージェント向けのツールとして提供します。AGENTS.md はエージェントが最初に読むファイルです。
- uses: omarmhaimdat/pepe@v0
  with:
    url: https://staging.example.com/api/health
    args: -z 30s -c 20 --fail-if 'p99 > 300ms'
    baseline: auto
    comment: true

pepe の比較

bench/ のスイートを使い、メモリから応答するローカルサーバーに対して測定しています。そのため、測定対象となるコストはクライアント側です。1,000 リクエストあたりの CPU ミリ秒、ピークメモリ、各ツールが報告した 1 秒あたりのリクエスト数は次のとおりです。

ワークロードpepeohavegeta
GET、64 接続6.2 ms · 9 MB · 160k req/s23.0 ms · 78 MB · 161k req/s90.4 ms · 26 MB · 76k req/s
GET、1,000 接続6.0 ms · 12 MB · 163k req/s21.6 ms · 101 MB · 147k req/s52.7 ms · 92 MB · 131k req/s
HTTPS、64 接続6.8 ms · 12 MB · 142k req/s24.8 ms · 60 MB · 156k req/s69.8 ms · 30 MB · 90k req/s

これらは Apple M4 Pro での pepe のシングルスレッドの数値で、ループバックの上限は毎秒約 175k リクエストです。Linux(4 vCPU の arm64 VM、リリースされている musl ビルド)で、隣で wrk を 1 スレッド実行した場合は次のとおりです。

ワークロードpepewrkoha
GET、64 接続2.4 ms · 4.0 MB · 398k req/s3.5 ms · 4.5 MB · 282k req/s6.8 ms · 67 MB · 305k req/s
GET、1,000 接続3.2 ms · 5.8 MB · 296k req/s4.4 ms · 7.7 MB · 228k req/s5.6 ms · 73 MB · 183k req/s
HTTPS、64 接続3.3 ms · 6.0 MB · 284k req/s4.5 ms · 10.8 MB · 218k req/s8.1 ms · 42 MB · 250k req/s
1,000 万リクエスト、256 接続2.9 ms · 4.5 MB · 343k req/s3.3 ms · 4.6 MB · 304k req/s6.5 ms · 2,404 MB · 316k req/s

pepe が同等の性能となるワークロード(1,000 接続時の低速なターゲット、TLS 経由の 16 KB ボディ)、glibc ビルドによる違い、k6、プロファイル、測定方法など、すべてのワークロードについては bench/README.md をご覧ください。ターゲットが複数スレッドからの送信を処理できる場合、pepe はその旨を示し、--threads auto でスレッドを追加します。

ドキュメント

すべてのオプションと例を含む、ページごとのマニュアルは pepe.mhaimdat.com/docs にあります。ソースは docs/ 以下の Markdown ファイルです。また、コマンドリファレンスはコマンド定義から生成されるため、バイナリとの不一致は生じません。各リリースでの変更点は CHANGELOG.md に、今後の予定は順番に ROADMAP.md に記載されています。

コントリビューション

課題報告やプルリクエストを歓迎します。ビルド、テスト、生成ファイル、記録、ベンチマーク、リリースの作成方法については CONTRIBUTING.md をご覧ください。

ライセンス

MIT です。LICENSE をご覧ください。

謝辞

リクエスト処理には tokio、rustls、httparse、h2、reqwest、ダッシュボードには ratatui と crossterm、コマンドラインには clap を使用しています。また、ベンチマーク表で良き仲間となってくれた oha、vegeta、wrk、k6 に感謝します。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。