Whistle MCP Server

Manage local Whistle proxy servers through AI assistants, simplifying network debugging, API testing, and rule management.

Whistle MCP Server

English | 中文

Project Introduction

Whistle MCP Server is a Whistle proxy management tool based on the Model Context Protocol (MCP), allowing AI assistants to directly operate and control local Whistle proxy servers. Through this tool, AI can help users manage rules, groups, values, monitor network requests, replay and modify requests, etc., without requiring manual operation of the Whistle interface. It greatly simplifies the process of network debugging, API testing, and proxy rule management, enabling users to complete complex network proxy configuration tasks through natural language interaction with AI.

Features

  • Rule Management: Create, update, rename, delete, and enable/disable Whistle rules
  • Group Management: Create, rename, delete groups, and associate operations between rules and groups
  • Value Management: Create, update, rename, and delete values, with support for value group management
  • Proxy Control: Enable/disable proxy, HTTP/HTTPS interception, HTTP/2 protocol, etc.
  • Request Interception: View intercepted network request information, with URL filtering support
  • Request Replay: Support for replaying captured requests with custom request parameters
  • Multi-Rule Mode: Support for enabling/disabling multi-rule mode

Installation

Requirements

Node.js 18.20.0 or newer is required (see engines in package.json). Older versions are not supported.

Installing via Smithery

To install Whistle MCP Server for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install @7gugu/whistle-mcp --client claude

Manual Installation

You can install Whistle MCP Server globally via npm:

npm install -g whistle-mcp-tool

Build from source

From the repository root:

npm install
npm run build

The build output entry is dist/index.js (the same file used by the whistle-mcp CLI after a global install). You can also point MCP config at it with node and the path to dist/index.js.

MCP Configuration

Transport (stdio vs HTTP)

By default the server uses stdio (suitable for local MCP clients such as Cursor).

To expose Streamable HTTP and SSE on the same process (for remote or HTTP-capable clients), use --transport http-stream. FastMCP then listens on --mcp-host / --mcp-port and serves:

  • Streamable HTTP: http://<mcp-host>:<mcp-port><mcp-endpoint> (default path /mcp)
  • SSE: http://<mcp-host>:<mcp-port>/sse

Aliases for http-stream: sse, streamable-http (same mode; both URLs are available).

Flag / envMeaning
--transport / -t, FASTMCP_TRANSPORTstdio (default) or http-stream
--mcp-port, FASTMCP_PORTMCP HTTP port (default 8085 when using HTTP transport)
--mcp-host, FASTMCP_HOSTBind address (default 0.0.0.0)
--mcp-endpoint, FASTMCP_ENDPOINTStreamable HTTP path (default /mcp)
--stateless, FASTMCP_STATELESS=trueStateless HTTP mode (optional)

Whistle connection options are unchanged: --host, --port, --username / --password (or -n / -w).

Example (HTTP transport + local Whistle on 8899; MCP listens on 8085 by default):

whistle-mcp --transport http-stream --host 127.0.0.1 --port 8899

Use --mcp-port <port> to override the default 8085.

After installation, you can configure Whistle MCP in your MCP JSON configuration file:

{
  "mcpServers": {
    "whistle-mcp": {
      "command": "whistle-mcp",
      "args": [
        "--host=<whistle server IP address>",
        "--port=<whistle server port number>"
      ]
    }
  }
}

If you start Whistle with basic auth (same flags as the Whistle CLI: w2 start -n <username> -w <password>), pass the same credentials to this MCP server so HTTP requests to Whistle’s API succeed:

{
  "mcpServers": {
    "whistle-mcp": {
      "command": "whistle-mcp",
      "args": [
        "--host=localhost",
        "--port=8899",
        "--username=<username>",
        "--password=<password>"
      ]
    }
  }
}

Short options (aligned with w2): -n / -w are equivalent to --username / --password.

whistle-mcp --host localhost --port 8899 -n myuser -w mypass

Configuration Details

  • host: Whistle server IP address; defaults to localhost if omitted
  • port: Whistle server port; defaults to 8899 if omitted
  • username (-n / --username): Basic auth username when Whistle was started with -n; omit if Whistle has no login
  • password (-w / --password): Basic auth password when Whistle was started with -w; if username is set but password is omitted, an empty password is sent

Configuring MCP JSON in AI Clients

MCP Tools Description

Whistle MCP Server provides the following tools, which can be called via the MCP protocol:

Rule Management

Tool NameDescriptionFunction
getRulesGet all rulesList all created rules and their content
createRuleCreate new ruleCreate a new rule with the specified name
updateRuleUpdate rule contentModify the content of a specified rule
renameRuleRename ruleRename a rule to a new name
deleteRuleDelete ruleDelete a rule with the specified name
enableRuleEnable ruleEnable a rule with the specified name
disableRuleDisable ruleDisable a rule with the specified name
setAllRulesStateSet all rules stateEnable or disable all rules at once

Group Management

Tool NameDescriptionFunction
createGroupCreate groupCreate a new rule group with the specified name
renameGroupRename groupRename a rule group to a new name
deleteGroupDelete groupDelete a rule group with the specified name
addRuleToGroupAdd rule to groupAdd a specified rule to a specific group
removeRuleFromGroupRemove rule from groupRemove a rule from its group to the top level

Value Management

Tool NameDescriptionFunction
getAllValuesGet all valuesList all created values and value groups (note: data may be large, consider using getValueList first)
getValueListGet value listGet value list with index and name only (without data field, to avoid large payloads)
getValueGet single valueGet full information of a single value by name (including data field)
createValueCreate new valueCreate a new value with the specified name
updateValueUpdate value contentModify the content of a specified value
renameValueRename valueRename a value to a new name
deleteValueDelete valueDelete a value with the specified name
createValuesGroupCreate value groupCreate a new value group with the specified name
renameValueGroupRename value groupRename a value group to a new name
deleteValueGroupDelete value groupDelete a value group with the specified name
addValueToGroupAdd value to groupAdd a specified value to a specific group
removeValueFromGroupRemove value from groupRemove a value from its group to the top level

Proxy Control

Tool NameDescriptionFunction
getWhistleStatusGet server statusGet the current status information of the Whistle server
toggleProxyEnable/disable proxyToggle the enabled state of the Whistle proxy
toggleHttpInterceptionEnable/disable HTTP interceptionToggle the enabled state of HTTP request interception
toggleHttpsInterceptionEnable/disable HTTPS interceptionToggle the enabled state of HTTPS request interception
toggleHttp2Enable/disable HTTP2Toggle the enabled state of HTTP/2 protocol support
toggleMultiRuleModeEnable/disable multi-rule modeToggle whether to allow multiple rules to be enabled simultaneously

Request Management

Tool NameDescriptionFunction
getInterceptInfoGet interception informationGet network request information intercepted by Whistle, with URL filtering and regex support
replayRequestReplay requestResend a specified network request with customizable parameters

Utility

Tool NameDescriptionFunction
getCurrentTimestampGet current timestampGet the current local timestamp

Contact Information

Related Servers

NotebookLM Web Importer

Import web pages and YouTube videos to NotebookLM with one click. Trusted by 200,000+ users.

Install Chrome Extension