Thank you for your interest in contributing to OpenROAD MCP! This document provides guidelines and instructions for contributing to the project.
- Code of Conduct
- Getting Started
- Development Workflow
- Code Standards
- Testing
- Submitting Changes
- MCP-Specific Guidelines
We are committed to providing a welcoming and inclusive environment. Please be respectful and professional in all interactions.
- Python 3.13 or higher
- uv package manager
- OpenROAD installed on your system
- Git for version control
-
Fork the repository on GitHub
-
Clone your fork locally:
git clone https://github.com/your-username/openroad-mcp.git cd openroad-mcp -
Set up the development environment:
uv venv make sync
-
Install pre-commit hooks:
uv run pre-commit install
-
Create a new branch from
main:git checkout -b feature/your-feature-name
-
Make your changes following our Code Standards
-
Write tests for your changes
-
Run the test suite:
make test -
Format and lint your code:
make format make check
-
Commit your changes with clear, descriptive commit messages
- Unit tests in
tests/for individual components - Integration tests in
tests/integration/for full workflows - Interactive PTY tests in
tests/interactive/ - Performance tests in
tests/performance/
make test # Run core tests (recommended)
make test-interactive # Run PTY tests in Docker
make test-integration # Run integration tests
make test-performance # Run performance benchmarks
make test-coverage # Generate coverage reports
make test-all # Run all tests- Use pytest with async support
- Write clear, focused test cases
- Include both positive and negative test cases
- Mock external dependencies when appropriate
- Aim for high code coverage
-
Ensure all tests pass and code is formatted:
make test make check -
Update documentation if needed
-
Push your branch to your fork:
git push origin feature/your-feature-name
-
Create a Pull Request on GitHub:
- Provide a clear title and description
- Reference any related issues or tickets
- Include test results if applicable
- Request review from maintainers
- Keep PRs focused on a single feature or fix
- Include tests for new functionality
- Update relevant documentation
- Ensure CI checks pass
- Respond to review feedback promptly
Write clear, descriptive commit messages:
Add timing checkpoint functionality
- Implement checkpoint creation with delta compression
- Add restore capability for timing data
- Include tests for checkpoint/restore cycle
Fixes #123
All MCP tools should:
- Inherit from appropriate base classes
- Include comprehensive type hints
- Return structured results
- Handle errors gracefully
- Include clear docstrings
Use the MCP Inspector for manual testing:
make inspectThis launches the MCP Inspector UI for interactive testing of tools.
By contributing to OpenROAD MCP, you agree that your contributions will be licensed under the project's license (TBD).
Thank you for contributing to OpenROAD MCP! Your efforts help make this project better for everyone.