数据集抓取器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
配置
所需的环境变量
- 会话_秘密:MCP服务器身份验证所需
SESSION_SECRET=your-secure-token-here- GITHUB令牌 (可选):对于更高的GitHub API速率限制
GITHUB_TOKEN=your-github-token- LLM_API_KEY(LLM_API_密钥) (可选):用于基于LLM的数据验证
LLM_API_KEY=your-llm-api-key
LLM_API_URL=https://api.openai.com/v1/chat/completionsMCP工具
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最佳实践
- 使用审核系统:在最终确定数据集之前,始终审查数据
- 训练用槌球:使用拼花格式进行实际模型训练
- JSONL用于调试:保留JSONL文件以便快速检查
- LLM验证:为高质量数据集启用(需要API密钥)
- 速率限制:使用GITHUB_TOKEN获得更高的API限值
- 批处理:以可管理的批次处理数据
建筑
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许可证
详见项目许可证。
