MCP Webscan Server

Buscar, analisar e extrair informações de páginas web.

Documentação

MseeP.ai Security Assessment Badge

MCP Webscan Server

smithery badge

Um servidor Model Context Protocol (MCP) para varredura e análise de conteúdo web. Este servidor fornece ferramentas para buscar, analisar e extrair informações de páginas web.

Webscan Server MCP server

Recursos

  • Busca de Páginas: Converte páginas web em Markdown para facilitar a análise
  • Extração de Links: Extrai e analisa links de páginas web
  • Rastreamento de Sites: Rastreia sites recursivamente para descobrir conteúdo
  • Verificação de Links: Identifica links quebrados em páginas web
  • Correspondência de Padrões: Encontra URLs que correspondem a padrões específicos
  • Geração de Sitemaps: Gera sitemaps XML para sites

Instalação

Instalação via Smithery

Para instalar o Webscan para Claude Desktop automaticamente via Smithery:

npx -y @smithery/cli install mcp-server-webscan --client claude

Instalação Manual

# Clone the repository
git clone <repository-url>
cd mcp-server-webscan

# Install dependencies
npm install

# Build the project
npm run build

Uso

Iniciando o Servidor

npm start

O servidor roda no transporte stdio, tornando-o compatível com clientes MCP como o Claude Desktop.

Ferramentas Disponíveis

  1. fetch-page

    • Busca uma página web e a converte em Markdown.
    • Parâmetros:
      • url (obrigatório): URL da página a ser buscada.
      • selector (opcional): Seletor CSS para direcionar conteúdo específico.
  2. extract-links

    • Extrai todos os links de uma página web com seus textos.
    • Parâmetros:
      • url (obrigatório): URL da página a ser analisada.
      • baseUrl (opcional): URL base para filtrar links.
      • limit (opcional, padrão: 100): Número máximo de links a retornar.
  3. crawl-site

    • Rastreia um site recursivamente até uma profundidade especificada.
    • Parâmetros:
      • url (obrigatório): URL inicial para rastrear.
      • maxDepth (opcional, padrão: 2): Profundidade máxima de rastreamento (0-5).
  4. check-links

    • Verifica links quebrados em uma página.
    • Parâmetros:
      • url (obrigatório): URL para verificar links.
  5. find-patterns

    • Encontra URLs que correspondem a um padrão específico.
    • Parâmetros:
      • url (obrigatório): URL para pesquisar.
      • pattern (obrigatório): Padrão regex compatível com JavaScript para corresponder às URLs.
  6. generate-site-map

    • Gera um sitemap XML simples por meio de rastreamento.
    • Parâmetros:
      • url (obrigatório): URL raiz para o rastreamento do sitemap.
      • maxDepth (opcional, padrão: 2): Profundidade máxima de rastreamento para descobrir URLs (0-5).
      • limit (opcional, padrão: 1000): Número máximo de URLs a incluir no sitemap.

Exemplo de Uso com Claude Desktop

  1. Configure o servidor nas configurações do Claude Desktop:
{
  "mcpServers": {
    "webscan": {
      "command": "node",
      "args": ["path/to/mcp-server-webscan/build/index.js"], // Corrected path
      "env": {
        "NODE_ENV": "development",
        "LOG_LEVEL": "info" // Example: Set log level via env var
      }
    }
  }
}
  1. Use as ferramentas em suas conversas:
Could you fetch the content from https://example.com and convert it to Markdown?

Desenvolvimento

Pré-requisitos

  • Node.js >= 18
  • npm

Estrutura do Projeto (Pós-Refatoração)

mcp-server-webscan/
├── src/
│   ├── config/
│   │   └── ConfigurationManager.ts
│   ├── services/
│   │   ├── CheckLinksService.ts
│   │   ├── CrawlSiteService.ts
│   │   ├── ExtractLinksService.ts
│   │   ├── FetchPageService.ts
│   │   ├── FindPatternsService.ts
│   │   ├── GenerateSitemapService.ts
│   │   └── index.ts
│   ├── tools/
│   │   ├── checkLinksTool.ts
│   │   ├── checkLinksToolParams.ts
│   │   ├── crawlSiteTool.ts
│   │   ├── crawlSiteToolParams.ts
│   │   ├── extractLinksTool.ts
│   │   ├── extractLinksToolParams.ts
│   │   ├── fetchPageTool.ts
│   │   ├── fetchPageToolParams.ts
│   │   ├── findPatterns.ts
│   │   ├── findPatternsToolParams.ts
│   │   ├── generateSitemapTool.ts
│   │   ├── generateSitemapToolParams.ts
│   │   └── index.ts
│   ├── types/
│   │   ├── checkLinksTypes.ts
│   │   ├── crawlSiteTypes.ts
│   │   ├── extractLinksTypes.ts
│   │   ├── fetchPageTypes.ts
│   │   ├── findPatternsTypes.ts
│   │   ├── generateSitemapTypes.ts
│   │   └── index.ts
│   ├── utils/
│   │   ├── errors.ts
│   │   ├── index.ts
│   │   ├── logger.ts
│   │   ├── markdownConverter.ts
│   │   └── webUtils.ts
│   ├── initialize.ts
│   └── index.ts    # Main server entry point
├── build/          # Compiled JavaScript (Corrected)
├── node_modules/
├── .clinerules
├── .gitignore
├── Dockerfile
├── LICENSE
├── mcp-consistant-servers-guide.md
├── package.json
├── package-lock.json
├── README.md
├── RFC-2025-001-Refactor.md
├── smithery.yaml
└── tsconfig.json

Build

npm run build

Modo de Desenvolvimento

npm run dev

Executando evals

O pacote de evals carrega um cliente mcp que executa o arquivo index.ts, portanto não há necessidade de recompilar entre os testes. Você pode carregar variáveis de ambiente prefixando o comando npx. A documentação completa pode ser encontrada aqui.

OPENAI_API_KEY=your-key  npx mcp-eval src/evals/evals.ts src/tools/extractLinksTool.ts

Tratamento de Erros

O servidor implementa tratamento abrangente de erros:

  • Parâmetros inválidos
  • Erros de rede
  • Erros de análise de conteúdo
  • Validação de URL

Todos os erros são formatados adequadamente de acordo com a especificação MCP.

Contribuindo

  1. Faça um fork do repositório
  2. Crie sua branch de funcionalidade (git checkout -b feature/amazing-feature)
  3. Faça commit das suas alterações (git commit -m 'Add some amazing feature')
  4. Envie para a branch (git push origin feature/amazing-feature)
  5. Abra um Pull Request

Licença

Licença MIT - consulte o arquivo LICENSE para obter detalhes