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 / env | Significado |
|---|---|
--transport / -t, FASTMCP_TRANSPORT | stdio (padrão) ou http-stream |
--mcp-port, FASTMCP_PORT | Porta HTTP do MCP (padrão 8085 ao usar transporte HTTP) |
--mcp-host, FASTMCP_HOST | Endereço de bind (padrão 0.0.0.0) |
--mcp-endpoint, FASTMCP_ENDPOINT | Caminho do Streamable HTTP (padrão /mcp) |
--stateless, FASTMCP_STATELESS=true | Modo 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 é
localhostse omitido - port: Porta do servidor Whistle; o padrão é
8899se 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
- Claude Client: https://modelcontextprotocol.io/quickstart/user
- Raycast: Requer instalação do plugin MCP
- Cursor: https://docs.cursor.com/context/model-context-protocol#configuring-mcp-servers
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 Ferramenta | Descrição | Função |
|---|---|---|
| getRules | Obter todas as regras | Listar todas as regras criadas e seu conteúdo |
| createRule | Criar nova regra | Criar uma nova regra com o nome especificado |
| updateRule | Atualizar conteúdo da regra | Modificar o conteúdo de uma regra especificada |
| renameRule | Renomear regra | Renomear uma regra para um novo nome |
| deleteRule | Excluir regra | Excluir uma regra com o nome especificado |
| enableRule | Ativar regra | Ativar uma regra com o nome especificado |
| disableRule | Desativar regra | Desativar uma regra com o nome especificado |
| setAllRulesState | Definir estado de todas as regras | Ativar ou desativar todas as regras de uma vez |
Gerenciamento de Grupos
| Nome da Ferramenta | Descrição | Função |
|---|---|---|
| createGroup | Criar grupo | Criar um novo grupo de regras com o nome especificado |
| renameGroup | Renomear grupo | Renomear um grupo de regras para um novo nome |
| deleteGroup | Excluir grupo | Excluir um grupo de regras com o nome especificado |
| addRuleToGroup | Adicionar regra ao grupo | Adicionar uma regra especificada a um grupo específico |
| removeRuleFromGroup | Remover regra do grupo | Remover uma regra do seu grupo para o nível superior |
Gerenciamento de Valores
| Nome da Ferramenta | Descrição | Função |
|---|---|---|
| getAllValues | Obter todos os valores | Listar todos os valores e grupos de valores criados (nota: os dados podem ser grandes, considere usar getValueList primeiro) |
| getValueList | Obter lista de valores | Obter lista de valores apenas com índice e nome (sem o campo de dados, para evitar cargas grandes) |
| getValue | Obter valor individual | Obter informações completas de um único valor pelo nome (incluindo o campo de dados) |
| createValue | Criar novo valor | Criar um novo valor com o nome especificado |
| updateValue | Atualizar conteúdo do valor | Modificar o conteúdo de um valor especificado |
| renameValue | Renomear valor | Renomear um valor para um novo nome |
| deleteValue | Excluir valor | Excluir um valor com o nome especificado |
| createValuesGroup | Criar grupo de valores | Criar um novo grupo de valores com o nome especificado |
| renameValueGroup | Renomear grupo de valores | Renomear um grupo de valores para um novo nome |
| deleteValueGroup | Excluir grupo de valores | Excluir um grupo de valores com o nome especificado |
| addValueToGroup | Adicionar valor ao grupo | Adicionar um valor especificado a um grupo específico |
| removeValueFromGroup | Remover valor do grupo | Remover um valor do seu grupo para o nível superior |
Controle de Proxy
| Nome da Ferramenta | Descrição | Função |
|---|---|---|
| getWhistleStatus | Obter status do servidor | Obter as informações de status atuais do servidor Whistle |
| toggleProxy | Ativar/desativar proxy | Alternar o estado ativado do proxy Whistle |
| toggleHttpInterception | Ativar/desativar interceptação HTTP | Alternar o estado ativado da interceptação de requisições HTTP |
| toggleHttpsInterception | Ativar/desativar interceptação HTTPS | Alternar o estado ativado da interceptação de requisições HTTPS |
| toggleHttp2 | Ativar/desativar HTTP2 | Alternar o estado ativado do suporte ao protocolo HTTP/2 |
| toggleMultiRuleMode | Ativar/desativar modo multi-regra | Alternar se múltiplas regras podem ser ativadas simultaneamente |
Gerenciamento de Requisições
| Nome da Ferramenta | Descrição | Função |
|---|---|---|
| getInterceptInfo | Obter informações de interceptação | Obter informações de requisições de rede interceptadas pelo Whistle, com suporte a filtro por URL e regex |
| replayRequest | Reproduzir requisição | Reenviar uma requisição de rede especificada com parâmetros personalizáveis |
Utilitários
| Nome da Ferramenta | Descrição | Função |
|---|---|---|
| getCurrentTimestamp | Obter timestamp atual | Obter o timestamp local atual |
Informações de Contato
- Email: gz7gugu@qq.com
- Blog: https://7gugu.com