Crawl MCP

Um servidor MCP para crawling de artigos do WeChat. Suporta crawling único e em lote com múltiplos formatos de saída, projetado para ferramentas de IA como Cursor.

Documentação

Crawl-MCP Server

npm version License: MIT Node.js Version

🚀 Ferramenta de extração de artigos do WeChat que realmente baixa imagens - Servidor de extração inteligente baseado no Model Context Protocol (MCP), projetado para Cursor IDE e ferramentas de IA.

🎉 Grande atualização v1.1.0: de "gerador de instruções" para "ferramenta de download real", com suporte completo à localização de imagens!

✨ Principais recursos

🎯 Funcionalidades principais (v1.1.0)

  • Download real de imagens: ✅ Baixa imagens do WeChat de verdade, não apenas gera instruções
  • Design de modo duplo: modo instrução (para aprendizado) + modo automático (para eficiência)
  • Localização completa: download de imagens + atualização de caminhos + documentos Markdown utilizáveis offline
  • Processamento inteligente: reconhecimento de domínio do WeChat, Headers corretos, controle de concorrência, mecanismo de tentativas

🔧 Recursos técnicos (v1.1.0)

  • Processamento profissional de imagens:
    • 🎯 Reconhecimento de domínio de imagens do WeChat (mmbiz.qpic.cn)
    • 🎯 Headers HTTP corretos (Referer, User-Agent)
    • 🎯 Processamento de parâmetros wx_fmt (jpeg, png, gif)
    • 🎯 Controle de concorrência (download simultâneo de 3) + mecanismo de tentativas
  • Suporte ao protocolo MCP: implementação completa do Model Context Protocol
  • Arquitetura modular: ImageDownloader + ArticleProcessor + CrawlTool
  • Suporte a TypeScript: definições de tipos completas e suporte a compilação
  • Node.js 18+: usa a API fetch integrada, sem dependência de bibliotecas HTTP adicionais

🎮 Integração com Cursor IDE

  • Instalação com um clique: npx crawl-mcp-server@1.1.0
  • Pronto para uso: sem configuração complexa, utilizável diretamente
  • Suporte a ferramentas de IA: use IA diretamente no Cursor para extração completa
  • Reconhecimento automático de ferramentas: o Agent chama automaticamente as ferramentas de extração relevantes

🚀 Início rápido

💻 Instalação e uso

Método 1: Executar diretamente com npx (recomendado)

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

Método 2: Instalação global

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

Método 3: Instalação local no projeto

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

💡 Dica: recomenda-se usar a versão @1.1.0 para garantir os recursos mais recentes de download de imagens

🔌 Configuração do Cursor IDE

  1. Crie o arquivo de configuração MCP Crie .cursor/mcp.json na raiz do projeto:

    {
      "mcpServers": {
        "crawl-mcp": {
          "command": "npx",
          "args": ["-y", "crawl-mcp-server@1.1.0"],
          "env": {
            "NODE_ENV": "production"
          }
        }
      }
    }
    
  2. Reinicie o Cursor Reinicie o Cursor para que a configuração tenha efeito

  3. Comece a usar Use o assistente de IA diretamente no Cursor para extração de páginas da web:

    Modo instrução (recomendado para aprendizado):

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

    Modo automático (prioriza eficiência):

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

🛠️ Descrição das ferramentas MCP

1. crawl_wechat_article

Ferramenta de extração de artigo único

Parâmetros:

  • url (obrigatório): link do artigo do WeChat
  • outputFormat (opcional): formato de saída (markdown/json/html, padrão: markdown)
  • strategy (opcional): estratégia de extração (basic/conservative/fast, padrão: basic)
  • includeImages (opcional): se inclui imagens (padrão: true)

Exemplo:

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

2. crawl_wechat_batch

Ferramenta de extração em lote de artigos

Parâmetros:

  • urls (obrigatório): array de links de artigos
  • outputFormat (opcional): formato de saída
  • strategy (opcional): estratégia de extração
  • maxConcurrent (opcional): número máximo de concorrência (padrão: 3)

Exemplo:

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

3. crawl_get_status

Ferramenta de consulta de status

Parâmetros:

  • sessionId (opcional): ID da sessão; se não fornecido, retorna o status de todas as sessões

⚙️ Explicação das estratégias de extração

EstratégiaVelocidadeEstabilidadeCenário de uso
fast⚡ Mais rápido🔸 NormalRede boa, página simples
basic🚀 Médio⭐ EquilibradoNa maioria dos casos (recomendado)
conservative🐌 Mais lento💎 Mais estávelRede instável, páginas complexas

📦 Estrutura do projeto

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/                 # 测试文件

🧪 Desenvolvimento e testes

Instalar dependências

pnpm install

Compilar o projeto

pnpm build

Executar testes

pnpm test

Desenvolvimento local

pnpm dev

📊 Cobertura de testes

  • ✅ 25 testes todos aprovados
  • 🧪 Testes unitários: verificação de funcionalidade dos componentes principais
  • 🔗 Testes de integração: testes de integridade do protocolo MCP
  • 📋 Testes de configuração: verificação de todos os arquivos de configuração

🤝 Guia de contribuição

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

📄 Licença

Este projeto é licenciado sob a licença MIT - consulte o arquivo LICENSE para obter detalhes.

🔗 Links relacionados

📞 Suporte

Se você encontrar algum problema ou tiver sugestões, por favor:


⭐ Se este projeto foi útil para você, dê-nos uma estrela!

Feito com ❤️ por wutongci