Contributing
Thank you for your interest in contributing to encoding-music-mcp!
Getting Started
- Fork the repository on GitHub
- Clone your fork locally:
- Install dependencies:
Development Workflow
Making Changes
-
Create a branch for your changes:
-
Make your changes following the Project Structure
-
Format your code:
-
Run tests:
-
Commit your changes:
Code Style
We use Ruff for code formatting and linting:
Testing
All changes must include tests. See Testing for details.
# Run all tests
uv run pytest
# Run specific test file
uv run pytest tests/test_intervals.py
# Run with coverage
uv run pytest --cov=src/encoding_music_mcp
Submitting Changes
-
Push to your fork:
-
Create a Pull Request on GitHub
-
Wait for review - maintainers will review your PR
Types of Contributions
Bug Fixes
- Report bugs via GitHub Issues
- Include reproduction steps
- Fix the bug and add a test case
New Tools
When adding new analysis tools:
- Create the tool in
src/encoding_music_mcp/tools/ - Register it in
tools/registry.py - Add comprehensive tests in
tests/ - Document the tool in
docs/tools/
Documentation
- Fix typos and improve clarity
- Add examples and use cases
- Update outdated information
MEI Files
To add new MEI files:
- Ensure files follow MEI standards
- Include complete metadata headers
- Update discovery tool if needed
- Add documentation
Development Environment
Required Tools
- Python 3.11 or higher
- uv package manager
- Git for version control
IDE Setup
We recommend:
- VS Code with Python extension
- PyCharm
- Any editor with Python support
Running the Server Locally
Questions?
- Open an issue
- Check existing issues and PRs
- Read the development docs
Code of Conduct
Be respectful and constructive. This is an academic project aimed at supporting music research and education.