HTTrack MCP Server
Servidor FastMCP que encapsula o HTTrack: agentes de IA espelham sites inteiros em um arquivo offline local (trabalhos em segundo plano) e depois navegam, leem e pesquisam as páginas baixadas via MCP. Um espelho isolado por projeto com proteção de concorrência.
Documentação
Servidor MCP HTTrack
Um servidor FastMCP (Model Context Protocol) que encapsula o clássico copiador de sites HTTrack, permitindo que agentes de IA espelhem sites em um arquivo compartilhado e depois naveguem, leiam e pesquisem o conteúdo baixado — tudo via MCP.
Copyright (C) 2026 Tech Ventures VCC. Licenciado sob a GNU Affero General Public License v3.0 (veja LICENSE).
Por quê
O HTTrack é testado em batalha para cópia offline de sites, mas não possui API de script — apenas uma
GUI e uma CLI. Este servidor o torna nativo para agentes: um agente LLM pode chamar mirror_site para
iniciar um download em segundo plano, consultar mirror_status e depois responder perguntas a partir do
arquivo via catalog, list_files, read_file e search_files.
Ferramentas
| Ferramenta | Finalidade |
|---|---|
mirror_site(url, project, depth, max_rate, filters) | Inicia um espelhamento em segundo plano no arquivo (/data/<project>). Um espelhamento ativo por projeto — uma solicitação concorrente para o mesmo projeto retorna already_running com o job_id ativo; projetos diferentes são executados em paralelo. |
mirror_status(job_id) | Status do trabalho (running / done / failed + final do log). Omita para listar trabalhos recentes; também aceita o nome do projeto. |
catalog() | Todos os projetos: nome curto, descrição curta (derivada automaticamente do <title>/meta description de cada site), URL de origem, status, contagens de páginas/arquivos, tamanho. |
list_files(project, subpath) | Listagem de diretórios dentro de um projeto (nome, tipo, tamanho, modificado). |
read_file(project, path, max_bytes) | Lê um arquivo de texto (HTML/JS/CSS/txt/json/md). Recusa binários; limita o conteúdo a 256 KB para manter o contexto do agente razoável. |
search_files(project, query, max_results) | Pesquisa de substring sem diferenciar maiúsculas/minúsculas nos arquivos de texto de um projeto, com resultados limitados. |
Início rápido
Pré-requisitos: Docker.
docker build -t httrack-mcp-server .
docker run -d --name httrack-mcp --restart unless-stopped \
-p 9050:8000 \
-v /path/to/your/archive:/data:rw \
httrack-mcp
O contêiner expõe o servidor MCP via HTTP streamable em http://<host>:9050/mcp.
Registrar em um cliente MCP
Exemplo para gateways estilo MCPHub (streamable-http):
{
"httrack": {
"type": "streamable-http",
"url": "http://192.168.1.35:9050/mcp",
"enabled": true,
"description": "HTTrack site mirroring + archive browsing",
"owner": "admin"
}
}
Clientes que falam HTTP streamable diretamente podem se conectar a /mcp sem autenticação
adicional (ninguém é autenticado; execute isso em uma rede confiável ou coloque atrás da autenticação
do seu gateway). Veja HELP.md para uso completo, exemplos e solução de problemas.
Modelo de concorrência
- Um processo
httrackpor projeto, isolado por seu próprio diretório de saída — sem estado compartilhado entre projetos, então vários agentes podem espelhar sites diferentes em paralelo. mirror_siteprotege contra espelhamento duplo do mesmo projeto (tabela de trabalhos em processo + uma varredura de/procpara processos httrack gravando no diretório desse projeto).
CI
GitHub Actions é executado em cada PR e push: verificação de sintaxe Python de server.py,
asserções de sanidade do Dockerfile e uma compilação de imagem Docker.
Licença
Este programa é software livre: você pode redistribuí-lo e/ou modificá-lo sob os termos da GNU Affero General Public License conforme publicada pela Free Software Foundation, seja a versão 3 da Licença ou (a seu critério) qualquer versão posterior.
Se você executar uma versão modificada deste servidor como um serviço de rede, o AGPL §13 exige que você ofereça aos seus usuários o código-fonte correspondente dessa versão modificada.
Copyright (C) 2026 Tech Ventures VCC. O próprio HTTrack é licenciado sob GPL por Xavier Roche e colaboradores; este projeto apenas o invoca externamente e não é afiliado a ele.