Thank you for considering contributing to the MCP Protocol Validator! This document provides guidelines and instructions for contributing to this project.
Please be respectful and considerate of others when contributing to this project. Any form of harassment or disrespectful behavior will not be tolerated.
If you find a bug or have a suggestion for improvement:
- Check if the issue already exists in the GitHub Issues
- If not, create a new issue using the appropriate template
- Provide as much detail as possible, including steps to reproduce, expected behavior, and your environment
- Fork the repository
- Create a new branch for your changes (
git checkout -b feature/your-feature-name
) - Make your changes
- Run tests to ensure your changes don't break existing functionality
- Commit your changes with a descriptive commit message
- Push your branch to your fork
- Submit a pull request to the main repository
- Ensure your code follows the project's coding style
- Update documentation as necessary
- Include tests for new functionality
- Link any relevant issues in your pull request description
- Your pull request will be reviewed by maintainers who may request changes
- Clone the repository
- Create a virtual environment:
python -m venv .venv
- Activate the virtual environment:
- Windows:
.venv\Scripts\activate
- Unix/MacOS:
source .venv/bin/activate
- Windows:
- Install dependencies:
pip install -r requirements.txt
- Run tests:
pytest
All changes should include appropriate tests:
- Unit tests for utility functions
- Integration tests for protocol handling
- End-to-end tests for server interaction
Run the test suite with pytest
before submitting changes.
To add support for a new MCP protocol version:
- Create a new protocol adapter in
mcp_testing/protocols/
- Update the test cases to include tests for the new protocol version
- Update the server implementations to support the new protocol
To add support for a new transport mechanism:
- Create a new transport adapter in
mcp_testing/transports/
- Implement the required interface methods
- Add tests for the new transport mechanism
- Follow PEP 8 for Python code
- Use descriptive variable names
- Include docstrings for all modules, classes, and functions
- Keep functions small and focused on a single responsibility
By contributing to this project, you agree that your contributions will be licensed under the project's AGPL-3.0 license.