Thank you for your interest in contributing to Gemini Bridge! We welcome contributions from the community and are excited to work with you.
Before contributing, make sure you have:
- Python 3.9 or higher
- Gemini CLI installed and authenticated
- Git for version control
- A GitHub account
-
Fork the repository on GitHub
-
Clone your fork locally:
git clone https://github.com/YOUR_USERNAME/gemini-bridge.git cd gemini-bridge -
Set up the development environment:
# Install in development mode pip install -e . # Verify installation python -m src --help
-
Verify Gemini CLI is working:
gemini --version gemini auth login # if not already authenticated -
Create a feature branch:
git checkout -b feature/your-feature-name
-
Make your changes in small, logical commits
-
Test your changes thoroughly:
# Test the MCP server directly python -m src # Test integration with Claude Code (if available) ./start_server_dev.sh # Run automated tests pytest
-
Follow code style guidelines (see below)
-
Update documentation if needed
- Python: Follow PEP 8 style guide
- Line length: Maximum 88 characters (Black formatter default)
- Imports: Group imports logically (standard library, third-party, local)
- Docstrings: Use clear, descriptive docstrings for functions and classes
- Type hints: Include type hints for function parameters and return values
import subprocess
def consult_gemini(
query: str,
directory: str = ".",
model: str | None = None
) -> str:
"""
Send a query to Gemini CLI.
Args:
query: The question or prompt to send
directory: Working directory for the query
model: Optional model name (flash, pro, flash-lite, 3-pro, etc.)
Returns:
Gemini's response as a string
Raises:
RuntimeError: If CLI is not available or query fails
"""
# Implementation here...We welcome several types of contributions:
- Fix existing bugs or issues
- Improve error handling
- Address edge cases
- Add new MCP tools (with justification)
- Improve existing tool functionality
- Add configuration options
- Improve README or other documentation
- Add usage examples
- Write tutorials or guides
- Add test cases
- Improve test coverage
- Add integration tests
- Improve build process
- Update dependencies
- Enhance CI/CD
-
Ensure your code works with both development and production setups
-
Write clear commit messages:
feat: add support for custom timeout configuration - Add timeout parameter to both MCP tools - Update documentation with timeout examples - Maintain backward compatibility with default 60s timeout -
Update relevant documentation
-
Test thoroughly on your local setup
-
Push to your fork:
git push origin feature/your-feature-name
-
Create a Pull Request on GitHub with:
- Clear title describing the change
- Detailed description explaining:
- What the change does
- Why it's needed
- How it was tested
- Any breaking changes
- Link related issues using
Fixes #123orRelates to #456
- Automated checks will run (when available)
- Maintainer review will check:
- Code quality and style
- Functionality and correctness
- Documentation updates
- Backward compatibility
- Address feedback promptly and professionally
- Final approval and merge by maintainers
- Changes that add unnecessary complexity
- Features that duplicate existing functionality
- Breaking changes without strong justification and migration path
- Code that doesn't follow the project's simplicity philosophy
- Contributions without proper testing
Use our issue templates for:
- Bug reports: Include reproduction steps, environment details
- Feature requests: Explain the use case and expected behavior
- Questions: Use GitHub Discussions for general questions
- Be constructive and respectful in feedback
- Explain the "why" behind suggestions
- Learn from others and be open to feedback
- Focus on the code, not the person
Please read our Code of Conduct for community interaction guidelines.
Before submitting, verify:
- MCP server starts without errors
-
consult_geminitool works with basic queries -
consult_gemini_with_filestool works with file attachments -
web_searchtool works for web queries - Error handling works properly (try invalid queries)
- Both
start_server_dev.shandstart_server_uvx.shwork - Documentation is updated and accurate
If possible, test with:
- Claude Code integration
- Different Python versions (3.10, 3.11, 3.12)
- Various Gemini models (flash, pro, flash-lite, 3-pro, 3-flash, 3.1-pro, auto)
- GitHub Discussions: For general questions and community discussion
- GitHub Issues: For bug reports and feature requests
- Documentation: Check existing docs first
For sensitive issues or maintainer-specific questions, you can reach out through:
- GitHub issues (preferred for transparency)
- Email (for security issues only)
- MCP (Model Context Protocol) Specification
- Gemini CLI Documentation
- Python Packaging Guidelines
- Semantic Versioning
Recommended tools for development:
- Code Editor: VS Code, PyCharm, or your preferred editor
- Linting: flake8, black, or ruff
- Type Checking: mypy
- Git: For version control
Contributors are recognized in:
- GitHub contributor list
- CHANGELOG.md for significant contributions
- Special mentions for major features or fixes
Thank you for contributing to Gemini Bridge! Your contributions help make this tool better for the entire community.
This contributing guide is inspired by open source best practices and will evolve as our community grows.