Spaces:
Sleeping
Sleeping
| # π€ Contributing to MissionControlMCP | |
| Thank you for considering contributing to MissionControlMCP! This document provides guidelines for contributing to the project. | |
| --- | |
| ## π Table of Contents | |
| - [Code of Conduct](#code-of-conduct) | |
| - [Getting Started](#getting-started) | |
| - [Development Setup](#development-setup) | |
| - [How to Contribute](#how-to-contribute) | |
| - [Coding Standards](#coding-standards) | |
| - [Testing Guidelines](#testing-guidelines) | |
| - [Pull Request Process](#pull-request-process) | |
| - [Reporting Bugs](#reporting-bugs) | |
| - [Suggesting Features](#suggesting-features) | |
| --- | |
| ## π Code of Conduct | |
| This project adheres to a code of conduct. By participating, you are expected to uphold this code: | |
| - **Be Respectful:** Treat everyone with respect and consideration | |
| - **Be Constructive:** Provide helpful feedback and suggestions | |
| - **Be Collaborative:** Work together towards common goals | |
| - **Be Professional:** Maintain professionalism in all interactions | |
| --- | |
| ## π Getting Started | |
| ### Prerequisites | |
| - Python 3.11 or higher | |
| - Git | |
| - Basic knowledge of Python and MCP protocol | |
| ### Fork and Clone | |
| 1. Fork the repository on GitHub | |
| 2. Clone your fork locally: | |
| ```bash | |
| git clone https://github.com/YOUR_USERNAME/CleanEye-Hackathon.git | |
| cd CleanEye-Hackathon/mission_control_mcp | |
| ``` | |
| 3. Add upstream remote: | |
| ```bash | |
| git remote add upstream https://github.com/AlBaraa-1/CleanEye-Hackathon.git | |
| ``` | |
| --- | |
| ## π» Development Setup | |
| ### 1. Create Virtual Environment | |
| ```bash | |
| python -m venv venv | |
| # Windows | |
| venv\Scripts\activate | |
| # Linux/Mac | |
| source venv/bin/activate | |
| ``` | |
| ### 2. Install Dependencies | |
| ```bash | |
| pip install -r requirements.txt | |
| ``` | |
| ### 3. Install Development Dependencies | |
| ```bash | |
| pip install pytest black flake8 mypy | |
| ``` | |
| ### 4. Run Tests | |
| ```bash | |
| python demo.py | |
| ``` | |
| --- | |
| ## π οΈ How to Contribute | |
| ### Types of Contributions | |
| We welcome: | |
| 1. **Bug Fixes** - Fix issues in existing tools | |
| 2. **New Tools** - Add new MCP tools | |
| 3. **Documentation** - Improve docs and examples | |
| 4. **Tests** - Add or improve test coverage | |
| 5. **Performance** - Optimize existing code | |
| 6. **Examples** - Add real-world use cases | |
| --- | |
| ## π Coding Standards | |
| ### Python Style Guide | |
| We follow [PEP 8](https://pep8.org/) with these specifics: | |
| **Formatting:** | |
| ```python | |
| # Good | |
| def function_name(param1: str, param2: int) -> Dict[str, Any]: | |
| """ | |
| Function description. | |
| Args: | |
| param1: Parameter description | |
| param2: Parameter description | |
| Returns: | |
| Dictionary with results | |
| """ | |
| result = {"key": "value"} | |
| return result | |
| # Bad | |
| def functionName(param1,param2): | |
| result={"key":"value"} | |
| return result | |
| ``` | |
| **Use Black for Formatting:** | |
| ```bash | |
| black tools/your_tool.py | |
| ``` | |
| **Type Hints:** | |
| ```python | |
| from typing import Dict, Any, List, Optional | |
| def process_data(data: List[str], limit: Optional[int] = None) -> Dict[str, Any]: | |
| ... | |
| ``` | |
| **Docstrings:** | |
| ```python | |
| def my_function(param: str) -> Dict[str, Any]: | |
| """ | |
| Brief description (one line). | |
| Longer description if needed explaining the function's | |
| purpose, behavior, and any important details. | |
| Args: | |
| param: Description of parameter | |
| Returns: | |
| Description of return value | |
| Raises: | |
| ValueError: When invalid input | |
| FileNotFoundError: When file not found | |
| Example: | |
| >>> result = my_function("example") | |
| >>> print(result['key']) | |
| 'value' | |
| """ | |
| ... | |
| ``` | |
| --- | |
| ## β Testing Guidelines | |
| ### Writing Tests | |
| All new tools must include tests: | |
| **1. Create Test File:** | |
| ```python | |
| # tests/test_your_tool.py | |
| import pytest | |
| from tools.your_tool import your_function | |
| def test_your_function_success(): | |
| """Test successful operation""" | |
| result = your_function("valid_input") | |
| assert result['success'] == True | |
| assert 'data' in result | |
| def test_your_function_error(): | |
| """Test error handling""" | |
| with pytest.raises(ValueError): | |
| your_function("invalid_input") | |
| ``` | |
| **2. Run Tests:** | |
| ```bash | |
| pytest tests/test_your_tool.py -v | |
| ``` | |
| ### Test Coverage | |
| Aim for 90%+ coverage: | |
| ```bash | |
| pytest --cov=tools tests/ | |
| ``` | |
| ### Test Categories | |
| - **Unit Tests** - Test individual functions | |
| - **Integration Tests** - Test tool combinations | |
| - **MCP Tests** - Test MCP protocol integration | |
| --- | |
| ## π Pull Request Process | |
| ### 1. Create Feature Branch | |
| ```bash | |
| git checkout -b feature/your-feature-name | |
| # or | |
| git checkout -b fix/bug-description | |
| ``` | |
| ### 2. Make Changes | |
| - Write code following style guide | |
| - Add tests for new functionality | |
| - Update documentation | |
| - Run tests locally | |
| ### 3. Commit Changes | |
| Use clear commit messages: | |
| ```bash | |
| git add . | |
| git commit -m "Add: New email sentiment analysis tool" | |
| # or | |
| git commit -m "Fix: PDF reader handling encrypted files" | |
| # or | |
| git commit -m "Docs: Update API reference for web fetcher" | |
| ``` | |
| **Commit Message Format:** | |
| - `Add:` - New features | |
| - `Fix:` - Bug fixes | |
| - `Docs:` - Documentation changes | |
| - `Test:` - Test additions/changes | |
| - `Refactor:` - Code refactoring | |
| - `Perf:` - Performance improvements | |
| ### 4. Push to Fork | |
| ```bash | |
| git push origin feature/your-feature-name | |
| ``` | |
| ### 5. Create Pull Request | |
| 1. Go to GitHub repository | |
| 2. Click "New Pull Request" | |
| 3. Select your branch | |
| 4. Fill in PR template: | |
| ```markdown | |
| ## Description | |
| Brief description of changes | |
| ## Type of Change | |
| - [ ] Bug fix | |
| - [ ] New feature | |
| - [ ] Documentation update | |
| - [ ] Performance improvement | |
| ## Testing | |
| - [ ] All tests pass | |
| - [ ] New tests added | |
| - [ ] Manual testing completed | |
| ## Checklist | |
| - [ ] Code follows style guide | |
| - [ ] Documentation updated | |
| - [ ] Tests added/updated | |
| - [ ] No breaking changes | |
| ``` | |
| ### 6. Code Review | |
| - Address reviewer feedback | |
| - Make requested changes | |
| - Push updates to same branch | |
| ### 7. Merge | |
| Once approved, maintainers will merge your PR. | |
| --- | |
| ## π Reporting Bugs | |
| ### Before Submitting | |
| 1. Check existing issues | |
| 2. Verify bug in latest version | |
| 3. Gather reproduction steps | |
| ### Bug Report Template | |
| ```markdown | |
| **Bug Description** | |
| Clear description of the bug | |
| **To Reproduce** | |
| Steps to reproduce: | |
| 1. Run command '...' | |
| 2. Call function '...' | |
| 3. See error | |
| **Expected Behavior** | |
| What should happen | |
| **Actual Behavior** | |
| What actually happens | |
| **Environment** | |
| - OS: Windows 11 | |
| - Python: 3.12 | |
| - MCP Version: 1.0.0 | |
| **Error Messages** | |
| ``` | |
| Paste error messages here | |
| ``` | |
| **Additional Context** | |
| Any other relevant information | |
| ``` | |
| --- | |
| ## π‘ Suggesting Features | |
| ### Feature Request Template | |
| ```markdown | |
| **Feature Description** | |
| What feature would you like to see? | |
| **Use Case** | |
| Why is this feature needed? How will it be used? | |
| **Proposed Solution** | |
| How should this feature work? | |
| **Alternatives Considered** | |
| What other approaches did you consider? | |
| **Additional Context** | |
| Any mockups, examples, or references | |
| ``` | |
| --- | |
| ## ποΈ Adding New Tools | |
| ### Tool Structure | |
| ```python | |
| # tools/my_new_tool.py | |
| """ | |
| Tool Name - Brief description | |
| """ | |
| import logging | |
| from typing import Dict, Any | |
| logger = logging.getLogger(__name__) | |
| def my_tool_function(param: str) -> Dict[str, Any]: | |
| """ | |
| Tool description. | |
| Args: | |
| param: Parameter description | |
| Returns: | |
| Dictionary with results | |
| """ | |
| try: | |
| # Implementation | |
| result = process_data(param) | |
| return { | |
| "success": True, | |
| "data": result, | |
| "metadata": {} | |
| } | |
| except Exception as e: | |
| logger.error(f"Error in my_tool: {e}") | |
| raise | |
| ``` | |
| ### Register Tool in MCP Server | |
| ```python | |
| # mcp_server.py | |
| from tools.my_new_tool import my_tool_function | |
| # In tool registration section: | |
| server.register_tool( | |
| name="my_tool", | |
| description="What this tool does", | |
| input_schema={ | |
| "type": "object", | |
| "properties": { | |
| "param": {"type": "string", "description": "Param description"} | |
| }, | |
| "required": ["param"] | |
| } | |
| ) | |
| ``` | |
| ### Add Tests | |
| ```python | |
| # tests/test_my_tool.py | |
| def test_my_tool(): | |
| result = my_tool_function("test_input") | |
| assert result['success'] == True | |
| ``` | |
| ### Update Documentation | |
| 1. Add to README.md tool list | |
| 2. Add to API.md reference | |
| 3. Add to EXAMPLES.md with use case | |
| 4. Add sample files to examples/ | |
| --- | |
| ## π Documentation Guidelines | |
| ### What to Document | |
| - **README.md** - Overview, setup, quick start | |
| - **API.md** - Complete function signatures | |
| - **EXAMPLES.md** - Real-world use cases | |
| - **TESTING.md** - How to test | |
| - **Code Comments** - Complex logic explanation | |
| ### Documentation Style | |
| ```python | |
| # Good - Clear and concise | |
| def calculate_total(items: List[float]) -> float: | |
| """Calculate the sum of item prices.""" | |
| return sum(items) | |
| # Bad - Over-documented | |
| def calculate_total(items: List[float]) -> float: | |
| """ | |
| This function takes a list of items and calculates the total | |
| by iterating through each item and adding them together using | |
| the built-in sum function and then returns the result. | |
| """ | |
| return sum(items) | |
| ``` | |
| --- | |
| ## π― Development Workflow | |
| ### Typical Workflow | |
| 1. **Check Issues** - Find or create issue | |
| 2. **Discuss** - Comment on issue before starting | |
| 3. **Branch** - Create feature branch | |
| 4. **Develop** - Write code + tests | |
| 5. **Test** - Run all tests locally | |
| 6. **Document** - Update docs | |
| 7. **Commit** - Clear commit messages | |
| 8. **Push** - Push to your fork | |
| 9. **PR** - Create pull request | |
| 10. **Review** - Address feedback | |
| 11. **Merge** - Maintainer merges | |
| ### Stay in Sync | |
| ```bash | |
| # Pull latest changes from upstream | |
| git fetch upstream | |
| git checkout main | |
| git merge upstream/main | |
| git push origin main | |
| ``` | |
| --- | |
| ## π Recognition | |
| Contributors will be: | |
| - Listed in README.md contributors section | |
| - Mentioned in release notes | |
| - Credited in commit history | |
| --- | |
| ## π Getting Help | |
| - **Questions:** Open a GitHub Discussion | |
| - **Chat:** Join our Discord (link in README) | |
| - **Issues:** GitHub Issues for bugs/features | |
| --- | |
| ## π License | |
| By contributing, you agree that your contributions will be licensed under the MIT License. | |
| --- | |
| **Thank you for contributing to MissionControlMCP!** π | |
| Every contribution, no matter how small, helps make this project better for everyone. | |