Thank you for your interest in contributing to the MCP Python SDK! This document provides guidelines and instructions for contributing.
-
Make sure you have Python 3.10+ installed
-
Install uv
-
Fork the repository
-
Clone your fork:
git clone https://github.com/YOUR-USERNAME/python-sdk.git -
Install dependencies:
uv sync --frozen --all-extras --dev
-
Set up pre-commit hooks:
uv tool install pre-commit --with pre-commit-uv --force-reinstall
-
Choose the correct branch for your changes:
- For bug fixes to a released version: use the latest release branch (e.g. v1.1.x for 1.1.3)
- For new features: use the main branch (which will become the next minor/major version)
- If unsure, ask in an issue first
-
Create a new branch from your chosen base branch
-
Make your changes
-
Ensure tests pass:
uv run pytest
-
Run type checking:
uv run pyright
-
Run linting:
uv run ruff check . uv run ruff format .
-
Update README snippets if you modified example code:
uv run scripts/update_readme_snippets.py
-
(Optional) Run pre-commit hooks on all files:
pre-commit run --all-files
-
Submit a pull request to the same branch you branched from
To build and view the documentation locally:
-
Install documentation dependencies (included with
--devflag above):uv sync --frozen --group docs
-
Serve the documentation locally:
uv run mkdocs serve
Note for macOS users: If you encounter a Cairo library error, set the library path before running mkdocs:
export DYLD_FALLBACK_LIBRARY_PATH=/opt/homebrew/lib uv run mkdocs serve -
Open your browser to
http://127.0.0.1:8000/python-sdk/to view the documentation
The documentation will auto-reload when you make changes to files in docs/, mkdocs.yml, or src/mcp/.
- We use
rufffor linting and formatting - Follow PEP 8 style guidelines
- Add type hints to all functions
- Include docstrings for public APIs
- Update documentation as needed
- Add tests for new functionality
- Ensure CI passes
- Maintainers will review your code
- Address review feedback
Please note that this project is released with a Code of Conduct. By participating in this project you agree to abide by its terms.
By contributing, you agree that your contributions will be licensed under the MIT License.