Crawl MCP

Un servidor MCP para rastrear artículos de WeChat. Admite rastreo individual y por lotes con múltiples formatos de salida, diseñado para herramientas de IA como Cursor.

Documentación

Servidor Crawl-MCP

npm version License: MIT Node.js Version

🚀 Herramienta de extracción de artículos de WeChat que realmente descarga imágenes - Servidor de extracción inteligente basado en el Protocolo de Contexto de Modelo (MCP), diseñado para Cursor IDE y herramientas de IA.

🎉 Actualización importante v1.1.0: ¡Actualizado de "generador de instrucciones" a "herramienta de descarga real", con soporte completo para localización de imágenes!

✨ Características principales

🎯 Funciones principales (v1.1.0)

  • Descarga real de imágenes: ✅ Descarga imágenes de WeChat de verdad, no solo genera instrucciones
  • Diseño de doble modo: Modo instrucción (para aprender) + Modo automático (para eficiencia)
  • Localización completa: Descarga de imágenes + actualización de rutas + documento Markdown utilizable sin conexión
  • Procesamiento inteligente: Reconocimiento de dominios de WeChat, encabezados correctos, control de concurrencia, mecanismo de reintentos

🔧 Características técnicas (v1.1.0)

  • Procesamiento profesional de imágenes:
    • 🎯 Reconocimiento de dominios de imágenes de WeChat (mmbiz.qpic.cn)
    • 🎯 Encabezados HTTP correctos (Referer, User-Agent)
    • 🎯 Manejo de parámetros wx_fmt (jpeg, png, gif)
    • 🎯 Control de concurrencia (descarga de 3 a la vez) + mecanismo de reintentos
  • Soporte de protocolo MCP: Implementación completa del Protocolo de Contexto de Modelo
  • Arquitectura modular: ImageDownloader + ArticleProcessor + CrawlTool
  • Soporte de TypeScript: Definiciones de tipos y soporte de compilación completos
  • Node.js 18+: Usa la API fetch integrada, sin dependencias adicionales de bibliotecas HTTP

🎮 Integración con Cursor IDE

  • Instalación con un clic: npx crawl-mcp-server@1.1.0
  • Listo para usar: Sin configuración compleja, utilizable directamente
  • Soporte para herramientas de IA: Usa IA directamente en Cursor para extracción completa
  • Reconocimiento automático de herramientas: El agente llama automáticamente a las herramientas de extracción relevantes

🚀 Inicio rápido

💻 Instalación y uso

Método 1: Ejecución directa con npx (recomendado)

# 使用最新的v1.1.0版本
npx crawl-mcp-server@1.1.0

Método 2: Instalación global

npm install -g crawl-mcp-server@1.1.0
crawl-mcp-server

Método 3: Instalación local en el proyecto

npm install crawl-mcp-server@1.1.0
npx crawl-mcp-server

💡 Consejo: Se recomienda usar la versión @1.1.0 para asegurar las funciones más recientes de descarga de imágenes

🔌 Configuración de Cursor IDE

  1. Crear archivo de configuración MCP Crea .cursor/mcp.json en la raíz del proyecto:

    {
      "mcpServers": {
        "crawl-mcp": {
          "command": "npx",
          "args": ["-y", "crawl-mcp-server@1.1.0"],
          "env": {
            "NODE_ENV": "production"
          }
        }
      }
    }
    
  2. Reiniciar Cursor Reinicia Cursor para que la configuración surta efecto

  3. Comenzar a usar Usa el asistente de IA directamente en Cursor para la extracción web:

    Modo instrucción (recomendado para aprender):

    请使用crawl mcp抓取这篇微信文章:https://mp.weixin.qq.com/s/xxxxx
    

    Modo automático (prioriza la eficiencia):

    我已经获取了HTML内容,请使用crawl mcp自动模式处理并下载图片
    

🛠️ Descripción de herramientas MCP

1. crawl_wechat_article

Herramienta de extracción de un solo artículo

Parámetros:

  • url (obligatorio): Enlace del artículo de WeChat
  • outputFormat (opcional): Formato de salida (markdown/json/html, predeterminado: markdown)
  • strategy (opcional): Estrategia de extracción (basic/conservative/fast, predeterminado: basic)
  • includeImages (opcional): Incluir imágenes o no (predeterminado: true)

Ejemplo:

{
  "url": "https://mp.weixin.qq.com/s/example123",
  "outputFormat": "markdown",
  "strategy": "basic",
  "includeImages": true
}

2. crawl_wechat_batch

Herramienta de extracción por lotes de artículos

Parámetros:

  • urls (obligatorio): Matriz de enlaces de artículos
  • outputFormat (opcional): Formato de salida
  • strategy (opcional): Estrategia de extracción
  • maxConcurrent (opcional): Número máximo de concurrencia (predeterminado: 3)

Ejemplo:

{
  "urls": [
    "https://mp.weixin.qq.com/s/example1",
    "https://mp.weixin.qq.com/s/example2"
  ],
  "outputFormat": "markdown",
  "maxConcurrent": 2
}

3. crawl_get_status

Herramienta de consulta de estado

Parámetros:

  • sessionId (opcional): ID de sesión; si no se proporciona, devuelve el estado de todas las sesiones

⚙️ Descripción de estrategias de extracción

EstrategiaVelocidadEstabilidadEscenario de uso
fast⚡ Más rápida🔸 NormalBuena red, página simple
basic🚀 Media⭐ EquilibradaLa mayoría de los casos (recomendada)
conservative🐌 Más lenta💎 Más estableRed inestable, página compleja

📦 Estructura del proyecto

crawl-mcp/
├── src/
│   ├── core/              # 核心模块
│   │   ├── CrawlMCPServer.ts    # MCP服务器
│   │   ├── CallOrchestrator.ts  # 调用编排器
│   │   └── StateManager.ts     # 状态管理
│   ├── adapters/          # 输出适配器
│   │   ├── MCPOutputAdapter.ts  # MCP格式转换
│   │   └── FileOutputAdapter.ts # 文件输出
│   ├── clients/           # 客户端
│   │   └── PlaywrightMCPClient.ts # Playwright客户端
│   ├── processors/        # 内容处理器
│   │   ├── ContentExtractor.ts  # 内容提取
│   │   ├── MarkdownConverter.ts # Markdown转换
│   │   └── ImageProcessor.ts    # 图片处理
│   ├── tools/             # MCP工具定义
│   ├── types/             # TypeScript类型
│   └── utils/             # 工具函数
├── docs/                  # 文档
├── examples/              # 示例代码
└── tests/                 # 测试文件

🧪 Desarrollo y pruebas

Instalar dependencias

pnpm install

Compilar el proyecto

pnpm build

Ejecutar pruebas

pnpm test

Desarrollo local

pnpm dev

📊 Cobertura de pruebas

  • ✅ 25 pruebas todas aprobadas
  • 🧪 Pruebas unitarias: Verificación de funcionalidad de componentes principales
  • 🔗 Pruebas de integración: Pruebas de integridad del protocolo MCP
  • 📋 Pruebas de configuración: Verificación de todos los archivos de configuración

🤝 Guía de contribución

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

📄 Licencia

Este proyecto está bajo la licencia MIT - consulta el archivo LICENSE para más detalles.

🔗 Enlaces relacionados

📞 Soporte

Si encuentras algún problema o tienes sugerencias, por favor:


⭐ Si este proyecto te resulta útil, ¡danos una estrella!

Hecho con ❤️ por wutongci