Waveguardclient について
Waveguardclientは、WaveGuardのステートレスな異常検知APIを利用するPython SDKです。学習パイプラインを管理せずに多様なデータを調べたいアプリケーション向けで、サーバー側の波動物理計算により異常スコア、信頼度、特徴量の説明を返します。
主な機能
- 01多様なデータを一度の呼び出しでスキャン
- 02異常スコアと信頼度の取得
- 03特徴量ごとのアラート説明
- 04API状態と利用プランの確認
活用シーン
- 01サーバーメトリクスの異常検知
- 02金融取引の異常判定
- 03ログの逸脱確認
MCP 対応
パッケージにはMCPサーバーが含まれ、汎用異常スキャン、時系列スキャン、API状態確認のツールを提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
WaveGuard Python SDK
波動物理学を活用した異常検知。機械学習ではありません。
API 呼び出しは 1 回。完全にステートレス。あらゆるデータ型に対応します。
ベンチマーク • クイックスタート • ユースケース • 例 • MCP / Claude • API リファレンス
WaveGuard とは?
WaveGuard は、汎用的な異常検知 API です。サーバーメトリクス、金融取引、ログファイル、センサーの測定値、時系列など、あらゆるデータを送信すると、異常スコア、信頼度、アラートの原因となった特徴量の説明が返されます。
トレーニングパイプラインは不要です。モデル管理も状態管理も不要です。API 呼び出しは 1 回です。
Your data → WaveGuard API (GPU) → Anomaly scores + explanations
内部では、機械学習の代わりに GPU 加速による波動物理学を使用しています。物理学について知る必要も、気にする必要もありません。すべてサーバー側で処理されます。
Modal のダッシュボードと API エンドポイント
Modal を見ると、デプロイ済みの関数(たとえば fastapi_app、gpu_scan、gpu_fingerprint)が表示されます。
これらはコンピューティング/ランタイムの単位であり、HTTP ルートの一覧ではありません。
稼働中の API エンドポイントをすべて確認するには、次を使用してください。
- OpenAPI ドキュメント:
https://gpartin--waveguard-api-fastapi-app.modal.run/docs - OpenAPI JSON:
https://gpartin--waveguard-api-fastapi-app.modal.run/openapi.json
実際にはどのように動作しますか?
データは 64³ 格子にエンコードされ、GPU 上で連成波動方程式シミュレーションにかけられます。正常なデータは安定した波動パターンを生成し、異常なデータは発散するパターンを生成します。52 次元の統計的フィンガープリントを、トレーニングデータとテストデータの間で比較します。呼び出しごとにすべてが破棄され、データは保存されません。
機械学習と比べた主な利点は、トレーニングデータの要件がないこと(2 サンプル以上で十分)、モデルドリフトがないこと、再トレーニングが不要なこと、ハイパーパラメーターの調整が不要なことです。同じ API 呼び出しで、構造化データ、テキスト、数値、時系列を扱えます。
ベンチマーク(v2.2)
実世界の 6 つのシナリオでのWaveGuard v2.2 と scikit-learn の比較(各シナリオでトレーニングサンプル 10 件、テストサンプル 10 件)。
要約:WaveGuard v2.2 は6 シナリオ中 4 シナリオで優位で、F1 の平均は 0.76 です。sklearn の手法に匹敵し、機械学習の専門知識は一切必要ありません。
F1 スコア(適合率と再現率のバランス)
| シナリオ | WaveGuard | IsolationForest | LOF | OneClassSVM |
|---|---|---|---|---|
| サーバーメトリクス(IT 運用) | 0.87 | 0.71 | 0.87 | 0.62 |
| 金融詐欺 | 0.83 | 0.74 | 0.77 | 0.77 |
| IoT センサー(産業用) | 0.87 | 0.69 | 0.69 | 0.65 |
| ネットワークトラフィック(セキュリティ) | 0.82 | 0.61 | 0.77 | 0.61 |
| 時系列(モニタリング) | 0.46 | 0.77 | 0.80 | 0.67 |
| 疎な特徴量(ログ) | 0.72 | 0.90 | 0.82 | 0.78 |
| 平均 | 0.76 | 0.74 | 0.79 | 0.68 |
v2.2 の新機能
マルチ解像度スコアリングでは、全体的なフィンガープリント距離に加えて、各特徴量の局所格子エネルギーを追跡します。これにより、v2.1 の全体平均では見逃されていた、微妙な特徴量ごとの異常(IoT センサー 10 台中 3 台のドリフトなど)を検出できます。IoT の F1 は 0.30 から 0.87 に向上しました。
sklearn ではなく WaveGuard を選ぶ場合
| WaveGuard を選ぶ場合… | sklearn を選ぶ場合… |
|---|---|
| 誤検知のコストが高い場合(アラート疲れ、SRE へのページ通知) | あらゆる異常を漏れなく検出する必要がある場合 |
| チームに ML の専門知識がない場合 | モデルを調整できるデータサイエンティストがいる場合 |
| 設定不要の API 呼び出しが必要な場合 | モデルのライフサイクル(学習/保存/読み込み)を管理できる場合 |
| データスキーマが頻繁に変わる場合 | 特徴量エンジニアリングが安定している場合 |
| AI エージェントに異常検知が必要な場合(MCP) | すべてがローカルで実行され、API 呼び出しがない場合 |
これらのベンチマークを再現する
pip install WaveGuardClient scikit-learn
python benchmarks/benchmark_vs_sklearn.py
結果は benchmarks/benchmark_results.json に保存されます。ベンチマークでは、再現性を確保するために決定論的な乱数シードを使用します。
ベンチマークの拡張版:WaveGuard は、公開ベンチマークデータセット12件すべてで F1 スコア第1位です。HuggingFace で比較結果の全容をご覧ください。
実環境での検証:暗号資産の暴落検知
WaveGuard は、暗号資産リスクスキャナーの CryptoGuard を支えています。過去の暴落7件(LUNA、FTX、Celsius、3AC、UST、SOL/FTX、TITAN)を対象にバックテストを実施しました。
| 手法 | 再現率 | 平均リードタイム | 偽陽性率 |
|---|---|---|---|
| WaveGuard | 100% (7/7) | 27.4日 | 6.1% |
| Z スコアのベースライン | 100% (7/7) | 28.4日 | 29.9% |
| 移動ボラティリティ | 86% (6/7) | 15.5日 | 4.0% |
WaveGuard は2022年10月16日に FTT(FTX トークン)を「注意」と判定しました。これは94%の暴落の23日前です。一方、Z スコア分析では異常は見られませんでした。
再現率を維持しながら、統計的なベースラインより誤検知を5分の1に削減します。結果の全容:CryptoGuard バックテスト。
インストール
pip install WaveGuardClient
これで完了です。依存関係は requests のみです。物理演算はすべて GPU 上のサーバー側で実行されます。
クイックスタート
同じ scan() 呼び出しを、あらゆる種類のデータに使用できます。以下は異なる3つの業界の例です。API は同じです。
侵害されたサーバーを検出する
from waveguard import WaveGuard
wg = WaveGuard(api_key="YOUR_KEY")
result = wg.scan(
training=[
{"cpu": 45, "memory": 62, "disk_io": 120, "errors": 0},
{"cpu": 48, "memory": 63, "disk_io": 115, "errors": 0},
{"cpu": 42, "memory": 61, "disk_io": 125, "errors": 1},
],
test=[
{"cpu": 46, "memory": 62, "disk_io": 119, "errors": 0}, # ✅ normal
{"cpu": 99, "memory": 95, "disk_io": 800, "errors": 150}, # 🚨 anomaly
],
)
for r in result.results:
print(f"{'🚨' if r.is_anomaly else '✅'} score={r.score:.1f} confidence={r.confidence:.0%}")
不正な取引を検知する
result = wg.scan(
training=[
{"amount": 74.50, "items": 3, "session_sec": 340, "returning": 1},
{"amount": 52.00, "items": 2, "session_sec": 280, "returning": 1},
{"amount": 89.99, "items": 4, "session_sec": 410, "returning": 0},
],
test=[
{"amount": 68.00, "items": 2, "session_sec": 300, "returning": 1}, # ✅ normal
{"amount": 4200.00, "items": 25, "session_sec": 8, "returning": 0}, # 🚨 fraud
],
)
ログ内のセキュリティイベントを検出する
result = wg.scan(
training=[
"2026-02-24 10:15:03 INFO Request processed in 45ms [200 OK]",
"2026-02-24 10:15:04 INFO Request processed in 52ms [200 OK]",
"2026-02-24 10:15:05 INFO Cache hit ratio=0.94 ttl=300s",
],
test=[
"2026-02-24 10:20:03 INFO Request processed in 48ms [200 OK]", # ✅ normal
"2026-02-24 10:20:04 CRIT xmrig consuming 98% CPU, port 45678 open", # 🚨 crypto miner
"2026-02-24 10:20:05 WARN GET /api/users?id=1;DROP TABLE users-- from 185.x.x", # 🚨 SQL injection
],
encoder_type="text",
)
同じクライアント。同じ scan() 呼び出し。あらゆるデータに対応します。
ユースケース
WaveGuard はあらゆる構造化データ、数値データ、テキストデータに対応します。「正常」を定義できれば、そこからの逸脱を検出できます。
| 業界 | スキャン対象 | 検出するもの |
|---|---|---|
| DevOps | サーバーメトリクス(CPU、メモリ、レイテンシ) | メモリリーク、DDoS 攻撃、暴走プロセス |
| フィンテック | 取引(金額、頻度、場所) | 不正、マネーロンダリング、アカウント乗っ取り |
| セキュリティ | ログファイル、アクセスイベント | SQL インジェクション、暗号資産マイナー、権限昇格 |
| IoT/製造 | センサーの測定値(温度、圧力、振動) | 機器の故障、校正ドリフト |
| E コマース | ユーザー行動(セッション時間、カート、クリック) | ボットトラフィック、大量購入詐欺、スクレイピング |
| ヘルスケア | 検査結果、バイタルサイン、バイオマーカー | 異常値、データ入力エラー |
| 時系列データ | メトリクスのウィンドウ(レイテンシ、スループット) | スパイク、フラットライン、季節性の崩れ |
API はユーザーのドメインを把握しません。「正常」の状態(トレーニングデータ)を把握し、そこから逸脱するものを検知するだけです。そのため汎用的に使えます。状況の説明はユーザーが行い、検知は API が担います。
対応データ型
データの形状からすべて自動判定されます。設定は不要です。
| 型 | 例 | 用途 |
|---|---|---|
| JSON オブジェクト | {"cpu": 45, "memory": 62} | 名前付きフィールドを持つ構造化レコード |
| 数値配列 | [1.0, 1.2, 5.8, 1.1] | 特徴ベクトル、埋め込み |
| テキスト文字列 | "ERROR segfault at 0x0" | ログ、メッセージ、自由記述テキスト |
| 時系列データ | [100, 102, 98, 105, 99] | メトリクスのウィンドウ、連続する測定値 |
使用例
すべての使用例は、ライブ API にアクセスする実行可能な Python スクリプトです。
| # | 使用例 | 業界 | 内容 |
|---|---|---|---|
| 🏭 | IoT 予知保全 | 製造業 | センサーデータからベアリングの故障、漏れ、過負荷を検出します |
| 🔒 | ネットワーク侵入検知 | サイバーセキュリティ | ポートスキャン、C2 ビーコン、DDoS、データの流出を検知します |
| 🤖 | MCP エージェントのデモ | AI/エージェント | Claude が MCP 経由で WaveGuard を呼び出します — ML の知識は不要です |
| 01 | クイックスタート | 一般 | 10 行で実行できる最小限のスキャン |
| 02 | サーバー監視 | DevOps | メモリリークと DDoS の検出 |
| 03 | ログ分析 | セキュリティ | SQL インジェクションと暗号資産マイナーの検出 |
| 04 | 時系列 | 監視 | レイテンシの急上昇とフラットラインの検出 |
| 06 | 一括スキャン | E コマース | 20 件のトランザクションと不正フラグの検出 |
| 07 | エラー処理 | 本番環境 | リトライロジックと指数バックオフ |
pip install WaveGuardClient
python examples/iot_predictive_maintenance.py
MCP サーバー(Claude Desktop)
MCP ツールとして利用できる、初の物理学ベースの異常検知ツールです。 ML の知識がなくても、あらゆる AI エージェントが異常を検知できるようになります。
クイックセットアップ
{
"mcpServers": {
"waveguard": {
"command": "uvx",
"args": ["--from", "WaveGuardClient", "waveguard-mcp"]
}
}
}
その後、Claude に 「これらのセンサー読み取り値に異常はありますか?」 と尋ねると、自動的に waveguard_scan を呼び出します。
利用可能な MCP ツール
| ツール | 説明 |
|---|---|
waveguard_scan | あらゆる構造化データの異常を検知します |
waveguard_scan_timeseries | 時系列データを自動でウィンドウ分割し、異常な区間を検知します |
waveguard_health | API のステータスと GPU の利用可否を確認します |
動作する使用例については MCP エージェントのデモを、セットアップの詳細については MCP 統合ガイドをご覧ください。
Azure からの移行
Azure Anomaly Detector は 2026 年 10 月に廃止されます。 WaveGuard はそのまま置き換えて使用できます。
# Before (Azure) — 3+ API calls, stateful, time-series only
client = AnomalyDetectorClient(endpoint, credential)
model = client.train_multivariate_model(request) # minutes
result = client.detect_multivariate_batch_anomaly(model_id, data)
client.delete_multivariate_model(model_id)
# After (WaveGuard) — 1 API call, stateless, any data type
wg = WaveGuard(api_key="YOUR_KEY")
result = wg.scan(training=normal_data, test=new_data) # seconds
詳細については Azure 移行ガイドをご覧ください。
API リファレンス
wg.scan(training, test, encoder_type=None, sensitivity=None)
| パラメーター | 型 | 説明 |
|---|---|---|
training | list | 正常データの例を 2 件以上 |
test | list | チェックするサンプルを 1 件以上 |
encoder_type | str | "json"、"numeric"、"text"、"timeseries" を指定します(デフォルト:自動) |
sensitivity | float | 0.5~3.0。値が小さいほど感度が高くなります(デフォルト:1.0) |
.results(サンプルごとの結果)と .summary(集計結果)を含む ScanResult を返します。
wg.health() / wg.tier()
ヘルスチェック(認証不要)とサブスクリプションティアの情報を取得します。
高度なインテリジェンスメソッド(v3.3.0)
wg.counterfactual(...)wg.trajectory_scan(...)wg.instability(...)wg.phase_coherence(...)wg.interaction_matrix(...)wg.cascade_risk(...)wg.mechanism_probe(...)wg.action_surface(...)wg.multi_horizon_outlook(...)
これらは /v1/* インテリジェンスエンドポイントに直接対応し、急速に進化するサーバー側レスポンススキーマとの最大限の互換性を確保するため、生の JSON ペイロードを返します。
エラー処理
from waveguard import WaveGuard, AuthenticationError, RateLimitError
try:
result = wg.scan(training=data, test=new_data)
except AuthenticationError:
print("Bad API key")
except RateLimitError:
print("Too many requests — back off and retry")
API リファレンスの全容については、docs/api-reference.mdをご覧ください。
プロジェクト構成
WaveGuardClient/
├── waveguard/ # Python SDK package
│ ├── __init__.py # Public API exports
│ ├── client.py # WaveGuard client class
│ └── exceptions.py # Exception hierarchy
├── mcp_server/ # MCP server for Claude Desktop
│ └── server.py # stdio + HTTP transport
├── benchmarks/ # Reproducible benchmarks vs sklearn
│ ├── benchmark_vs_sklearn.py
│ └── benchmark_results.json
├── examples/ # 9 runnable examples
├── docs/ # Documentation
│ ├── getting-started.md
│ ├── api-reference.md
│ ├── mcp-integration.md
│ └── azure-migration.md
├── tests/ # Test suite
├── pyproject.toml # Package config (pip install -e .)
└── CHANGELOG.md
開発
git clone https://github.com/gpartin/WaveGuardClient.git
cd WaveGuardClient
pip install -e ".[dev]"
pytest
リンク
- RapidAPI(API キーの取得先):https://rapidapi.com/gpartin/api/waveguard
- ライブ API: https://gpartin--waveguard-api-fastapi-app.modal.run
- 対話型ドキュメント(Swagger): https://gpartin--waveguard-api-fastapi-app.modal.run/docs
- PyPI: https://pypi.org/project/WaveGuardClient/
- Smithery: https://smithery.ai/servers/emergentphysicslab/waveguard
- Glama: https://glama.ai/mcp/connectors/com.emergentphysicslab/waveguard
ライセンス
MIT — LICENSEをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。