HTTP Requests

Un servidor MCP para realizar solicitudes HTTP, que permite a los LLMs obtener y procesar contenido web.

Documentación

中文


mcp-server-requests

Un servidor MCP que proporciona capacidades de solicitudes HTTP, permitiendo a los LLMs obtener y procesar contenido web.

Características

  • fetch: Herramienta de obtención de contenido web
    • Soporta la conversión de contenido web a formato Markdown
    • Soporta el filtrado de contenido web (elementos no visuales como script, style, meta)
    • Se alimenta al contexto del LLM, reduciendo el consumo de tokens mediante la conversión a Markdown o el filtrado de elementos no visuales
  • fetch_to_file: Herramienta de guardado de contenido web
    • El contenido web no se alimenta al contexto del LLM, evitando el consumo excesivo de tokens
  • http_request: Herramienta genérica de solicitudes HTTP
    • Soporte completo de métodos HTTP (GET, POST, PUT, PATCH, DELETE)
    • Soporta cabeceras de solicitud personalizadas
    • Soporta cuerpos de solicitud en texto y JSON
    • Devuelve información completa de la respuesta HTTP (estado, cabeceras, cuerpo) para los LLMs
  • Soporta User-Agent personalizado
  • Soporta la generación aleatoria de User-Agent
  • Soporta el uso de la capacidad Root de MCP, controlado por --use-root, utilizable con Clientes MCP que tengan la capacidad root

Instalación

git clone https://github.com/coucya/mcp-server-requests.git
cd mcp-server-requests
pip install .

Uso

Configuración del Servidor MCP

{
    "mcpServers": {
        "mcp-server-requests": {
            "command": "python",
            "args": [
                "-m",
                "mcp_server_requests"
            ]
        }
    }
}

Línea de Comandos

0. Iniciar el Servidor MCP

Inicie el servidor MCP directamente:

python -m mcp_server_requests

Opciones

  • --user-agent TEXT: Especificar una cadena User-Agent personalizada
  • --random-user-agent [browser=xxx;os=xxx]: Usar un User-Agent generado aleatoriamente
  • --force-user-agent: Forzar el uso del User-Agent especificado en la línea de comandos, ignorando el UA proporcionado por el LLM
  • --list-os-and-browser: Listar los navegadores y sistemas operativos disponibles para la generación aleatoria de User-Agent
  • --use-root: Habilitar el soporte de raíz del espacio de trabajo para operaciones de archivos (requiere un Cliente MCP con soporte de capacidad root)
  • --allow-external-file-access: Permitir operaciones de archivos fuera del espacio de trabajo (solo con --use-root)

Detalles de las Opciones

  • --user-agent y --random-user-agent son mutuamente excluyentes y no pueden usarse juntos

  • Métodos de configuración del User-Agent:

    • Cadena personalizada: --user-agent "Mozilla/5.0 (...)"
    • Totalmente aleatorio: --random-user-agent
    • Generación aleatoria condicional:
      • Especificar tipo de navegador: --random-user-agent browser=chrome
      • Especificar sistema operativo: --random-user-agent os=windows
      • Tanto navegador como sistema operativo: --random-user-agent browser=chrome;os=windows
      • Nota: Los parámetros de navegador y sistema operativo no distinguen entre mayúsculas y minúsculas
  • Use --list-os-and-browser para ver los navegadores y sistemas operativos disponibles para --random-user-agent.

  • La opción --force-user-agent controla la prioridad del User-Agent:

    • Cuando --force-user-agent está habilitado: Forzar el uso del User-Agent especificado en la línea de comandos (mediante --user-agent o --random-user-agent)
    • Cuando --force-user-agent está deshabilitado:
      • Si el LLM proporciona un User-Agent en headers, usar el proporcionado por el LLM
      • De lo contrario, usar el User-Agent especificado en la línea de comandos
    • Si no se especifica ninguno, usar el User-Agent predeterminado: Mozilla/5.0 (compatible; mcp-server-requests/{version})
  • --use-root habilita operaciones de archivos relativas a la raíz del espacio de trabajo:

    • Requisito previo: Requiere un Cliente MCP con soporte de capacidad root
    • Cuando está habilitado: fetch_to_file permite rutas absolutas o relativas, las rutas relativas son relativas a la raíz del espacio de trabajo
    • Cuando está deshabilitado: fetch_to_file debe usar rutas absolutas, los archivos se guardan en las ubicaciones de ruta absoluta especificadas
  • --allow-external-file-access: Controla si se permiten operaciones de archivos fuera del espacio de trabajo (solo utilizable con --use-root)

    • Requisito previo: Requiere que --use-root esté habilitado, esta opción no tiene efecto si --use-root no está habilitado
    • Cuando está habilitado: fetch_to_file puede operar en archivos fuera del directorio del espacio de trabajo
    • Cuando está deshabilitado: fetch_to_file solo puede operar en archivos dentro del directorio del espacio de trabajo, incluso si se proporcionan rutas absolutas, no se pueden operar archivos fuera del espacio de trabajo

1. fetch - Obtener Contenido Web

El subcomando fetch es equivalente a la funcionalidad de la herramienta MCP fetch, utilizado para demostrar las capacidades de fetch.

python -m mcp_server_requests fetch <URL> [--return-content {raw,basic_clean,strict_clean,markdown}]

Opciones:

  • --return-content: Tipo de contenido devuelto (predeterminado: markdown)
    • raw: Devuelve el contenido HTML sin procesar (incluye las cabeceras de respuesta)
    • basic_clean: Limpieza básica, eliminando etiquetas no visibles (script, style, meta, etc.) mientras se preserva la estructura
    • strict_clean: Limpieza estricta, eliminando etiquetas no visibles y la mayoría de los atributos HTML, manteniendo solo la estructura esencial
    • markdown: Convierte HTML a formato Markdown limpio

Funcionalidad

Detalles de las Herramientas MCP

1. fetch - Obtener Contenido Web

Obtiene contenido de la URL especificada y lo devuelve en el formato especificado.

Parámetros:

  • url (obligatorio, cadena): URL de destino, soporta protocolos HTTP/HTTPS
  • return_content (opcional, enumeración): Formato de procesamiento de contenido, predeterminado a "markdown"
    • "raw": Devuelve contenido HTML sin procesar con cabeceras de respuesta HTTP completas
    • "basic_clean": Limpieza básica, eliminando etiquetas no visibles (script, style, meta, etc.) mientras se preserva la estructura HTML
    • "strict_clean": Limpieza estricta, eliminando etiquetas no visibles y la mayoría de los atributos HTML, manteniendo solo la estructura esencial
    • "markdown": Convierte contenido HTML a formato Markdown limpio

Devuelve: Contenido procesado según el formato especificado


2. fetch_to_file - Obtener Contenido Web y Guardar en Archivo

Obtiene contenido de la URL especificada y lo guarda en un archivo.

Parámetros:

  • url (obligatorio, cadena): URL de destino
  • file_path (obligatorio, cadena): Ruta de guardado del archivo
    • Cuando --use-root está habilitado: Debe ser una ruta relativa (relativa a la raíz del espacio de trabajo)
    • Cuando --use-root está deshabilitado: Debe ser una ruta absoluta
  • return_content (opcional, enumeración): Formato de procesamiento de contenido, predeterminado a "markdown", mismas opciones que la herramienta fetch

Características:

  • Crea automáticamente los directorios padre para rutas anidadas
  • Todos los archivos se guardan con codificación UTF-8
  • Cuando --use-root está habilitado, puede trabajar con --allow-external-file-access para controlar el alcance de acceso a archivos

Devuelve: Resultado de la operación o mensaje de error


3. http_request - Herramienta Genérica de Solicitudes HTTP

Envía solicitudes HTTP usando cualquier método y obtiene respuestas completas.

Parámetros:

  • url (obligatorio, cadena): URL de destino
  • method (opcional, enumeración): Método HTTP, predeterminado a "GET"
    • "GET", "POST", "PUT", "PATCH", "DELETE"
  • query (opcional, objeto): Parámetros de consulta de URL como pares clave-valor, codificados automáticamente en URL
  • headers (opcional, objeto): Cabeceras de solicitud HTTP personalizadas
  • data (opcional, cadena): Datos del cuerpo de la solicitud en formato texto, mutuamente excluyentes con el parámetro json
  • json (opcional, cualquier tipo): Datos del cuerpo de la solicitud en formato JSON, mutuamente excluyentes con el parámetro data

Restricciones de Parámetros:

  • Los parámetros data y json no pueden usarse juntos
  • Al usar el parámetro json, Content-Type: application/json se establece automáticamente
  • Al usar el parámetro data, se recomienda establecer manualmente el Content-Type apropiado

Devuelve: Respuesta HTTP completa (línea de estado, cabeceras de respuesta y cuerpo de respuesta)


Nota: Las herramientas individuales de métodos HTTP (http_get, http_post, http_put, http_patch, http_delete) han sido eliminadas y reemplazadas por la herramienta unificada http_request.

Licencia

MIT