作业URL分析器MCP服务器
一个全面的基于FastAPI的微服务,用于分析作业URL并提取详细的公司信息。该服务使用现代异步Python构建,可以抓取招聘信息和公司网站,通过外部提供商的数据丰富来构建丰富的公司简介。
✨ 特性
- 🕷️ 智能网络爬行:尊重robots.txt的爬行合规性和速率限制
- 🧠 内容提取:使用Selectolax进行高级HTML解析,以实现快速、准确的数据提取
- 🔗 数据丰富:可插入的丰富服务提供商(Crunchbase、LinkedIn、自定义API)
- 📊 质量评分:提取数据的完整性和置信度指标
- 📝 Markdown报告:漂亮、全面的公司分析报告
- 🔍 可观测性:OpenTetry跟踪、Prometheus指标、结构化日志记录
- 🚀 生产就绪:Docker、Kubernetes、健康检查、优雅关机
- 🧪 测试良好:全面的测试套件,覆盖率超过80%
🏗️ 建筑
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ FastAPI App │───▶│ Orchestrator │───▶│ Web Crawler │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ Content Extract │ │ Database │
└─────────────────┘ │ (SQLAlchemy) │
│ └─────────────────┘
▼
┌─────────────────┐ ┌─────────────────┐
│ Enrichment │───▶│ Providers │
│ Manager │ │ (Crunchbase,etc)│
└─────────────────┘ └─────────────────┘
│
▼
┌─────────────────┐
│ Report Generator│
└─────────────────┘ 🚀 快速开始
先决条件
- Python 3.11+
- 诗歌(用于依赖管理)
- Docker和Docker Compose(可选)
地方发展
- 克隆和设置
git clone https://github.com/subslink326/job-url-analyzer-mcp.git
cd job-url-analyzer-mcp
poetry install- 环境配置 *(可选)*
# The application has sensible defaults and can run without environment configuration
# To customize settings, create a .env file with your configuration
# See src/job_url_analyzer/config.py for available settings- 数据库设置
poetry run alembic upgrade head- 运行开发服务器
poetry run python -m job_url_analyzer.main
# Server starts at http://localhost:8000Docker部署
- 发展
docker-compose up --build- 生产
docker-compose -f docker-compose.prod.yml up -d📡 API使用
分析作业URL
curl -X POST "http://localhost:8000/analyze" \
-H "Content-Type: application/json" \
-d '{
"url": "https://company.com/jobs/software-engineer",
"include_enrichment": true,
"force_refresh": false
}'响应示例
{
"profile_id": "123e4567-e89b-12d3-a456-426614174000",
"source_url": "https://company.com/jobs/software-engineer",
"company_profile": {
"name": "TechCorp",
"description": "Leading AI company...",
"industry": "Technology",
"employee_count": 150,
"funding_stage": "Series B",
"total_funding": 25.0,
"headquarters": "San Francisco, CA",
"tech_stack": ["Python", "React", "AWS"],
"benefits": ["Health insurance", "Remote work"]
},
"completeness_score": 0.85,
"confidence_score": 0.90,
"processing_time_ms": 3450,
"enrichment_sources": ["crunchbase"],
"markdown_report": "# TechCorp - Company Analysis Report\n..."
}⚙️ 配置
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
DEBUG | 启用调试模式 | false |
HOST | 服务器主机 | 0.0.0.0 |
PORT | 服务器端口 | 8000 |
DATABASE_URL | 数据库连接字符串 | sqlite+aiosqlite:///./data/job_analyzer.db |
MAX_CONCURRENT_REQUESTS | 最大并发HTTP请求数 | 10 |
REQUEST_TIMEOUT | HTTP请求超时(秒) | 30 |
CRAWL_DELAY | 请求之间的延迟(秒) | 1.0 |
RESPECT_ROBOTS_TXT | 尊重robots.txt | true |
ENABLE_CRUNCHBASE | 启用Crunchbase富集 | false |
CRUNCHBASE_API_KEY | Crunchbase API密钥 | "" |
DATA_RETENTION_DAYS | 数据保留期 | 90 |
📊 监控
指标端点
- 健康检查:
GET /health - 普罗米修斯指标:
GET /metrics
主要绩效指标
job_analyzer_requests_total-API请求总数job_analyzer_analysis_success_total-成功的分析job_analyzer_completeness_score-数据完整性分布job_analyzer_crawl_requests_total-按状态抓取请求job_analyzer_enrichment_success_total-提供商的扩展成功
🧪 测试
运行测试
# Unit tests
poetry run pytest
# With coverage
poetry run pytest --cov=job_url_analyzer --cov-report=html
# Integration tests only
poetry run pytest -m integration
# Skip slow tests
poetry run pytest -m "not slow"🚀 部署
Kubernetes
# Apply manifests
kubectl apply -f kubernetes/
# Check deployment
kubectl get pods -l app=job-analyzer
kubectl logs -f deployment/job-analyzer生产检查表
- \[\]已配置环境变量
- \[\]已应用数据库迁移
- \[\]已配置SSL证书
- \[\]设置监控仪表板
- \[\]已配置日志聚合
- \[\]已实施备份策略
- \[\]已配置速率限制
- \[\]已设置资源限制
🔧 发展
项目结构
job-url-analyzer/
├── src/job_url_analyzer/ # Main application code
│ ├── enricher/ # Enrichment providers
│ ├── main.py # FastAPI application
│ ├── config.py # Configuration
│ ├── models.py # Pydantic models
│ ├── database.py # Database models
│ ├── crawler.py # Web crawler
│ ├── extractor.py # Content extraction
│ ├── orchestrator.py # Main orchestrator
│ └── report_generator.py # Report generation
├── tests/ # Test suite
├── alembic/ # Database migrations
├── kubernetes/ # K8s manifests
├── monitoring/ # Monitoring configs
├── docker-compose.yml # Development setup
├── docker-compose.prod.yml # Production setup
└── Dockerfile # Container definition代码质量
该项目使用:
- 黑色 用于代码格式化
- 拉夫 对于linting
- MyPy 用于类型检查
- 预承诺 质量闸门挂钩
# Setup pre-commit
poetry run pre-commit install
# Run quality checks
poetry run black .
poetry run ruff check .
poetry run mypy src/📝 最近更改
依赖关系更新
- 固定的:替换不存在
aiohttp-robotparser依赖与robotexclusionrulesparser用于robots.txt解析 - 改进的:安装过程现在可以开箱即用,无需
.env文件配置
🤝 贡献
- 分叉存储库
- 创建要素分支(
git checkout -b feature/amazing-feature) - 进行更改
- 添加新功能的测试
- 确保所有测试通过(
poetry run pytest) - 提交您的更改(
git commit -m 'Add amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
📄 许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
🆘 支持
- 文档:此README和内联代码注释
- 问题:GitHub错误报告和功能请求问题
- 讨论:GitHub问题和社区讨论
______________________________________________________________________
内置于❤️ 使用FastAPI、SQLAlchemy和现代Python工具。
