数据集抓取服务器

一个集成了MCP协议的网页抓取和数据集创建系统,支持从GitHub仓库、Arxiv论文和自定义文件中提取数据,并存储为Parquet和JSONL格式的高质量数据集。

  • by deastrobooking
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 deastrobooking/Donatello_MCP

使用说明

数据集抓取器MCP服务器

一个全面的网络抓取和数据集创建系统,集成了MCP(模型上下文协议),用于LLM。该服务器提供工具来抓取GitHub存储库、Arxiv论文,并将自定义文件(PDF、图像)处理成以Parquet和JSONL格式存储的高质量数据集。

特性

数据源

  • GitHub Scraper:从GitHub存储库中提取代码、文档和元数据
  • Arxiv刮板:使用元数据提取搜索和下载学术论文
  • 自定义文件处理:使用OCR支持解析PDF和图像

处理管线

  • LLM验证:使用您自己的LLM API进行可选的数据质量验证
  • 数据清理:自动数据规范化和清理
  • 数据扩展:使用LLM添加上下文信息
  • 多格式支持:将数据集保存在Parquet(高效)和JSONL(人类可读)中

审查制度

  • 人工审核:在最终确定之前,保存数据集以供手动审查
  • 审批工作流程:审查后批准并最终确定数据集
  • 质量控制:跟踪验证状态和数据质量指标

安装

依赖项已通过Replit的包管理器安装:

  • 网页抓取: beautifulsoup4, requests, aiohttp
  • GitHub/Arxiv: PyGithub, arxiv
  • PDF/图像解析: pdfplumber, PyPDF2, pytesseract, pdf2image, Pillow
  • 数据存储: pandas, pyarrow

配置

所需的环境变量

  1. 会话_秘密:MCP服务器身份验证所需

    SESSION_SECRET=your-secure-token-here
    
  2. GITHUB令牌 (可选):对于更高的GitHub API速率限制

    GITHUB_TOKEN=your-github-token
    
  3. LLM_API_KEY(LLM_API_密钥) (可选):用于基于LLM的数据验证

    LLM_API_KEY=your-llm-api-key
    LLM_API_URL=https://api.openai.com/v1/chat/completions
    

MCP工具

1.scrape_github_repository

废弃GitHub存储库并从代码文件创建数据集。

{
  "repo_name": "owner/repo",
  "verify_with_llm": false,  # Optional: use LLM verification
  "save_for_review": true    # Save for manual review
}

2.搜索_接收_个人

搜索并抓取Arxiv论文到数据集中。

{
  "query": "machine learning",
  "max_results": 10,
  "download_pdfs": false,    # Download and parse PDFs
  "verify_with_llm": false,
  "save_for_review": true
}

3.流程定制文件

将PDF或图像文件处理成数据集。

{
  "file_paths": ["./data/paper1.pdf", "./data/diagram.png"],
  "dataset_name": "my_dataset",
  "verify_with_llm": false,
  "save_for_review": true
}

4.列表结束视图

列出所有等待审查和批准的数据集。

5.批准_数据集

批准数据集并保存到最终存储。

{
  "review_file": "./data/review/dataset_review.json",
  "save_format": "both"  # "parquet", "jsonl", or "both"
}

6.获取数据_信息

获取数据集的统计数据和信息。

{
  "dataset_path": "./data/parquet/my_dataset.parquet"
}

数据存储

目录结构

data/
├── parquet/          # Compressed Parquet datasets (primary storage)
├── jsonl/            # Human-readable JSONL datasets (debugging)
├── review/           # Datasets pending human review
└── pdfs/             # Downloaded PDF files from Arxiv

数据格式

镶木地板 (初级-建议用于培训):

  • 列式存储格式
  • 高效压缩(zstd)
  • 使用Pandas/Spark快速阅读
  • 架构已强制执行
  • 被HuggingFace数据集使用

Jsonl (次要-建议检查):

  • 人类可读
  • 逐行格式
  • 易于grep/filter
  • 适合调试

使用示例

示例1:废弃Python存储库

# Via MCP tool call
result = await scrape_github_repository(
    repo_name="pallets/flask",
    verify_with_llm=False,
    save_for_review=True
)

示例2:创建ML纸张数据集

# Search Arxiv and create dataset
result = await search_arxiv_papers(
    query="machine learning neural networks",
    max_results=20,
    download_pdfs=True,
    save_for_review=True
)

# Review and approve
pending = await list_pending_reviews()
await approve_dataset(
    review_file=pending[0]["file_path"],
    save_format="both"
)

示例3:过程研究PDF

# Process custom PDFs
result = await process_custom_files(
    file_paths=[
        "./research/paper1.pdf",
        "./research/paper2.pdf"
    ],
    dataset_name="research_papers",
    verify_with_llm=True
)

API终点

  • MCP服务器: http://localhost:8000/mcp/
  • 健康检查: http://localhost:8000/health
  • 欢迎页面: http://localhost:8000/

发展

在本地运行服务器:

uvicorn app:app --host 0.0.0.0 --port 8000 --reload

最佳实践

  1. 使用审核系统:在最终确定数据集之前,始终审查数据
  2. 训练用槌球:使用拼花格式进行实际模型训练
  3. JSONL用于调试:保留JSONL文件以便快速检查
  4. LLM验证:为高质量数据集启用(需要API密钥)
  5. 速率限制:使用GITHUB_TOKEN获得更高的API限值
  6. 批处理:以可管理的批次处理数据

建筑

User/LLM Client
    ↓
MCP Server (FastMCP)
    ↓
Data Pipeline
    ↓
┌─────────────┬──────────────┬────────────┐
│   Scrapers  │   Parsers    │ LLM Verify │
│  (GitHub,   │ (PDF, Image) │  (Optional)│
│   Arxiv)    │              │            │
└─────────────┴──────────────┴────────────┘
    ↓
Storage (Parquet + JSONL)
    ↓
Review System → Approval → Final Datasets

许可证

详见项目许可证。