blob: 1287cb2ed3b8ce0f3a3abc454b9d685e2fb23ccd [file] [view]
# Claude Code Configuration
You can use this MCP server with [Claude Code](https://claude.com/claude-code),
allowing you to interact with Gerrit directly from your terminal. This
repository ships as an installable **Claude Code plugin**.
## Claude Code Plugin
The plugin is defined by two files in the repository root:
- `.claude-plugin/plugin.json`: the plugin manifest (name and description)
required by the Claude Code plugin system.
- `.mcp.json`: the MCP server configuration. It launches the server on-demand
with `uv` and uses `${CLAUDE_PLUGIN_ROOT}` and `${CLAUDE_PLUGIN_DATA}` so
paths resolve correctly wherever the plugin is installed:
```json
{
"mcpServers": {
"gerrit": {
"command": "uv",
"args": ["run", "--directory", "${CLAUDE_PLUGIN_ROOT}", "gerrit-mcp-server"],
"env": {
"UV_PROJECT_ENVIRONMENT": "${CLAUDE_PLUGIN_DATA}/.venv"
}
}
}
}
```
### Install from the marketplace
Register the Gerrit plugin marketplace and install the plugin:
```
/plugin marketplace add https://gerrit.googlesource.com/gerrit-mcp-server
/plugin install gerrit@gerrit-mcp
```
### Load locally
Load the plugin locally by pointing Claude Code at the project directory:
```bash
claude --plugin-dir <path-to-gerrit-mcp-server>
```
Because the server is launched with `uv run`, `uv` automatically creates the
environment at `${CLAUDE_PLUGIN_DATA}/.venv` and installs dependencies on first
launch. There is no need to run `./build-gerrit.sh` separately for the plugin.
The plugin starts the server on-demand, so no separate background process is
required. Once loaded, you can use the `gerrit` tools directly from `claude`.
## Prerequisites
Users must [configure](../README.md#3_configure-the-server) the server with the
`gerrit_config.json` file.
## Setup diagnostics
A `SessionStart` hook (`hooks/check-config.sh`, registered in
`hooks/hooks.json`) checks the server environment and configuration at the start
of every session, so a broken setup surfaces with clear guidance instead of MCP
tools failing silently.
The hook runs the `gerrit-check-config` console script, whose exit code reports
the setup state:
- `0`: config is valid the hook stays quiet and reports that the tools are
available.
- `1`: config file is missing the normal first-run state. The hook asks the
user to run `/gerrit:setup`.
- `2`: config is present but invalid (bad JSON or `default_gerrit_base_url`
mismatch) the hook asks the user to run `/gerrit:setup` to repair it.
- any other non-zero code: the Python environment is not built. The hook offers
the exact `build-gerrit.sh` command to rebuild it.
The hook emits JSON with a `systemMessage` (shown to the user) and
`additionalContext` (telling the model what to do), because `SessionStart`
stdout goes to the model's context rather than the user's terminal.
## `/gerrit:setup` skill
`skills/setup/SKILL.md` provides an interactive `/gerrit:setup` skill that
guides the user through creating or updating
`gerrit_mcp_server/gerrit_config.json`. The exit-code 1 and 2 states above ask
the user to run it. See
[Interactive Setup](configuration.md#interactive-setup-gerritsetup) in the
configuration guide for details.
## `gerrit-workflow` skill
`skills/gerrit-workflow/SKILL.md` teaches the model how to drive the git side of
Gerrit Code Review pushing for review via `refs/for/<branch>`, creating new
patch sets by amending without disturbing the `Change-Id` trailer, working with
dependent change stacks and topics, and diagnosing common push errors such as
`missing Change-Id in commit message footer` or `prohibited by Gerrit`.
Unlike `/gerrit:setup`, this skill is model-invocable: Claude Code activates it
automatically whenever a task involves Gerrit git operations, so you do not need
to invoke it by name. Two reference files ship alongside it:
- `references/gerrit-vs-github.md` a side-by-side comparison of Gerrit and
GitHub/GitLab workflows for common tasks.
- `references/change-id-details.md` a deep dive on `Change-Id` creation,
squashing, cherry-picks, and edge cases.