An MCP (Model Context Protocol) server that exposes tools for querying the OpenShift release API. It is built with FastMCP and httpx, and speaks streamable HTTP so clients can connect to a URL (for example from Cursor).
The default API base is https://amd64.ocp.releases.ci.openshift.org/api/v1.
- Python 3.13+
git clone https://github.com/openshift/ocp-release-mcp.git
cd ocp-release-mcp
uv venv
source .venv/bin/activate
uv pip install .Optional environment variables (or a .env file in the working directory):
| Variable | Default | Purpose |
|---|---|---|
BASE_URL |
https://amd64.ocp.releases.ci.openshift.org/api/v1 |
OpenShift release API root |
HOST |
0.0.0.0 |
Bind address for the HTTP server |
PORT |
8000 |
Listen port |
LOG_LEVEL |
INFO |
Logging level |
openshift-release-mcpThe server starts with streamable HTTP transport. By default it listens on http://0.0.0.0:8000; the MCP endpoint path is /mcp (for example http://localhost:8000/mcp).
Example .mcp.json in your project:
{
"mcpServers": {
"openshift-release": {
"type": "http",
"url": "http://localhost:8000/mcp"
}
}
}Start openshift-release-mcp before connecting from the IDE.
| Tool | Description |
|---|---|
get_release |
Fetches a release by stream and version tag. Returns structured data: version, phase, and updated images with commit subjects and PR URLs when the payload includes changeLogJson. |
list_tags |
Lists tags for a stream, optionally filtered by phase (passed as a query parameter to the API). |
compare_releases |
Compares two releases in the same stream: payload1 vs payload2 (base), using the API’s from= comparison. |
get_rhcos_rpms |
Lists all RPMs in the RHCOS build of a release payload. |
compare_rhcos_rpms |
Compares RHCOS RPM lists between two release payloads, showing added, removed, and updated packages. |
get_component_rpms |
Lists all RPMs installed in a specific component image of a release payload. Requires oc and podman on the server. |
get_pull_request_info |
Fetches the raw .patch text for a given pull request URL (appends .patch to the URL). |
- Release stream: A channel such as
4.22.0-0.nightly,4-stable,4-dev-preview, or4.18.0-0.ci. - Version / tag: A specific build identifier, for example
4.22.0-0.nightly-2026-03-23-022245. - Component: A container image within a release payload, for example
ovn-kubernetes,etcd, orkube-apiserver.
| Stream type | Example |
|---|---|
| Nightly | 4.22.0-0.nightly |
| CI | 4.18.0-0.ci |
| Dev Preview | 4-dev-preview |
| Stable | 4-stable |
EC (engineering candidate) releases such as 4.22.0-ec.4 use the 4-dev-preview stream.
Below are examples of questions you can ask an LLM connected to this MCP server:
-
"What is the OVN version in the ovn-kubernetes component in 4.22.0-ec.4?" Uses
get_component_rpmsto inspect theovn-kubernetesimage and filter forovnRPMs. -
"What is the OVS version in the ovn-kubernetes component in 4.22.0-ec.4?" Uses
get_component_rpmsto inspect theovn-kubernetesimage and filter foropenvswitchRPMs. -
"What is the etcd version in 4.22.0-ec.4?" Uses
get_component_rpmsto inspect theetcdimage. Since etcd is a Go binary (not an RPM), the LLM can also run theetcd --versionentrypoint on the image directly. -
"List the latest accepted nightly releases for 4.22" Uses
list_tagswithstream=4.22.0-0.nightlyandphase=Accepted. -
"What changed between two nightly releases?" Uses
compare_releaseswith the stream and two version tags to show updated images, commits, and component changes. -
"What RHCOS RPMs changed between two releases?" Uses
compare_rhcos_rpmsto diff the full RPM lists between two payloads, showing added, removed, and updated packages. -
"What RPMs are included in the RHCOS build for 4.22.0-0.nightly-2026-03-23-022245?" Uses
get_rhcos_rpmswith the stream and version tag.
See LICENSE in this repository.