Thank you for your interest in contributing to MCP Atlassian! This document provides guidelines and instructions for contributing to this project.
-
Make sure you have Python 3.10+ installed
-
Install uv
-
Fork the repository
-
Clone your fork:
git clone https://github.com/YOUR-USERNAME/mcp-atlassian.git -
Add the upstream remote:
git remote add upstream https://github.com/SharkyND/mcp-atlassian.git -
Install dependencies:
uv sync uv sync --frozen --all-extras --dev
-
Activate the virtual environment:
macOS and Linux:
source .venv/bin/activateWindows:
.venv\Scripts\activate.ps1
-
Set up pre-commit hooks:
pre-commit install
-
Set up environment variables (copy from .env.example):
cp .env.example .env
-
Clone your fork:
git clone https://github.com/YOUR-USERNAME/mcp-atlassian.git -
Add the upstream remote:
git remote add upstream https://github.com/SharkyND/mcp-atlassian.git -
Open the project with VSCode and open with devcontainer
-
Add this bit of config to your
.vscode/settings.json:{ "python.defaultInterpreterPath": "${workspaceFolder}/.venv/bin/python", "[python]": { "editor.defaultFormatter": "charliermarsh.ruff", "editor.formatOnSave": true } }
-
Create a feature or fix branch:
git checkout -b feature/your-feature-name # or git checkout -b fix/issue-description -
Make your changes
-
Ensure tests pass:
uv run pytest # With coverage uv run pytest --cov=mcp_atlassian -
Run code quality checks using pre-commit:
pre-commit run --all-files
-
Commit your changes with clear, concise commit messages referencing issues when applicable
-
Submit a pull request to the main branch
-
Run
pre-commit run --all-filesbefore committing -
Code quality tools (managed by pre-commit):
rufffor formatting and linting (88 char line limit)pyrightfor type checking (preferred over mypy)prettierfor YAML/JSON formatting- Additional checks for trailing whitespace, file endings, YAML/TOML validity
-
Follow type annotation patterns:
type[T]for class types- Union types with pipe syntax:
str | None - Standard collection types with subscripts:
list[str],dict[str, Any]
-
Add docstrings to all public modules, functions, classes, and methods using Google-style format:
```python def function_name(param1: str, param2: int) -> bool: """Summary of function purpose. More detailed description if needed. Args: param1: Description of param1 param2: Description of param2 Returns: Description of return value Raises: ValueError: When and why this exception is raised """ ```
- Fill out the PR template with a description of your changes
- Ensure all CI checks pass
- Request review from maintainers
- Address review feedback if requested
Releases follow semantic versioning:
- MAJOR version for incompatible API changes
- MINOR version for backwards-compatible functionality additions
- PATCH version for backwards-compatible bug fixes
Thank you for contributing to MCP Atlassian!