Gerrit代码审查
STDIOGerrit代码审查集成服务器
Gerrit代码审查集成服务器
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: