Run E2E tests against disposable Gerrit containers Existing E2E tests require a maintained server and pre-existing changes, making local and CI runs dependent on external state. Add a Testcontainers-backed Gerrit 3.13.10 fixture with REST-seeded data, a loopback HTTP endpoint, and automatic container and volume cleanup. Keep E2E opt-in and retain an explicit external-server backend with read-only operation when no test project is configured. Add a Zuul E2E job that publishes Gerrit logs even on failure, without an unused JUnit report, and document requirements for both backends. Verify change abandonment, failure cleanup, configuration restoration, and proxy-independent container requests with regression coverage. Change-Id: I1e19a3188c82d23cb9dda3ba4d2c936eade620f5
An MCP (Model Context Protocol) server that brings Gerrit code-review workflows to AI clients including the Gemini CLI, Claude Code, and OpenAI Codex. It provides tools to search changes, inspect diffs and review metadata, manage reviewers, comments, and change state, and analyze related or dependent changes. Optional extensions add tools backed by Gerrit plugins.
Use it as a Gemini CLI extension, Claude Code plugin, or Codex plugin, or run it directly as a persistent HTTP server or on-demand via STDIO.
For detailed information, please see the documents in the docs/ directory:
gerrit_config.json file and all authentication methods.Please report bugs and feature requests in the Gerrit MCP Server component of the Gerrit issue tracker.
Due to spam abuse, membership in the repo-discuss Google Group is required to create issues. See the announcement for more information.
Before you begin, ensure you have the following tools installed and available in your system's PATH.
pip if absent.Run the build script from the root of the gerrit-mcp-server project directory. This will create a virtual environment in .venv via uv sync and install all dependencies.
./build-gerrit.sh
Create the shared user config file described in the Configuration Guide. Copy the sample to the default location (using the project virtual environment's Python):
config_path=$(uv run python -c 'from platformdirs import user_config_path; print(user_config_path("gerrit-mcp") / "gerrit_config.json")') mkdir -p "$(dirname "$config_path")" cp gerrit_mcp_server/gerrit_config.sample.json "$config_path"
Customize it for your environment. GERRIT_CONFIG_PATH overrides the default. Existing repo-local configs must be moved or explicitly selected with that variable; they are not migrated automatically.
Alternatively, if your harness supports skills (tested with Claude Code), the /gerrit:setup skill can create or repair this file for you interactively. See Interactive Setup.
To run the server as a persistent background process, use the server.sh script:
./server.sh start
./server.sh status
./server.sh stop
For on-demand STDIO mode or client-specific installation instructions, see the Gemini CLI Setup Guide, Claude Code Setup Guide, or Codex Setup Guide.
To contribute code or other changes, use the canonical gerrit-mcp-server repository hosted on Gerrit and follow the contribution guidelines. This project does not accept GitHub pull requests.
This is not an officially supported Google product. This project is not eligible for the Google Open Source Software Vulnerability Rewards Program.