Gerrit Review
STDIOGerrit code review integration server for AI assistants to review code changes
Gerrit code review integration server for AI assistants to review code changes
This MCP server provides integration with Gerrit code review system, allowing AI assistants to review code changes and their details through a simple interface.
The server provides a streamlined toolset for code review:
fetch_gerrit_change(change_id: str, patchset_number: Optional[str] = None)
fetch_patchset_diff(change_id: str, base_patchset: str, target_patchset: str, file_path: Optional[str] = None)
Review a complete change:
# Fetch latest patchset of change 23824 change = fetch_gerrit_change("23824")
Compare specific patchsets:
# Compare differences between patchsets 1 and 2 for change 23824 diff = fetch_patchset_diff("23824", "1", "2")
View specific file changes:
# Get diff for a specific file between patchsets file_diff = fetch_patchset_diff("23824", "1", "2", "path/to/file.swift")
mcp[cli] package repository (private package)To install gerrit-code-review-mcp for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @cayirtepeomer/gerrit-code-review-mcp --client claude
git clone <repository-url> cd gerrit-review-mcp
# For macOS/Linux: python -m venv .venv source .venv/bin/activate # For Windows: python -m venv .venv .venv\Scripts\activate
pip install -e .
export GERRIT_HOST="gerrit.example.com" # Your Gerrit server hostname (without https://) export GERRIT_USER="your-username" # Your Gerrit account username export GERRIT_HTTP_PASSWORD="your-http-password" # Generated HTTP password from Gerrit Settings > HTTP Credentials export GERRIT_EXCLUDED_PATTERNS="\.pbxproj$,\.xcworkspace$,node_modules/" # Optional: regex patterns for files to exclude from reviews # Optional TLS configuration for custom or self-signed certificates export GERRIT_SSL_VERIFY="true" # Set to 'false' to skip TLS verification in constrained environments export GERRIT_CA_BUNDLE="/path/to/ca.pem" # Optional custom CA bundle path used when verification stays enabled # Note: If both are set, GERRIT_CA_BUNDLE takes precedence and verification stays enabled using that bundle.
Or create a .env file:
GERRIT_HOST=gerrit.example.com
GERRIT_USER=your-username
GERRIT_HTTP_PASSWORD=your-http-password
GERRIT_EXCLUDED_PATTERNS=\.pbxproj$,\.xcworkspace$,node_modules/
GERRIT_SSL_VERIFY=true
GERRIT_CA_BUNDLE=/path/to/ca.pem
# If both are set, the CA bundle wins.
GERRIT_EXCLUDED_PATTERNS to exclude specific file types from change reviews\.pbxproj$,\.xcworkspace$,node_modules/)To use this MCP server with Cursor or RooCode, you need to add its configuration to your ~/.cursor/mcp.json or .roo/mcp.json file. Here's the required configuration:
{ "mcpServers": { "gerrit-review-mcp": { "command": "/path/to/your/workspace/gerrit-code-review-mcp/.venv/bin/python", "args": [ "/path/to/your/workspace/gerrit-code-review-mcp/server.py", "--transport", "stdio" ], "cwd": "/path/to/your/workspace/gerrit-code-review-mcp", "env": { "PYTHONPATH": "/path/to/your/workspace/gerrit-code-review-mcp", "VIRTUAL_ENV": "/path/to/your/workspace/gerrit-code-review-mcp/.venv", "PATH": "/path/to/your/workspace/gerrit-code-review-mcp/.venv/bin:/usr/local/bin:/usr/bin:/bin" }, "stdio": true } } }
Replace /path/to/your/workspace with your actual workspace path. For example, if your project is in /Users/username/projects/gerrit-code-review-mcp, use that path instead.
Make sure all paths in the configuration point to:
server.py fileThe server uses Gerrit REST API to interact with Gerrit, providing:
If you encounter connection issues:
GERRIT_HTTP_PASSWORDGERRIT_HOST setting (hostname only, without https://)/a/ prefix for authenticated API calls:
curl -u "your-username:your-http-password" https://your-gerrit-server.com/a/changes/?q=status:open
If you're having trouble with authentication, check your Gerrit config for gitBasicAuthPolicy = HTTP (or HTTP_LDAP).
GERRIT_SSL_VERIFY=false disables TLS verification when Gerrit uses an internally issued certificate lacking required Subject Alternative Name (SAN) entries.GERRIT_CA_BUNDLE=/path/to/ca.pem to keep verification enabled while trusting a private CA.This project is licensed under the MIT License.
This project includes comprehensive Docker integration tests using testcontainers-python for reliable cross-platform testing.
To run the full test suite:
# Install development dependencies pip install -e ".[dev]" # Run all tests pytest # Run only integration tests pytest -m integration # Run with verbose output pytest -v # Run with coverage pytest --cov=. --cov-report=html
The following environment variables can be used to configure test behavior:
TEST_STARTUP_TIMEOUT: Container startup timeout in seconds (default: 30)TEST_LOGS_SETTLE_DELAY: Delay before checking logs in seconds (default: 0)DOCKER_HOST: Docker daemon host for remote Docker (optional)Example:
# Run tests with custom timeouts TEST_STARTUP_TIMEOUT=60 TEST_LOGS_SETTLE_DELAY=1 pytest tests/test_docker_integration.py -v
Docker integration tests require:
/var/run/docker.sock (Linux/macOS) or DOCKER_HOST setTests will be automatically skipped if Docker is not available.
For CI/CD environments, ensure:
DOCKER_HOST is configuredWe welcome contributions! Please: