HTTP Requests

Um servidor MCP para fazer requisições HTTP, permitindo que LLMs obtenham e processem conteúdo da web.

Documentação

中文


mcp-server-requests

Um servidor MCP que fornece capacidades de requisição HTTP, permitindo que LLMs busquem e processem conteúdo web.

Recursos

  • fetch: Ferramenta de busca de conteúdo web
    • Suporta conversão de conteúdo web para formato Markdown
    • Suporta filtragem de conteúdo web (elementos não visuais como script, style, meta)
    • Alimenta o contexto do LLM, reduzindo o consumo de tokens através da conversão para Markdown ou filtragem de elementos não visuais
  • fetch_to_file: Ferramenta de salvamento de conteúdo web
    • O conteúdo web não é alimentado no contexto do LLM, evitando consumo excessivo de tokens
  • http_request: Ferramenta genérica de requisição HTTP
    • Suporte completo a métodos HTTP (GET, POST, PUT, PATCH, DELETE)
    • Suporta cabeçalhos de requisição personalizados
    • Suporta corpos de requisição em texto e JSON
    • Retorna informações completas da resposta HTTP (status, cabeçalhos, corpo) para LLMs
  • Suporta User-Agent personalizado
  • Suporta geração aleatória de User-Agent
  • Suporta o uso da capacidade MCP Root, controlado por --use-root, utilizável com Clientes MCP que possuem a capacidade root

Instalação

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

Uso

Configuração do Servidor MCP

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

Linha de Comando

0. Iniciar Servidor MCP

Inicie o servidor MCP diretamente:

python -m mcp_server_requests

Opções

  • --user-agent TEXT: Especifica string de User-Agent personalizada
  • --random-user-agent [browser=xxx;os=xxx]: Usa User-Agent gerado aleatoriamente
  • --force-user-agent: Força o uso do User-Agent especificado na linha de comando, ignorando o UA fornecido pelo LLM
  • --list-os-and-browser: Lista navegadores e SO disponíveis para geração aleatória de User-Agent
  • --use-root: Habilita suporte à raiz do workspace para operações de arquivo (requer Cliente MCP com suporte à capacidade root)
  • --allow-external-file-access: Permite operações de arquivo fora do workspace (somente com --use-root)

Detalhes das Opções

  • --user-agent e --random-user-agent são mutuamente exclusivos e não podem ser usados juntos

  • Métodos de configuração do User-Agent:

    • String personalizada: --user-agent "Mozilla/5.0 (...)"
    • Totalmente aleatório: --random-user-agent
    • Geração aleatória condicional:
      • Especificar tipo de navegador: --random-user-agent browser=chrome
      • Especificar SO: --random-user-agent os=windows
      • Navegador e SO: --random-user-agent browser=chrome;os=windows
      • Nota: Os parâmetros de navegador e SO não diferenciam maiúsculas de minúsculas
  • Use --list-os-and-browser para visualizar navegadores e SO disponíveis para --random-user-agent.

  • A opção --force-user-agent controla a prioridade do User-Agent:

    • Quando --force-user-agent está habilitado: Força o uso do User-Agent especificado na linha de comando (via --user-agent ou --random-user-agent)
    • Quando --force-user-agent está desabilitado:
      • Se o LLM fornecer User-Agent em headers, use o fornecido pelo LLM
      • Caso contrário, use o User-Agent especificado na linha de comando
    • Se nenhum for especificado, use o User-Agent padrão: Mozilla/5.0 (compatible; mcp-server-requests/{version})
  • --use-root habilita operações de arquivo relativas à raiz do workspace:

    • Pré-requisito: Requer Cliente MCP com suporte à capacidade root
    • Quando habilitado: fetch_to_file permite caminhos absolutos ou relativos, caminhos relativos são relativos à raiz do workspace
    • Quando desabilitado: fetch_to_file deve usar caminhos absolutos, os arquivos são salvos nos locais de caminho absoluto especificados
  • --allow-external-file-access: Controla se operações de arquivo fora do workspace são permitidas (somente utilizável com --use-root)

    • Pré-requisito: Requer que --use-root esteja habilitado, esta opção não tem efeito se --use-root não estiver habilitado
    • Quando habilitado: fetch_to_file pode operar em arquivos fora do diretório do workspace
    • Quando desabilitado: fetch_to_file só pode operar em arquivos dentro do diretório do workspace, mesmo que caminhos absolutos sejam fornecidos, arquivos fora do workspace não podem ser operados

1. fetch - Buscar Conteúdo Web

O subcomando fetch é equivalente à funcionalidade da ferramenta fetch do MCP, usado para demonstrar as capacidades de fetch.

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

Opções:

  • --return-content: Tipo de conteúdo retornado (padrão: markdown)
    • raw: Retorna conteúdo HTML bruto não processado (inclui cabeçalhos de resposta)
    • basic_clean: Limpeza básica, removendo tags não exibíveis (script, style, meta, etc.) preservando a estrutura
    • strict_clean: Limpeza estrita, removendo tags não exibíveis e a maioria dos atributos HTML, mantendo apenas a estrutura essencial
    • markdown: Converte HTML para formato Markdown limpo

Funcionalidade

Detalhes das Ferramentas MCP

1. fetch - Buscar Conteúdo Web

Busca conteúdo da URL especificada e o retorna no formato especificado.

Parâmetros:

  • url (obrigatório, string): URL de destino, suporta protocolos HTTP/HTTPS
  • return_content (opcional, enum): Formato de processamento do conteúdo, padrão é "markdown"
    • "raw": Retorna conteúdo HTML bruto com cabeçalhos de resposta HTTP completos
    • "basic_clean": Limpeza básica, removendo tags não exibíveis (script, style, meta, etc.) preservando a estrutura HTML
    • "strict_clean": Limpeza estrita, removendo tags não exibíveis e a maioria dos atributos HTML, mantendo apenas a estrutura essencial
    • "markdown": Converte conteúdo HTML para formato Markdown limpo

Retorna: Conteúdo processado de acordo com o formato especificado


2. fetch_to_file - Buscar Conteúdo Web e Salvar em Arquivo

Busca conteúdo da URL especificada e o salva em um arquivo.

Parâmetros:

  • url (obrigatório, string): URL de destino
  • file_path (obrigatório, string): Caminho de salvamento do arquivo
    • Quando --use-root está habilitado: Deve ser um caminho relativo (relativo à raiz do workspace)
    • Quando --use-root está desabilitado: Deve ser um caminho absoluto
  • return_content (opcional, enum): Formato de processamento do conteúdo, padrão é "markdown", mesmas opções da ferramenta fetch

Recursos:

  • Cria automaticamente diretórios pai para caminhos aninhados
  • Todos os arquivos salvos com codificação UTF-8
  • Quando --use-root está habilitado, pode trabalhar com --allow-external-file-access para controlar o escopo de acesso a arquivos

Retorna: Resultado da operação ou mensagem de erro


3. http_request - Ferramenta Genérica de Requisição HTTP

Envia requisições HTTP usando qualquer método e obtém respostas completas.

Parâmetros:

  • url (obrigatório, string): URL de destino
  • method (opcional, enum): Método HTTP, padrão é "GET"
    • "GET", "POST", "PUT", "PATCH", "DELETE"
  • query (opcional, objeto): Parâmetros de consulta da URL como pares chave-valor, codificados automaticamente em URL
  • headers (opcional, objeto): Cabeçalhos de requisição HTTP personalizados
  • data (opcional, string): Dados do corpo da requisição em formato texto, mutuamente exclusivo com o parâmetro json
  • json (opcional, qualquer tipo): Dados do corpo da requisição em formato JSON, mutuamente exclusivo com o parâmetro data

Restrições de Parâmetros:

  • Os parâmetros data e json não podem ser usados juntos
  • Ao usar o parâmetro json, Content-Type: application/json é definido automaticamente
  • Ao usar o parâmetro data, é recomendado definir manualmente o Content-Type apropriado

Retorna: Resposta HTTP completa (linha de status, cabeçalhos de resposta e corpo da resposta)


Nota: As ferramentas individuais de método HTTP (http_get, http_post, http_put, http_patch, http_delete) foram removidas e substituídas pela ferramenta unificada http_request.

Licença

MIT