Fix gitcookies domain matching to correctly handle wildcard entries Authentication silently failed for some hosts because the gitcookies domain match was both too narrow and too broad. The original substring check (`domain in line`) matched the domain string anywhere in the cookie record, including the value field, while entries stored with the standard wildcard prefix (a leading dot, e.g. `.gerrit.example.com`) were skipped entirely. Parse the cookie record first and match the extracted domain field according to the gitcookies wildcard convention: an entry with a leading dot matches both the bare domain and any subdomain, while an entry without one requires an exact host match. This avoids the opposite error of letting a non-wildcard entry such as `my-gerrit.com` match an unrelated `sub.my-gerrit.com`. Add unit tests covering wildcard subdomain and exact matches and confirming non-wildcard entries do not match subdomains. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Change-Id: I746d2ba13e74071e5a8cc9119fa5ef8b6ae63d76
An MCP (Model Context Protocol) server for interacting with the Gerrit code review system. This server allows a language model like Gemini to query changes, retrieve details, and manage reviews by executing curl commands against the Gerrit REST API.
This server can be run 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.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
You will need to create a gerrit_config.json file inside the gerrit_mcp_server directory. Copy the provided sample file gerrit_mcp_server/gerrit_config.sample.json and customize it for your environment. See the Configuration Guide for details on all available options.
cp gerrit_mcp_server/gerrit_config.sample.json gerrit_mcp_server/gerrit_config.json
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, please see the Gemini CLI Setup Guide or, to use this server as a Claude Code plugin, the Claude Code Setup Guide.
This is not an officially supported Google product. This project is not eligible for the Google Open Source Software Vulnerability Rewards Program.