Skip to content

feat(ci): add openshift-ci-mcp MCP server to new ci-extras plugin - #557

Merged
openshift-merge-bot[bot] merged 1 commit into
openshift-eng:mainfrom
jeff-roche:openshift-ci-mcp
Jun 18, 2026
Merged

openshift-merge-bot[bot] merged 1 commit into
openshift-eng:mainfrom
jeff-roche:openshift-ci-mcp

Conversation

@jeff-roche

@jeff-roche jeff-roche commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Bundles the openshift-ci-mcp server with the ci plugin via .mcp.json
  • Exposes 19 tools covering releases, payloads, jobs, tests, PRs, and CI log search — all enabled by default
  • Proxy tools (sippy_api, release_controller_api, search_ci_api) are opt-in via ENABLE_PROXY_TOOLS=true
  • Documents the MCP server, its tool inventory, and the proxy opt-in in the plugin README

Assisted-by: Claude noreply@anthropic.com

Summary by CodeRabbit

Release Notes

  • New Features

    • Introduced "CI Extras" plugin with the check-release-health command for monitoring OpenShift CI release health metrics, including payload acceptance, test failures, and regression status.
  • Documentation

    • Added plugin documentation, command usage guides, and tools reference for the new CI Extras plugin.

@openshift-ci
openshift-ci Bot requested review from Prashanth684 and dgoodwin June 18, 2026 16:10
@coderabbitai

coderabbitai Bot commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

Introduces a new ci-extras plugin providing a check-release-health command backed by the openshift-ci-mcp MCP server. Adds plugin manifest, OWNERS, command definition, README, and registers the plugin in the marketplace catalog, docs site, and skillsaw linter allowlist.

Changes

ci-extras Plugin Addition

Layer / File(s) Summary
Plugin manifest and ownership
plugins/ci-extras/.claude-plugin/plugin.json, plugins/ci-extras/OWNERS
Adds the ci-extras plugin manifest with name, description, version 0.0.1, and author. Declares five approvers and reviewers in OWNERS.
check-release-health command definition
plugins/ci-extras/commands/check-release-health.md
Defines the ci-extras:check-release-health command with metadata, synopsis, high-level description, and a four-step MCP tool workflow: get_release_healthget_payload_status/get_recent_test_failuresget_regressions → synthesis summary.
Plugin README and PLUGINS.md docs
plugins/ci-extras/README.md, PLUGINS.md
Adds the ci-extras README documenting the command, default-enabled MCP tools grouped by category, and optional proxy passthrough tools gated by ENABLE_PROXY_TOOLS=true. Updates PLUGINS.md table of contents and adds the Ci Extras Plugin section.
Marketplace and docs site registration
.claude-plugin/marketplace.json, docs/index.html
Inserts the ci-extras entry (source, description, version, category, keywords) into the marketplace JSON and adds the full plugin object with check-release-health command HTML and openshift-ci-mcp stdio MCP server config to DATA.plugins in docs/index.html.
Skillsaw linter allowlist and formatting
.skillsaw.yaml
Adds openshift-ci-mcp to the mcp-prohibited rule's allowlist. Applies minor whitespace and indentation fixes to inline comments and the exclude glob list.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

  • openshift-eng/ai-helpers#283: Adds/updates marketplace versioning and plugin version enforcement that governs the same plugin manifest fields introduced here.
  • openshift-eng/ai-helpers#471: Reworks the mcp-prohibited rules and allowlist in .skillsaw.yaml, the same config section where openshift-ci-mcp is now allowlisted.
  • openshift-eng/ai-helpers#487: Introduces the PluginsDocUpToDateRule that validates the docs/index.html artifact edited here to add the ci-extras plugin entry.

Suggested labels

lgtm

Suggested reviewers

  • stbenjam
  • petr-muller
🚥 Pre-merge checks | ✅ 10
✅ Passed checks (10 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the primary change: adding the openshift-ci-mcp MCP server to a new ci-extras plugin, which is the main objective of the PR after the architecture adjustment.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
No Real People Names In Style References ✅ Passed No real people's names used as style references found in plugin commands, documentation, examples, or prompts. All content is technical and descriptive.
No Assumed Git Remote Names ✅ Passed The PR adds a new ci-extras plugin with documentation and metadata files. No hardcoded git remote names (origin/upstream) or git commands assuming specific remote names were found in any of the new...
Git Push Safety Rules ✅ Passed PR contains only configuration and documentation files (YAML, JSON, Markdown, HTML, OWNERS text). No executable scripts, git push commands, force pushes, or automated git operations present in any...
No Untrusted Mcp Servers ✅ Passed The openshift-ci-mcp MCP server is from the official OpenShift engineering organization (github.com/openshift-eng) and is explicitly allowlisted in .skillsaw.yaml, indicating it has passed the repo...
Ai-Helpers Overlap Detection ✅ Passed No significant functional overlap detected. check-release-health is a new ci-extras command with ~35% similarity to ci:payload-analysis but different depth/scope and intentional plugin separation p...

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands and usage tips.

@jeff-roche

Copy link
Copy Markdown
Contributor Author

/assign @stbenjam

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@plugins/ci/.mcp.json`:
- Line 7: In the plugins/ci/.mcp.json file, replace the `@latest` version
specifier in the github.com/openshift-eng/openshift-ci-mcp/cmd/openshift-ci-mcp
module reference with a specific pinned version (such as v0.5.0) to ensure
reproducible and deterministic builds. This will prevent silent behavior changes
between runs caused by automatically pulling the latest version.

In `@plugins/ci/README.md`:
- Around line 238-242: The documentation section for enabling proxy tools
(ENABLE_PROXY_TOOLS=true) is missing critical information about the requirement
to restart the MCP session or server for the changes to take effect. Add a note
after the export command in the README.md file explaining that users must
restart the MCP session/server after setting the environment variable for the
proxy tools to become available.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: c11ad28e-2df0-45b1-a353-402921607269

📥 Commits

Reviewing files that changed from the base of the PR and between 1015dd8 and f7a5d0d.

📒 Files selected for processing (4)
  • .skillsaw.yaml
  • docs/index.html
  • plugins/ci/.mcp.json
  • plugins/ci/README.md

Comment thread plugins/ci-extras/.mcp.json
Comment thread plugins/ci/README.md Outdated
@stbenjam

Copy link
Copy Markdown
Member

Hey thanks for the PR! The CI plugin is in the critical path for a number of autonomous agents (and evals of them), I am a little bit concerned to enable this by default as it now provides duplicate paths for obtaining similar data. I am thinking we want to create -core and -extras versions of pluigns, where things can incubate in -extras and not be on the critical path for key infra.

I'd merge a new ci-extras plugin right away if you're interested in putting this there

@jeff-roche jeff-roche changed the title feat(ci): add openshift-ci-mcp MCP server [wip] feat(ci): add openshift-ci-mcp MCP server Jun 18, 2026
@openshift-ci openshift-ci Bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Jun 18, 2026
@jeff-roche

Copy link
Copy Markdown
Contributor Author

Yeah no problem, I'll add one as part of this PR

@openshift-ci openshift-ci Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Jun 18, 2026
@jeff-roche

Copy link
Copy Markdown
Contributor Author

@stbenjam I added the ci-extras plugin but wasn't sure if I should add it to the openshift-developer bundle. WDYT?

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (2)
plugins/ci-extras/commands/check-release-health.md (2)

17-19: 💤 Low value

Add language specifier to fenced code block.

The synopsis code block is missing a language identifier. Specify the syntax to comply with Markdown linting standards.

Fix markdown code block syntax
 ## Synopsis
 
-```
+```bash
 /ci-extras:check-release-health <release version>

</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @plugins/ci-extras/commands/check-release-health.md around lines 17 - 19, The
fenced code block containing the /ci-extras:check-release-health command
synopsis is missing a language identifier, which violates Markdown linting
standards. Add bash as the language specifier to the opening triple backticks
(change tobash) before the /ci-extras:check-release-health command line
to properly specify the syntax highlighting for the code block.


</details>

<!-- cr-comment:v1:52ec8d90218c724bd1ce31db -->

---

`29-32`: _⚡ Quick win_

**Reduce repetitive sentence beginnings in implementation steps.**

Four consecutive steps begin with "Fetch", reducing clarity and readability. Vary the sentence structure by combining related actions or using synonyms.




<details>
<summary>Refactor implementation steps for variety</summary>

```diff
 ## Implementation
 
 1. Fetch release health metrics with `get_release_health` for the specified version.
-2. Fetch recent payload acceptance status with `get_payload_status`.
-3. Fetch recent test failures with `get_recent_test_failures`.
-4. Fetch active regressions with `get_regressions`.
+2. Gather payload acceptance status with `get_payload_status` and recent test failures with `get_recent_test_failures`.
+3. Retrieve active regressions with `get_regressions`.
 5. Synthesize the data into a brief health summary covering:
```

</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@plugins/ci-extras/commands/check-release-health.md` around lines 29 - 32, The
implementation steps listed in the check-release-health.md file (items 1-4)
begin with repetitive "Fetch" statements, which reduces readability and clarity.
Refactor these four steps to vary the sentence structure by combining related
actions into fewer steps, using different verbs as synonyms for "Fetch" such as
"Retrieve", "Gather", "Obtain", or "Collect", and restructuring the logical flow
so that the steps feel more natural and less monotonous while preserving all the
necessary information about fetching release health metrics, payload acceptance
status, test failures, and regressions.
```

</details>

<!-- cr-comment:v1:56f87cc095d0762fc5caf7a7 -->

</blockquote></details>

</blockquote></details>

<details>
<summary>🤖 Prompt for all review comments with AI agents</summary>

Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In @plugins/ci-extras/commands/check-release-health.md:

  • Around line 17-19: The fenced code block containing the
    /ci-extras:check-release-health command synopsis is missing a language
    identifier, which violates Markdown linting standards. Add bash as the language
    specifier to the opening triple backticks (change tobash) before the
    /ci-extras:check-release-health command line to properly specify the syntax
    highlighting for the code block.
  • Around line 29-32: The implementation steps listed in the
    check-release-health.md file (items 1-4) begin with repetitive "Fetch"
    statements, which reduces readability and clarity. Refactor these four steps to
    vary the sentence structure by combining related actions into fewer steps, using
    different verbs as synonyms for "Fetch" such as "Retrieve", "Gather", "Obtain",
    or "Collect", and restructuring the logical flow so that the steps feel more
    natural and less monotonous while preserving all the necessary information about
    fetching release health metrics, payload acceptance status, test failures, and
    regressions.

</details>

---

<details>
<summary>ℹ️ Review info</summary>

<details>
<summary>⚙️ Run configuration</summary>

**Configuration used**: Path: .coderabbit.yaml

**Review profile**: CHILL

**Plan**: Enterprise

**Run ID**: `338af8d8-3052-4b31-99b2-8d2e14acc4e9`

</details>

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 6bb1ab75870742a1c3ad551c0622cda536a3bc9f and 295104dc2c420f07d1abca1e6b05be4f3aab758f.

</details>

<details>
<summary>📒 Files selected for processing (7)</summary>

* `.claude-plugin/marketplace.json`
* `docs/index.html`
* `plugins/ci-extras/.claude-plugin/plugin.json`
* `plugins/ci-extras/.mcp.json`
* `plugins/ci-extras/OWNERS`
* `plugins/ci-extras/README.md`
* `plugins/ci-extras/commands/check-release-health.md`

</details>

<details>
<summary>💤 Files with no reviewable changes (1)</summary>

* plugins/ci-extras/.mcp.json

</details>

<details>
<summary>✅ Files skipped from review due to trivial changes (4)</summary>

* plugins/ci-extras/OWNERS
* plugins/ci-extras/.claude-plugin/plugin.json
* plugins/ci-extras/README.md
* docs/index.html

</details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->

@jeff-roche jeff-roche changed the title [wip] feat(ci): add openshift-ci-mcp MCP server feat(ci): add openshift-ci-mcp MCP server to new ci-extras plugin Jun 18, 2026
@openshift-ci openshift-ci Bot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Jun 18, 2026
@jeff-roche

Copy link
Copy Markdown
Contributor Author

/retest

Creates a new ci-extras plugin that bundles the openshift-ci-mcp MCP
server, providing direct access to OpenShift CI data APIs. Includes a
check-release-health example command demonstrating use of the MCP tools.

Assisted-by: Claude <noreply@anthropic.com>
@stbenjam

Copy link
Copy Markdown
Member

Not yet, -extras are going to be opt-in, -core will be "these are stable, have evals, etc" and what goes to -developer, but we can promote things out of extras to core over time

Thanks

/lgtm

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Jun 18, 2026
@openshift-ci

openshift-ci Bot commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: jeff-roche, stbenjam

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-merge-bot
openshift-merge-bot Bot merged commit 53f0d76 into openshift-eng:main Jun 18, 2026
5 checks passed
@jeff-roche
jeff-roche deleted the openshift-ci-mcp branch June 23, 2026 16:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. lgtm Indicates that a PR is ready to be merged.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants