Whistle MCP Server について
Whistle MCP Server は、AI アシスタントがローカルの Whistle プロキシを操作できるようにする MCP サーバーです。ネットワークデバッグ、API テスト、プロキシルールの設定を自然言語で行いたいユーザー向けです。
主な機能
- 01ルールの作成、更新、削除、有効・無効の切り替え
- 02グループとルールの関連付け管理
- 03バリューとバリューグループの管理
- 04プロキシ、HTTP/HTTPS インターセプト、HTTP/2 の切り替え
- 05URL フィルタリング付きのリクエスト傍受情報の表示
- 06カスタムパラメータによるリクエストの再送
活用シーン
- 01自然言語によるプロキシルールの作成と切り替え
- 02AI アシスタントによる傍受ネットワークリクエストの絞り込み
- 03API テストのための捕捉済みリクエストの再送
MCP 対応
本プロジェクトは MCP サーバーであり、Whistle のルール、グループ、バリュー、プロキシ制御、リクエスト管理の操作をツールとして MCP クライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Whistle MCP サーバー
英語 | 中国語
プロジェクト紹介
Whistle MCP サーバーは、Model Context Protocol(MCP)に基づく Whistle プロキシ管理ツールです。AI アシスタントがローカルの Whistle プロキシサーバーを直接操作、制御できます。このツールを使うと、Whistle のインターフェースを手動で操作することなく、AI がルールやグループ、値の管理、ネットワークリクエストの監視、リクエストの再生や変更などを支援できます。ネットワークのデバッグ、API テスト、プロキシルール管理のプロセスを大幅に簡略化し、AI と自然言語でやり取りしながら、複雑なネットワークプロキシ設定タスクを完了できます。
機能
- ルール管理:Whistle ルールの作成、更新、名前変更、削除、有効化/無効化
- グループ管理:グループの作成、名前変更、削除、およびルールとグループ間の関連付け操作
- 値の管理:値の作成、更新、名前変更、削除、および値のグループ管理に対応
- プロキシ制御:プロキシ、HTTP/HTTPS インターセプト、HTTP/2 プロトコルなどの有効化/無効化
- リクエストのインターセプト:インターセプトしたネットワークリクエスト情報の表示。URL によるフィルタリングにも対応
- リクエストの再生:カスタムのリクエストパラメーターを指定して、キャプチャしたリクエストを再生できます
- マルチルールモード:マルチルールモードの有効化/無効化に対応
インストール
要件
Node.js 18.20.0 以降が必要です(package.json の engines を参照)。それ以前のバージョンには対応していません。
Smithery 経由でインストール
Smithery 経由で Claude Desktop に Whistle MCP サーバーを自動インストールするには:
npx -y @smithery/cli install @7gugu/whistle-mcp --client claude
手動インストール
npm 経由で Whistle MCP サーバーをグローバルにインストールできます:
npm install -g whistle-mcp-tool
ソースからビルド
リポジトリのルートから実行します:
npm install
npm run build
ビルド出力のエントリーポイントは dist/index.js です(グローバルインストール後に whistle-mcp CLI が使用するファイルと同じです)。MCP 設定で node と dist/index.js へのパスを指定することもできます。
MCP の設定
トランスポート(stdio と HTTP)
デフォルトでは、サーバーは stdio を使用します(Cursor などのローカル MCP クライアントに適しています)。
同じプロセスで Streamable HTTP と SSE を公開するには(リモートクライアントまたは HTTP 対応クライアント向け)、--transport http-stream を使用します。FastMCP は --mcp-host / --mcp-port でリッスンし、次のエンドポイントを提供します:
- Streamable HTTP:
http://<mcp-host>:<mcp-port><mcp-endpoint>(デフォルトのパスは/mcp) - SSE:
http://<mcp-host>:<mcp-port>/sse
http-stream のエイリアス:sse、streamable-http(同じモードです。どちらの URL も利用できます)。
| フラグ/環境変数 | 意味 |
|---|---|
--transport / -t、FASTMCP_TRANSPORT | stdio(デフォルト)または http-stream |
--mcp-port、FASTMCP_PORT | MCP の HTTP ポート(HTTP トランスポート使用時のデフォルトは 8085) |
--mcp-host、FASTMCP_HOST | バインドアドレス(デフォルトは 0.0.0.0) |
--mcp-endpoint、FASTMCP_ENDPOINT | Streamable HTTP のパス(デフォルトは /mcp) |
--stateless、FASTMCP_STATELESS=true | ステートレス HTTP モード(任意) |
Whistle の接続オプションに変更はありません:--host、--port、--username / --password(または -n / -w)。
例(HTTP トランスポート+8899 でローカル Whistle を起動。MCP はデフォルトで 8085 をリッスン):
whistle-mcp --transport http-stream --host 127.0.0.1 --port 8899
デフォルトの 8085 を変更するには、--mcp-port <port> を使用します。
インストール後、MCP の JSON 設定ファイルで Whistle MCP を設定できます:
{
"mcpServers": {
"whistle-mcp": {
"command": "whistle-mcp",
"args": [
"--host=<whistle server IP address>",
"--port=<whistle server port number>"
]
}
}
}
基本認証を有効にして Whistle を起動する場合(Whistle CLI と同じフラグ:w2 start -n <username> -w <password>)、Whistle の API への HTTP リクエストが成功するように、同じ認証情報をこの MCP サーバーに渡してください:
{
"mcpServers": {
"whistle-mcp": {
"command": "whistle-mcp",
"args": [
"--host=localhost",
"--port=8899",
"--username=<username>",
"--password=<password>"
]
}
}
}
短縮オプション(w2 と同じ):-n / -w は --username / --password と同じです。
whistle-mcp --host localhost --port 8899 -n myuser -w mypass
設定の詳細
- host:Whistle サーバーの IP アドレスです。省略した場合は、デフォルトで
localhostになります - port:Whistle サーバーのポートです。省略した場合は、デフォルトで
8899になります - username(
-n/--username):Whistle の起動時に-nを指定した場合の Basic 認証のユーザー名です。Whistle にログイン設定がない場合は省略してください - password(
-w/--password):Whistle の起動時に-wを指定した場合の Basic 認証のパスワードです。username が設定されていて password が省略された場合は、空のパスワードが送信されます
AI クライアントでの MCP JSON の設定
- Claude Client:https://modelcontextprotocol.io/quickstart/user
- Raycast:MCP プラグインのインストールが必要です
- Cursor:https://docs.cursor.com/context/model-context-protocol#configuring-mcp-servers
MCP ツールの説明
Whistle MCP Server では、MCP プロトコル経由で呼び出せる以下のツールを提供しています。
ルール管理
| ツール名 | 説明 | 機能 |
|---|---|---|
| getRules | すべてのルールを取得 | 作成済みのすべてのルールとその内容を一覧表示します |
| createRule | 新しいルールを作成 | 指定した名前で新しいルールを作成します |
| updateRule | ルールの内容を更新 | 指定したルールの内容を変更します |
| renameRule | ルール名を変更 | ルール名を新しい名前に変更します |
| deleteRule | ルールを削除 | 指定した名前のルールを削除します |
| enableRule | ルールを有効化 | 指定した名前のルールを有効にします |
| disableRule | ルールを無効化 | 指定した名前のルールを無効にします |
| setAllRulesState | すべてのルールの状態を設定 | すべてのルールを一括で有効または無効にします |
グループ管理
| ツール名 | 説明 | 機能 |
|---|---|---|
| createGroup | グループを作成 | 指定した名前で新しいルールグループを作成します |
| renameGroup | グループ名を変更 | ルールグループの名前を新しい名前に変更します |
| deleteGroup | グループを削除 | 指定した名前のルールグループを削除します |
| addRuleToGroup | ルールをグループに追加 | 指定したルールを特定のグループに追加します |
| removeRuleFromGroup | ルールをグループから削除 | ルールを所属するグループからトップレベルに移動します |
値の管理
| ツール名 | 説明 | 機能 |
|---|---|---|
| getAllValues | すべての値を取得 | 作成済みのすべての値と値グループを一覧表示します(注:データ量が大きい場合があるため、まず getValueList の使用をご検討ください) |
| getValueList | 値の一覧を取得 | インデックスと名前のみを含む値の一覧を取得します(大きなペイロードを避けるため、data フィールドは含まれません) |
| getValue | 単一の値を取得 | 名前を指定して、単一の値の完全な情報を取得します(data フィールドを含む) |
| createValue | 新しい値を作成 | 指定した名前で新しい値を作成します |
| updateValue | 値の内容を更新 | 指定した値の内容を変更します |
| renameValue | 値の名前を変更 | 値の名前を新しい名前に変更します |
| deleteValue | 値を削除 | 指定した名前の値を削除します |
| createValuesGroup | 値グループを作成 | 指定した名前で新しい値グループを作成します |
| renameValueGroup | 値グループ名を変更 | 値グループの名前を新しい名前に変更します |
| deleteValueGroup | 値グループを削除 | 指定した名前の値グループを削除します |
| addValueToGroup | 値をグループに追加 | 指定した値を特定のグループに追加します |
| removeValueFromGroup | 値をグループから削除 | 値を所属するグループからトップレベルに移動します |
プロキシ制御
| ツール名 | 説明 | 機能 |
|---|---|---|
| getWhistleStatus | サーバーの状態を取得 | Whistle サーバーの現在の状態情報を取得します |
| toggleProxy | プロキシを有効/無効にする | Whistle プロキシの有効状態を切り替えます |
| toggleHttpInterception | HTTP インターセプトを有効/無効にする | HTTP リクエストのインターセプトの有効状態を切り替えます |
| toggleHttpsInterception | HTTPS インターセプトを有効/無効にする | HTTPS リクエストのインターセプトの有効状態を切り替えます |
| toggleHttp2 | HTTP2 を有効/無効にする | HTTP/2 プロトコルサポートの有効状態を切り替えます |
| toggleMultiRuleMode | 複数ルールモードを有効/無効にする | 複数のルールを同時に有効にできるかどうかを切り替えます |
リクエスト管理
| ツール名 | 説明 | 機能 |
|---|---|---|
| getInterceptInfo | インターセプト情報を取得 | Whistle がインターセプトしたネットワークリクエスト情報を取得します。URL フィルタリングと正規表現に対応しています |
| replayRequest | リクエストを再送 | カスタマイズ可能なパラメーターを指定して、特定のネットワークリクエストを再送信します |
ユーティリティ
| ツール名 | 説明 | 機能 |
|---|---|---|
| getCurrentTimestamp | 現在のタイムスタンプを取得 | 現地の現在のタイムスタンプを取得します |
お問い合わせ先
- メール: [email protected]
- ブログ: https://7gugu.com
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。