Skip to main content
Glama

Job URL Analyzer MCP Server

by subslink326
CONTRIBUTING.md4.52 kB
# Contributing to Job URL Analyzer MCP Server We love contributions! This document provides guidelines for contributing to the Job URL Analyzer MCP Server. ## 🚀 Quick Start 1. **Fork the repository** ```bash git clone https://github.com/subslink326/job-url-analyzer-mcp.git cd job-url-analyzer-mcp ``` 2. **Set up development environment** ```bash make setup-dev ``` 3. **Create a feature branch** ```bash git checkout -b feature/amazing-feature ``` 4. **Make your changes and test** ```bash make test make lint ``` 5. **Commit and push** ```bash git commit -m "Add amazing feature" git push origin feature/amazing-feature ``` 6. **Open a Pull Request** ## 📋 Development Guidelines ### Code Style - Follow PEP 8 style guidelines - Use type hints for all functions - Add docstrings for all public functions - Keep functions focused and single-purpose - Use descriptive variable names ### Testing - Write tests for all new functionality - Maintain 80%+ test coverage - Include both positive and negative test cases - Use pytest fixtures for common test data - Mock external dependencies ### Documentation - Update README.md for new features - Add inline comments for complex logic - Update API documentation - Include examples in docstrings ### Commits - Use conventional commit messages - Keep commits atomic and focused - Include tests in the same commit as the feature ## 🏗️ Architecture ### Adding New Enrichment Providers 1. Create a new provider class inheriting from `EnrichmentProvider`: ```python class MyProvider(EnrichmentProvider): def __init__(self): super().__init__("my_provider", enabled=settings.ENABLE_MY_PROVIDER) def can_enrich(self, company_data: Dict[str, Any]) -> bool: # Check if provider can enrich this data return bool(company_data.get("name")) async def enrich(self, company_data: Dict[str, Any]) -> EnrichmentResult: # Implement enrichment logic pass ``` 2. Add the provider to `EnrichmentManager` 3. Add configuration settings 4. Write comprehensive tests ### Adding New Content Extractors 1. Extend the `ContentExtractor` class 2. Add extraction methods following the `_extract_*` pattern 3. Update the main `extract_info` method 4. Add tests with mock HTML content ## 🧪 Testing ### Running Tests ```bash # All tests make test # With coverage make test-cov # Specific test file poetry run pytest tests/test_extractor.py # With markers poetry run pytest -m "not slow" ``` ### Test Structure - Unit tests: Test individual components - Integration tests: Test component interactions - End-to-end tests: Test full workflows ## 📦 Release Process 1. Update version in `pyproject.toml` 2. Update `CHANGELOG.md` 3. Create a pull request 4. After merge, create a release tag: ```bash git tag v1.0.0 git push origin v1.0.0 ``` 5. GitHub Actions will build and publish automatically ## 🐛 Bug Reports When reporting bugs, please include: - Python version - OS and architecture - Steps to reproduce - Expected vs actual behavior - Relevant logs or error messages - Minimal reproduction example ## 💡 Feature Requests For feature requests: - Describe the use case - Explain the expected behavior - Consider backward compatibility - Propose implementation approach ## 🔒 Security For security issues: - DO NOT open a public issue - Email security concerns privately - Include detailed information - Allow time for response before disclosure ## 📝 Code Review Process 1. All changes require pull request review 2. At least one approving review required 3. All CI checks must pass 4. No merge conflicts 5. Up-to-date with main branch ### Review Checklist - [ ] Code follows style guidelines - [ ] Tests are included and passing - [ ] Documentation is updated - [ ] No security vulnerabilities - [ ] Performance impact considered - [ ] Backward compatibility maintained ## 🤝 Community - Be respectful and inclusive - Help others learn and grow - Share knowledge and best practices - Provide constructive feedback - Celebrate contributions ## 📚 Resources - [FastAPI Documentation](https://fastapi.tiangolo.com/) - [SQLAlchemy Documentation](https://docs.sqlalchemy.org/) - [Pydantic Documentation](https://docs.pydantic.dev/) - [Pytest Documentation](https://docs.pytest.org/) - [Poetry Documentation](https://python-poetry.org/docs/) Thank you for contributing! 🎉

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/subslink326/job-url-analyzer-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server