Fetch as Markdown MCP Server
Busca páginas da web e as converte para markdown limpo, focando na extração do conteúdo principal.
Documentação
Servidor MCP Fetch as Markdown
Um servidor Model Context Protocol (MCP) que busca páginas da web e as converte em formato markdown limpo e legível, com foco na extração do conteúdo principal e minimização da sobrecarga de contexto.
Visão Geral
Este servidor MCP atua como uma ponte entre assistentes de IA e a web, projetado especificamente para:
- Extrair Conteúdo Limpo: Foca no conteúdo principal do artigo, removendo navegação, anúncios e barras laterais
- Minimizar Contexto: Remove elementos desnecessários para reduzir o uso de tokens, preservando a estrutura do conteúdo
- Raspagem Respeitosa: Implementa limitação de taxa adequada, cabeçalhos de user-agent e tratamento de tempo limite
- Resiliência a Erros: Lida graciosamente com vários erros relacionados à web e casos extremos
Recursos
🌐 Busca de Páginas Web
- Busca qualquer página web publicamente acessível
- Tratamento automático de redirecionamentos com relatório da URL final
- Tempos limite configuráveis e tratamento adequado de erros
- Limitação de taxa respeitosa (intervalos de 1 segundo entre solicitações)
🧹 Limpeza de Conteúdo
- Remove navegação, anúncios, barras laterais e outros elementos não essenciais
- Foca nas áreas de conteúdo principal usando detecção semântica de HTML
- Remove atributos HTML desnecessários para reduzir o uso de tokens
- Preserva a estrutura e legibilidade do conteúdo
📝 Conversão para Markdown
- Converte HTML em markdown limpo e legível
- Inclusão configurável de links e imagens
- Hierarquia de cabeçalhos e formatação adequadas
- Pós-processamento para remover espaços em branco excessivos
Instalação e Configuração
Pré-requisitos
- Python 3.12 ou superior
- Gerenciador de pacotes
uv
Início Rápido
Execute diretamente com uvx:
uvx git+https://github.com/bhubbb/mcp-fetch-as-markdown
Ou instale localmente:
-
Clone ou baixe este projeto
-
Instale as dependências:
cd mcp-fetch-as-markdown uv sync -
Execute o servidor:
uv run python main.py
Integração com Assistentes de IA
Este servidor MCP foi projetado para funcionar com assistentes de IA que suportam o Model Context Protocol. Configure seu assistente de IA para conectar-se a este servidor via stdio.
Exemplo de configuração para Claude Desktop:
{
"mcpServers": {
"fetch-as-markdown": {
"command": "uvx",
"args": ["git+https://github.com/bhubbb/mcp-fetch-as-markdown"]
}
}
}
Ou se estiver usando uma instalação local:
{
"mcpServers": {
"fetch-as-markdown": {
"command": "uv",
"args": ["run", "python", "/path/to/mcp-fetch-as-markdown/main.py"]
}
}
}
Ferramentas Disponíveis
fetch
Busca uma página web e a converte em formato markdown limpo.
Parâmetros:
url(obrigatório): URL da página web a ser buscada e convertidainclude_links(opcional): Se deve preservar links na saída markdown (padrão: true)include_images(opcional): Se deve incluir referências de imagens (padrão: false)timeout(opcional): Tempo limite da solicitação em segundos (5-30, padrão: 10)
Retorna:
- Metadados da busca (URL original, URL final, título, tamanho do conteúdo, código de status, tipo de conteúdo)
- Conteúdo markdown limpo com formatação adequada
Exemplo:
{
"name": "fetch",
"arguments": {
"url": "https://example.com/article",
"include_links": true,
"include_images": false,
"timeout": 15
}
}
Como Funciona
Estratégia de Extração de Conteúdo
- Buscar Página: Faz solicitação HTTP com cabeçalhos adequados e tratamento de tempo limite
- Analisar HTML: Usa BeautifulSoup para analisar o conteúdo HTML
- Remover Elementos Indesejados: Remove scripts, estilos, navegação, anúncios, barras laterais, rodapés
- Encontrar Conteúdo Principal: Procura elementos semânticos como
<main>,<article>, ou classes de conteúdo comuns - Limpar Atributos: Remove atributos HTML desnecessários para reduzir o tamanho
- Converter para Markdown: Usa conversão markdown configurável com formatação adequada
- Pós-processar: Remove espaços em branco excessivos e linhas em branco
Raspagem Web Respeitosa
- Limitação de Taxa: Intervalo mínimo de 1 segundo entre solicitações
- User Agent: Identificação adequada como ferramenta "MCP-Fetch-As-Markdown"
- Tratamento de Tempo Limite: Tempos limite configuráveis para evitar solicitações penduradas
- Tratamento de Erros: Tratamento gracioso de problemas de rede, erros HTTP e conteúdo malformado
- Suporte a Redirecionamentos: Segue redirecionamentos e relata URLs finais
Formato de Saída Estruturado
Todas as respostas incluem:
- Bloco de Metadados: URL original, URL final, título da página, estatísticas de conteúdo, status HTTP
- Bloco de Conteúdo: Conversão markdown limpa do conteúdo principal da página
Esta estrutura torna as respostas tanto legíveis por humanos quanto analisáveis por máquinas, minimizando o uso de tokens.
Tratamento de Erros
- URLs Inválidas: Validação clara e mensagens de erro
- Problemas de Rede: Tratamento de tempo limite, erro de conexão e falha de DNS
- Erros HTTP: Tratamento adequado de 404, 500 e outros códigos de status HTTP
- Conteúdo Malformado: Tratamento gracioso de HTML quebrado e problemas de codificação
Casos de Uso
Para Pesquisa e Análise
- Converter artigos e postagens de blog em markdown limpo para análise
- Extrair conteúdo principal de notícias e artigos de pesquisa
- Coletar informações minimizando contexto irrelevante
Para Processamento de Conteúdo
- Preparar conteúdo web para processamento adicional por IA
- Extrair texto limpo de páginas web para resumo
- Converter conteúdo HTML em markdown para documentação
Para Assistentes de IA
- Buscar e processar conteúdo web com sobrecarga mínima de tokens
- Extrair informações relevantes filtrando ruído
- Fornecer conteúdo limpo e estruturado para raciocínio de IA
Exemplos
Busca Básica de Página
Pergunte ao seu assistente de IA: "Busque o conteúdo desta URL de artigo como markdown"
O servidor irá:
- Buscar a página web com cabeçalhos adequados e limitação de taxa
- Extrair a área de conteúdo principal, removendo navegação e anúncios
- Converter para formato markdown limpo
- Retornar metadados e conteúdo estruturados
Com Preservação de Links
Pergunte ao seu assistente de IA: "Busque esta página, mas mantenha todos os links intactos"
O servidor irá:
- Buscar e processar a página normalmente
- Preservar todos os hiperlinks em formato markdown
[text](url) - Manter a estrutura de links enquanto limpa outros elementos
Exemplo de Tratamento de Erros
Pergunte ao seu assistente de IA: "Tente buscar conteúdo desta URL quebrada"
O servidor irá:
- Validar o formato da URL
- Tentar a solicitação com tempo limite adequado
- Retornar uma mensagem de erro estruturada se a solicitação falhar
- Fornecer informações úteis sobre o que deu errado
Desenvolvimento
Estrutura do Projeto
mcp-fetch-as-markdown/
├── main.py # Main MCP server implementation
├── pyproject.toml # Project dependencies and metadata
├── AGENT.md # Development rules and guidelines
├── example.py # Usage examples and demonstrations
└── .venv/ # Virtual environment (created by uv)
Dependências Principais
mcp: Framework Model Context Protocolrequests: Tratamento de solicitações HTTPbeautifulsoup4: Análise de HTML e extração de conteúdomarkdownify: Conversão de HTML para markdown
Personalização
O servidor pode ser facilmente personalizado modificando main.py:
- Seletores de Conteúdo: Modifique os seletores CSS usados para encontrar o conteúdo principal
- Limitação de Taxa: Ajuste o intervalo mínimo entre solicitações
- Configurações de Tempo Limite: Altere os valores padrão e máximo de tempo limite
- Filtragem de Conteúdo: Adicione regras personalizadas de processamento ou filtragem de conteúdo
- Opções de Markdown: Personalize as configurações de conversão markdown
Testando o Servidor
Teste o servidor diretamente:
uvx git+https://github.com/bhubbb/mcp-fetch-as-markdown
Ou com instalação local:
cd mcp-fetch-as-markdown
uv run python main.py
Para testes interativos, use o script de exemplo:
uv run python example.py
Solução de Problemas
Problemas Comuns
- Erros de Importação: Certifique-se de que todas as dependências estejam instaladas com
uv sync - Tempos Limite de Conexão: Alguns sites podem ser lentos; tente aumentar o parâmetro de tempo limite
- Limitação de Taxa: O servidor aplica intervalos de 1 segundo entre solicitações
- Solicitações Bloqueadas: Alguns sites podem bloquear solicitações automatizadas; isso é comportamento esperado
Depuração
Ative o registro de depuração modificando o nível de registro em main.py:
logging.basicConfig(level=logging.DEBUG)
Compatibilidade de Sites
- Sites Modernos: Funciona melhor com estrutura HTML padrão
- Sites com Muito JavaScript: Não pode executar JavaScript; busca apenas o HTML inicial
- Conteúdo Protegido: Respeita robots.txt e restrições de acesso do site
- Limites de Taxa: Implementa práticas respeitosas de raspagem
Uso Ético
Esta ferramenta foi projetada para pesquisa legítima, análise e processamento de conteúdo. Por favor:
- Respeite os Termos de Serviço: Sempre verifique e cumpra os termos de serviço do site
- Evite Sobrecarga: A limitação de taxa integrada ajuda, mas esteja atento à frequência de solicitações
- Atribuição: Dê crédito adequado às fontes originais ao usar conteúdo extraído
- Conformidade Legal: Certifique-se de que seu caso de uso esteja em conformidade com as leis e regulamentos aplicáveis
Contribuindo
Esta é uma implementação simples de arquivo único, projetada para clareza e facilidade de modificação. Sinta-se à vontade para:
- Adicionar suporte para estratégias adicionais de extração de conteúdo
- Implementar filtragem personalizada para tipos específicos de sites
- Adicionar cache para melhor desempenho
- Estender com opções adicionais de formatação markdown
Licença
Este projeto usa a mesma licença de suas dependências. O conteúdo buscado de sites permanece sujeito aos termos de serviço e direitos autorais do site original.