Skip to content
This repository was archived by the owner on Apr 22, 2026. It is now read-only.

Commit b32381d

Browse files
feat: add workflow analysis and update suggestion tools (#3)
2 parents 3d80eeb + b0e050e commit b32381d

11 files changed

Lines changed: 1758 additions & 13 deletions

File tree

.github/workflows/pr-check.yml

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
name: PR Check
2+
3+
on:
4+
pull_request:
5+
branches:
6+
- main
7+
8+
jobs:
9+
check:
10+
runs-on: ubuntu-latest
11+
12+
steps:
13+
- name: Checkout repository
14+
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
15+
16+
- name: Setup Deno
17+
uses: denoland/setup-deno@e95548e56dfa95d4e1a28d6f422fafe75c4c26fb # v2.0.3
18+
with:
19+
deno-version: v2.x
20+
21+
- name: Check formatting
22+
run: deno fmt --check
23+
24+
- name: Lint
25+
run: deno lint
26+
27+
- name: Type check
28+
run: deno check main.ts
29+
30+
- name: Run tests
31+
run: deno test

README.md

Lines changed: 127 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ reference GitHub Actions by providing:
77
- Commit SHA retrieval for specific version tags
88
- Immutability status checking for releases
99
- Ready-to-use SHA-pinned references
10+
- **Workflow analysis** with update level detection (major/minor/patch)
11+
- **Safe update suggestions** that avoid breaking changes
1012

1113
## Why Use This?
1214

@@ -103,6 +105,9 @@ Once configured, ask Claude to look up GitHub Actions:
103105
- "Get the secure reference for actions/setup-node@v4"
104106
- "Check if actions/cache@v4.2.0 is immutable"
105107
- "List all versions of actions/upload-artifact"
108+
- "Analyze my workflow file for outdated actions"
109+
- "Suggest safe updates for my CI workflow"
110+
- "What's the latest v4.x version of actions/checkout?"
106111

107112
## Tool: `lookup_action`
108113

@@ -118,19 +123,131 @@ Once configured, ask Claude to look up GitHub Actions:
118123
```
119124
Action: actions/checkout
120125
121-
Latest Version: v4.2.2
122-
Commit SHA: 11bd71901bbe5b1630ceea73d27597364c9af683
123-
Immutable: Yes
124-
Published: 2024-10-23T14:05:06Z
126+
Latest Version: v6.0.1
127+
Commit SHA: 8e8c483db84b4bee98b60c0593521ed34d9990e8
128+
Immutable: No
129+
Published: 2025-12-02T16:38:59Z
125130
126131
Recommended Usage (SHA-pinned):
127-
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
132+
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
128133
129134
Security Notes:
130-
- This release is immutable - the tag and assets are protected from modification.
135+
- WARNING: This release is NOT immutable. The tag could potentially be moved to a different commit.
136+
- Using the SHA-pinned reference provides protection against tag tampering.
131137
- SHA-pinned references prevent supply chain attacks by ensuring you always use the exact same code.
132138
```
133139

140+
## Tool: `analyze_workflow`
141+
142+
Analyze a GitHub Actions workflow file and show version status for all actions.
143+
Reports current vs latest versions, update levels (major/minor/patch), and risk
144+
assessment.
145+
146+
### Parameters
147+
148+
| Parameter | Type | Required | Description |
149+
| ------------------ | ------- | -------- | ---------------------------------------------------- |
150+
| `workflow_content` | string | Yes | The workflow YAML content to analyze |
151+
| `only_updates` | boolean | No | Only show actions that need updates (default: false) |
152+
153+
### Example Output
154+
155+
```
156+
## Summary
157+
Total actions: 6
158+
Up to date: 1
159+
Major updates available: 2 ⚠️
160+
Minor updates available: 2
161+
Patch updates available: 1
162+
163+
## Actions
164+
165+
| Action | Current | Latest | Update | Risk |
166+
|--------|---------|--------|--------|------|
167+
| actions/checkout | v4.2.2 | v6.0.1 | ⚠️ Major | 🔴 High |
168+
| actions/setup-node | v4.1.0 | v6.2.0 | ⚠️ Major | 🔴 High |
169+
| docker/login-action | v3.3.0 | v3.6.0 | 📦 Minor | 🟡 Medium |
170+
| docker/build-push-action | v6.9.0 | v6.18.0 | 📦 Minor | 🟡 Medium |
171+
| appleboy/ssh-action | v1.2.0 | v1.2.4 | 🔧 Patch | 🟢 Low |
172+
173+
## Safe Updates (Minor/Patch)
174+
...
175+
176+
## Major Updates (Review Required)
177+
...
178+
```
179+
180+
## Tool: `suggest_updates`
181+
182+
Suggest safe updates for GitHub Actions in a workflow. Returns only safe updates
183+
(minor/patch) and suggestions to stay current within major versions.
184+
185+
### Parameters
186+
187+
| Parameter | Type | Required | Description |
188+
| ------------------ | ------ | -------- | ---------------------------------------------------------------------------- |
189+
| `workflow_content` | string | Yes | The workflow YAML content to analyze |
190+
| `risk_tolerance` | string | No | `"patch"` = only patches, `"minor"` = patch + minor (default), `"all"` = all |
191+
192+
### Example Output
193+
194+
```
195+
## Summary
196+
Total actions analyzed: 6
197+
Already up to date: 1
198+
Safe updates available: 3
199+
Actions with major updates: 2 (staying on current major)
200+
201+
## Safe Updates
202+
These updates are safe to apply:
203+
204+
### 📦 docker/login-action: v3.3.0 → v3.6.0
205+
Minor version update - new features, backwards compatible
206+
207+
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.6.0
208+
209+
### 🔧 appleboy/ssh-action: v1.2.0 → v1.2.4
210+
Patch version update - bug fixes only
211+
212+
uses: appleboy/ssh-action@2ead5e36573714d0d3cfcbac3646c3e0f09ec849 # v1.2.4
213+
214+
## Updates Within Current Major
215+
These actions have major updates available, but you can safely update within your current major version:
216+
217+
### actions/checkout: v4.2.2 → v4.2.2
218+
Safe update within v4.x (latest overall is v6.0.1)
219+
220+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
221+
```
222+
223+
## Tool: `get_latest_in_major`
224+
225+
Get the latest version of a GitHub Action within the same major version. Useful
226+
for safe updates that avoid breaking changes.
227+
228+
### Parameters
229+
230+
| Parameter | Type | Required | Description |
231+
| --------- | ------ | -------- | ------------------------------------------------------------------------ |
232+
| `action` | string | Yes | Action reference with version (e.g., `actions/checkout@v4` or `@v4.1.0`) |
233+
234+
### Example Output
235+
236+
```
237+
Action: actions/checkout
238+
Current Version: v4
239+
Major Version: v4
240+
241+
Latest in v4.x: v4.2.2
242+
Commit SHA: 11bd71901bbe5b1630ceea73d27597364c9af683
243+
Immutable: Yes
244+
245+
Note: Latest overall is v6.0.1
246+
247+
Recommended Usage (SHA-pinned):
248+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
249+
```
250+
134251
## Authentication
135252

136253
The service supports multiple authentication methods, checked in the following
@@ -252,10 +369,10 @@ When set, the service will:
252369
```
253370
Action: actions/checkout
254371
255-
Latest Version: v4.2.1
256-
Commit SHA: abc123...
257-
Immutable: Yes
258-
Published: 2024-10-15T10:00:00Z (7 days ago)
372+
Latest Version: v6.0.1
373+
Commit SHA: 8e8c483db84b4bee98b60c0593521ed34d9990e8
374+
Immutable: No
375+
Published: 2025-12-02T16:38:59Z (52 days ago)
259376
260377
Security Notes:
261378
- Minimum release age filter active: only considering releases at least 5 days old.

deno.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,13 @@
88
"compile": "deno compile --allow-net --allow-env --allow-run=gh -o github-actions-mcp main.ts",
99
"check": "deno check main.ts",
1010
"lint": "deno lint",
11-
"fmt": "deno fmt"
11+
"fmt": "deno fmt",
12+
"test": "deno test"
1213
},
1314
"imports": {
1415
"@modelcontextprotocol/sdk": "npm:@modelcontextprotocol/sdk@1.25.1",
15-
"zod": "npm:zod@3.25.76"
16+
"zod": "npm:zod@3.25.76",
17+
"@std/assert": "jsr:@std/assert@1"
1618
},
1719
"compilerOptions": {
1820
"strict": true

deno.lock

Lines changed: 15 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)