Whistle MCP Server

Gerencie servidores proxy Whistle locais por meio de assistentes de IA, simplificando a depuração de rede, testes de API e gerenciamento de regras.

Documentação

Whistle MCP Server

English | 中文

Introdução do Projeto

O Whistle MCP Server é uma ferramenta de gerenciamento de proxy Whistle baseada no Model Context Protocol (MCP), permitindo que assistentes de IA operem e controlem diretamente servidores proxy Whistle locais. Através desta ferramenta, a IA pode ajudar os usuários a gerenciar regras, grupos, valores, monitorar requisições de rede, reproduzir e modificar requisições, etc., sem exigir operação manual da interface do Whistle. Isso simplifica muito o processo de depuração de rede, testes de API e gerenciamento de regras de proxy, permitindo que os usuários concluam tarefas complexas de configuração de proxy de rede através de interação em linguagem natural com a IA.

Recursos

  • Gerenciamento de Regras: Criar, atualizar, renomear, excluir e ativar/desativar regras do Whistle
  • Gerenciamento de Grupos: Criar, renomear, excluir grupos e operações de associação entre regras e grupos
  • Gerenciamento de Valores: Criar, atualizar, renomear e excluir valores, com suporte ao gerenciamento de grupos de valores
  • Controle de Proxy: Ativar/desativar proxy, interceptação HTTP/HTTPS, protocolo HTTP/2, etc.
  • Interceptação de Requisições: Visualizar informações de requisições de rede interceptadas, com suporte a filtro por URL
  • Reprodução de Requisições: Suporte à reprodução de requisições capturadas com parâmetros personalizados
  • Modo Multi-Regra: Suporte à ativação/desativação do modo multi-regra

Instalação

Requisitos

É necessário Node.js 18.20.0 ou superior (veja engines em package.json). Versões mais antigas não são suportadas.

Instalação via Smithery

Para instalar o Whistle MCP Server para Claude Desktop automaticamente via Smithery:

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

Instalação Manual

Você pode instalar o Whistle MCP Server globalmente via npm:

npm install -g whistle-mcp-tool

Compilar a partir do código-fonte

A partir da raiz do repositório:

npm install
npm run build

A entrada da saída da compilação é dist/index.js (o mesmo arquivo usado pela CLI whistle-mcp após uma instalação global). Você também pode apontar a configuração do MCP para ele com node e o caminho para dist/index.js.

Configuração do MCP

Transporte (stdio vs HTTP)

Por padrão, o servidor usa stdio (adequado para clientes MCP locais, como o Cursor).

Para expor Streamable HTTP e SSE no mesmo processo (para clientes remotos ou compatíveis com HTTP), use --transport http-stream. O FastMCP então escuta em --mcp-host / --mcp-port e serve:

  • Streamable HTTP: http://<mcp-host>:<mcp-port><mcp-endpoint> (caminho padrão /mcp)
  • SSE: http://<mcp-host>:<mcp-port>/sse

Aliases para http-stream: sse, streamable-http (mesmo modo; ambas as URLs estão disponíveis).

Flag / envSignificado
--transport / -t, FASTMCP_TRANSPORTstdio (padrão) ou http-stream
--mcp-port, FASTMCP_PORTPorta HTTP do MCP (padrão 8085 ao usar transporte HTTP)
--mcp-host, FASTMCP_HOSTEndereço de bind (padrão 0.0.0.0)
--mcp-endpoint, FASTMCP_ENDPOINTCaminho do Streamable HTTP (padrão /mcp)
--stateless, FASTMCP_STATELESS=trueModo HTTP sem estado (opcional)

As opções de conexão do Whistle permanecem inalteradas: --host, --port, --username / --password (ou -n / -w).

Exemplo (transporte HTTP + Whistle local na porta 8899; o MCP escuta em 8085 por padrão):

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

Use --mcp-port <port> para substituir o padrão 8085.

Após a instalação, você pode configurar o Whistle MCP no seu arquivo de configuração JSON do MCP:

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

Se você iniciar o Whistle com autenticação básica (mesmas flags da CLI do Whistle: w2 start -n <username> -w <password>), passe as mesmas credenciais para este servidor MCP para que as requisições HTTP à API do Whistle sejam bem-sucedidas:

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

Opções curtas (alinhadas com w2): -n / -w são equivalentes a --username / --password.

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

Detalhes da Configuração

  • host: Endereço IP do servidor Whistle; o padrão é localhost se omitido
  • port: Porta do servidor Whistle; o padrão é 8899 se omitido
  • username (-n / --username): Nome de usuário da autenticação básica quando o Whistle foi iniciado com -n; omita se o Whistle não tiver login
  • password (-w / --password): Senha da autenticação básica quando o Whistle foi iniciado com -w; se o nome de usuário for definido mas a senha for omitida, uma senha vazia é enviada

Configurando o JSON do MCP em Clientes de IA

Descrição das Ferramentas do MCP

O Whistle MCP Server fornece as seguintes ferramentas, que podem ser chamadas via protocolo MCP:

Gerenciamento de Regras

Nome da FerramentaDescriçãoFunção
getRulesObter todas as regrasListar todas as regras criadas e seu conteúdo
createRuleCriar nova regraCriar uma nova regra com o nome especificado
updateRuleAtualizar conteúdo da regraModificar o conteúdo de uma regra especificada
renameRuleRenomear regraRenomear uma regra para um novo nome
deleteRuleExcluir regraExcluir uma regra com o nome especificado
enableRuleAtivar regraAtivar uma regra com o nome especificado
disableRuleDesativar regraDesativar uma regra com o nome especificado
setAllRulesStateDefinir estado de todas as regrasAtivar ou desativar todas as regras de uma vez

Gerenciamento de Grupos

Nome da FerramentaDescriçãoFunção
createGroupCriar grupoCriar um novo grupo de regras com o nome especificado
renameGroupRenomear grupoRenomear um grupo de regras para um novo nome
deleteGroupExcluir grupoExcluir um grupo de regras com o nome especificado
addRuleToGroupAdicionar regra ao grupoAdicionar uma regra especificada a um grupo específico
removeRuleFromGroupRemover regra do grupoRemover uma regra do seu grupo para o nível superior

Gerenciamento de Valores

Nome da FerramentaDescriçãoFunção
getAllValuesObter todos os valoresListar todos os valores e grupos de valores criados (nota: os dados podem ser grandes, considere usar getValueList primeiro)
getValueListObter lista de valoresObter lista de valores apenas com índice e nome (sem o campo de dados, para evitar cargas grandes)
getValueObter valor individualObter informações completas de um único valor pelo nome (incluindo o campo de dados)
createValueCriar novo valorCriar um novo valor com o nome especificado
updateValueAtualizar conteúdo do valorModificar o conteúdo de um valor especificado
renameValueRenomear valorRenomear um valor para um novo nome
deleteValueExcluir valorExcluir um valor com o nome especificado
createValuesGroupCriar grupo de valoresCriar um novo grupo de valores com o nome especificado
renameValueGroupRenomear grupo de valoresRenomear um grupo de valores para um novo nome
deleteValueGroupExcluir grupo de valoresExcluir um grupo de valores com o nome especificado
addValueToGroupAdicionar valor ao grupoAdicionar um valor especificado a um grupo específico
removeValueFromGroupRemover valor do grupoRemover um valor do seu grupo para o nível superior

Controle de Proxy

Nome da FerramentaDescriçãoFunção
getWhistleStatusObter status do servidorObter as informações de status atuais do servidor Whistle
toggleProxyAtivar/desativar proxyAlternar o estado ativado do proxy Whistle
toggleHttpInterceptionAtivar/desativar interceptação HTTPAlternar o estado ativado da interceptação de requisições HTTP
toggleHttpsInterceptionAtivar/desativar interceptação HTTPSAlternar o estado ativado da interceptação de requisições HTTPS
toggleHttp2Ativar/desativar HTTP2Alternar o estado ativado do suporte ao protocolo HTTP/2
toggleMultiRuleModeAtivar/desativar modo multi-regraAlternar se múltiplas regras podem ser ativadas simultaneamente

Gerenciamento de Requisições

Nome da FerramentaDescriçãoFunção
getInterceptInfoObter informações de interceptaçãoObter informações de requisições de rede interceptadas pelo Whistle, com suporte a filtro por URL e regex
replayRequestReproduzir requisiçãoReenviar uma requisição de rede especificada com parâmetros personalizáveis

Utilitários

Nome da FerramentaDescriçãoFunção
getCurrentTimestampObter timestamp atualObter o timestamp local atual

Informações de Contato