MissionControlMCP / CONTRIBUTING.md
AlBaraa63's picture
Upload 44 files
32dc112 verified
# 🀝 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.