MCP Webscan Server

Obtener, analizar y extraer información de páginas web.

Documentación

MseeP.ai Security Assessment Badge

MCP Webscan Server

smithery badge

Un servidor de Model Context Protocol (MCP) para el escaneo y análisis de contenido web. Este servidor proporciona herramientas para obtener, analizar y extraer información de páginas web.

Webscan Server MCP server

Características

  • Obtención de páginas: Convierte páginas web a Markdown para un análisis fácil
  • Extracción de enlaces: Extrae y analiza enlaces de páginas web
  • Rastreo de sitios: Rastrea sitios web de forma recursiva para descubrir contenido
  • Verificación de enlaces: Identifica enlaces rotos en páginas web
  • Coincidencia de patrones: Encuentra URLs que coincidan con patrones específicos
  • Generación de sitemaps: Genera sitemaps XML para sitios web

Instalación

Instalación mediante Smithery

Para instalar Webscan para Claude Desktop automáticamente mediante Smithery:

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

Instalación manual

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

# Install dependencies
npm install

# Build the project
npm run build

Uso

Iniciar el servidor

npm start

El servidor se ejecuta en el transporte stdio, lo que lo hace compatible con clientes MCP como Claude Desktop.

Herramientas disponibles

  1. fetch-page

    • Obtiene una página web y la convierte a Markdown.
    • Parámetros:
      • url (obligatorio): URL de la página a obtener.
      • selector (opcional): Selector CSS para apuntar a contenido específico.
  2. extract-links

    • Extrae todos los enlaces de una página web con su texto.
    • Parámetros:
      • url (obligatorio): URL de la página a analizar.
      • baseUrl (opcional): URL base para filtrar enlaces.
      • limit (opcional, predeterminado: 100): Número máximo de enlaces a devolver.
  3. crawl-site

    • Rastrea un sitio web de forma recursiva hasta una profundidad especificada.
    • Parámetros:
      • url (obligatorio): URL inicial para rastrear.
      • maxDepth (opcional, predeterminado: 2): Profundidad máxima de rastreo (0-5).
  4. check-links

    • Verifica si hay enlaces rotos en una página.
    • Parámetros:
      • url (obligatorio): URL para verificar enlaces.
  5. find-patterns

    • Encuentra URLs que coincidan con un patrón específico.
    • Parámetros:
      • url (obligatorio): URL para buscar.
      • pattern (obligatorio): Patrón de expresión regular compatible con JavaScript para comparar URLs.
  6. generate-site-map

    • Genera un sitemap XML simple mediante rastreo.
    • Parámetros:
      • url (obligatorio): URL raíz para el rastreo del sitemap.
      • maxDepth (opcional, predeterminado: 2): Profundidad máxima de rastreo para descubrir URLs (0-5).
      • limit (opcional, predeterminado: 1000): Número máximo de URLs para incluir en el sitemap.

Ejemplo de uso con Claude Desktop

  1. Configura el servidor en la configuración de 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. Usa las herramientas en tus conversaciones:
Could you fetch the content from https://example.com and convert it to Markdown?

Desarrollo

Requisitos previos

  • Node.js >= 18
  • npm

Estructura del proyecto (post-refactorización)

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

Compilación

npm run build

Modo de desarrollo

npm run dev

Ejecución de evaluaciones

El paquete de evaluaciones carga un cliente mcp que luego ejecuta el archivo index.ts, por lo que no es necesario reconstruir entre pruebas. Puedes cargar variables de entorno prefijando el comando npx. La documentación completa se puede encontrar aquí.

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

Manejo de errores

El servidor implementa un manejo integral de errores:

  • Parámetros no válidos
  • Errores de red
  • Errores de análisis de contenido
  • Validación de URLs

Todos los errores se formatean correctamente según la especificación MCP.

Contribuciones

  1. Haz un fork del repositorio
  2. Crea tu rama de características (git checkout -b feature/amazing-feature)
  3. Haz commit de tus cambios (git commit -m 'Add some amazing feature')
  4. Haz push a la rama (git push origin feature/amazing-feature)
  5. Abre una solicitud de extracción (Pull Request)

Licencia

Licencia MIT: consulta el archivo LICENSE para obtener más detalles