Whistle MCP Server

Gestiona servidores proxy locales de Whistle a través de asistentes de IA, simplificando la depuración de redes, las pruebas de API y la gestión de reglas.

Documentación

Servidor MCP de Whistle

Inglés | 中文

Introducción del Proyecto

Whistle MCP Server es una herramienta de gestión de proxy Whistle basada en el Protocolo de Contexto de Modelo (MCP), que permite a los asistentes de IA operar y controlar directamente los servidores proxy Whistle locales. A través de esta herramienta, la IA puede ayudar a los usuarios a gestionar reglas, grupos, valores, monitorear solicitudes de red, reproducir y modificar solicitudes, etc., sin necesidad de operar manualmente la interfaz de Whistle. Simplifica enormemente el proceso de depuración de red, pruebas de API y gestión de reglas de proxy, permitiendo a los usuarios completar tareas complejas de configuración de proxy de red mediante interacción en lenguaje natural con la IA.

Características

  • Gestión de Reglas: Crear, actualizar, renombrar, eliminar y habilitar/deshabilitar reglas de Whistle
  • Gestión de Grupos: Crear, renombrar, eliminar grupos y operaciones de asociación entre reglas y grupos
  • Gestión de Valores: Crear, actualizar, renombrar y eliminar valores, con soporte para gestión de grupos de valores
  • Control de Proxy: Habilitar/deshabilitar proxy, interceptación HTTP/HTTPS, protocolo HTTP/2, etc.
  • Interceptación de Solicitudes: Ver información de solicitudes de red interceptadas, con soporte de filtrado por URL
  • Reproducción de Solicitudes: Soporte para reproducir solicitudes capturadas con parámetros de solicitud personalizados
  • Modo Multi-Regla: Soporte para habilitar/deshabilitar el modo multi-regla

Instalación

Requisitos

Se requiere Node.js 18.20.0 o superior (ver engines en package.json). Las versiones anteriores no son compatibles.

Instalación mediante Smithery

Para instalar Whistle MCP Server para Claude Desktop automáticamente a través de Smithery:

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

Instalación Manual

Puedes instalar Whistle MCP Server globalmente mediante npm:

npm install -g whistle-mcp-tool

Compilar desde el código fuente

Desde la raíz del repositorio:

npm install
npm run build

La entrada de salida de la compilación es dist/index.js (el mismo archivo utilizado por el CLI whistle-mcp después de una instalación global). También puedes apuntar la configuración de MCP a él con node y la ruta a dist/index.js.

Configuración de MCP

Transporte (stdio vs HTTP)

Por defecto, el servidor utiliza stdio (adecuado para clientes MCP locales como Cursor).

Para exponer Streamable HTTP y SSE en el mismo proceso (para clientes remotos o compatibles con HTTP), utiliza --transport http-stream. FastMCP entonces escucha en --mcp-host / --mcp-port y sirve:

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

Alias para http-stream: sse, streamable-http (mismo modo; ambas URL están disponibles).

Indicador / envSignificado
--transport / -t, FASTMCP_TRANSPORTstdio (predeterminado) o http-stream
--mcp-port, FASTMCP_PORTPuerto HTTP de MCP (predeterminado 8085 al usar transporte HTTP)
--mcp-host, FASTMCP_HOSTDirección de enlace (predeterminada 0.0.0.0)
--mcp-endpoint, FASTMCP_ENDPOINTRuta de Streamable HTTP (predeterminada /mcp)
--stateless, FASTMCP_STATELESS=trueModo HTTP sin estado (opcional)

Las opciones de conexión de Whistle no cambian: --host, --port, --username / --password (o -n / -w).

Ejemplo (transporte HTTP + Whistle local en 8899; MCP escucha en 8085 por defecto):

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

Usa --mcp-port <port> para sobrescribir el 8085 predeterminado.

Después de la instalación, puedes configurar Whistle MCP en tu archivo de configuración JSON de MCP:

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

Si inicias Whistle con autenticación básica (mismos indicadores que el CLI de Whistle: w2 start -n <username> -w <password>), pasa las mismas credenciales a este servidor MCP para que las solicitudes HTTP a la API de Whistle tengan éxito:

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

Opciones cortas (alineadas con w2): -n / -w son equivalentes a --username / --password.

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

Detalles de Configuración

  • host: Dirección IP del servidor Whistle; predeterminada a localhost si se omite
  • port: Puerto del servidor Whistle; predeterminado a 8899 si se omite
  • username (-n / --username): Nombre de usuario de autenticación básica cuando Whistle se inició con -n; omítelo si Whistle no tiene inicio de sesión
  • password (-w / --password): Contraseña de autenticación básica cuando Whistle se inició con -w; si se establece el nombre de usuario pero se omite la contraseña, se envía una contraseña vacía

Configuración de JSON de MCP en Clientes de IA

Descripción de Herramientas MCP

Whistle MCP Server proporciona las siguientes herramientas, que se pueden llamar mediante el protocolo MCP:

Gestión de Reglas

Nombre de HerramientaDescripciónFunción
getRulesObtener todas las reglasListar todas las reglas creadas y su contenido
createRuleCrear nueva reglaCrear una nueva regla con el nombre especificado
updateRuleActualizar contenido de reglaModificar el contenido de una regla especificada
renameRuleRenombrar reglaRenombrar una regla a un nuevo nombre
deleteRuleEliminar reglaEliminar una regla con el nombre especificado
enableRuleHabilitar reglaHabilitar una regla con el nombre especificado
disableRuleDeshabilitar reglaDeshabilitar una regla con el nombre especificado
setAllRulesStateEstablecer estado de todas las reglasHabilitar o deshabilitar todas las reglas a la vez

Gestión de Grupos

Nombre de HerramientaDescripciónFunción
createGroupCrear grupoCrear un nuevo grupo de reglas con el nombre especificado
renameGroupRenombrar grupoRenombrar un grupo de reglas a un nuevo nombre
deleteGroupEliminar grupoEliminar un grupo de reglas con el nombre especificado
addRuleToGroupAgregar regla al grupoAgregar una regla especificada a un grupo específico
removeRuleFromGroupQuitar regla del grupoQuitar una regla de su grupo al nivel superior

Gestión de Valores

Nombre de HerramientaDescripciónFunción
getAllValuesObtener todos los valoresListar todos los valores y grupos de valores creados (nota: los datos pueden ser grandes, considera usar getValueList primero)
getValueListObtener lista de valoresObtener lista de valores solo con índice y nombre (sin campo de datos, para evitar cargas grandes)
getValueObtener valor individualObtener información completa de un valor individual por nombre (incluyendo campo de datos)
createValueCrear nuevo valorCrear un nuevo valor con el nombre especificado
updateValueActualizar contenido de valorModificar el contenido de un valor especificado
renameValueRenombrar valorRenombrar un valor a un nuevo nombre
deleteValueEliminar valorEliminar un valor con el nombre especificado
createValuesGroupCrear grupo de valoresCrear un nuevo grupo de valores con el nombre especificado
renameValueGroupRenombrar grupo de valoresRenombrar un grupo de valores a un nuevo nombre
deleteValueGroupEliminar grupo de valoresEliminar un grupo de valores con el nombre especificado
addValueToGroupAgregar valor al grupoAgregar un valor especificado a un grupo específico
removeValueFromGroupQuitar valor del grupoQuitar un valor de su grupo al nivel superior

Control de Proxy

Nombre de HerramientaDescripciónFunción
getWhistleStatusObtener estado del servidorObtener la información de estado actual del servidor Whistle
toggleProxyHabilitar/deshabilitar proxyAlternar el estado habilitado del proxy Whistle
toggleHttpInterceptionHabilitar/deshabilitar interceptación HTTPAlternar el estado habilitado de la interceptación de solicitudes HTTP
toggleHttpsInterceptionHabilitar/deshabilitar interceptación HTTPSAlternar el estado habilitado de la interceptación de solicitudes HTTPS
toggleHttp2Habilitar/deshabilitar HTTP2Alternar el estado habilitado del soporte del protocolo HTTP/2
toggleMultiRuleModeHabilitar/deshabilitar modo multi-reglaAlternar si se permite que múltiples reglas estén habilitadas simultáneamente

Gestión de Solicitudes

Nombre de HerramientaDescripciónFunción
getInterceptInfoObtener información de interceptaciónObtener información de solicitudes de red interceptadas por Whistle, con soporte de filtrado por URL y expresiones regulares
replayRequestReproducir solicitudReenviar una solicitud de red especificada con parámetros personalizables

Utilidades

Nombre de HerramientaDescripciónFunción
getCurrentTimestampObtener marca de tiempo actualObtener la marca de tiempo local actual

Información de Contacto