agent-mcp-guard 0.2.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -14,7 +14,7 @@ Website: [chaoyue0307.github.io/mcp-guard](https://chaoyue0307.github.io/mcp-gua
14
14
  <a href="https://www.npmjs.com/package/agent-mcp-guard"><img alt="npm version" src="https://img.shields.io/npm/v/agent-mcp-guard?color=0f766e"></a>
15
15
  <a href="https://github.com/ChaoYue0307/mcp-guard/actions"><img alt="CI" src="https://github.com/ChaoYue0307/mcp-guard/actions/workflows/ci.yml/badge.svg"></a>
16
16
  <a href="LICENSE"><img alt="License" src="https://img.shields.io/badge/license-Apache--2.0-111827"></a>
17
- <a href="https://github.com/ChaoYue0307/mcp-guard/releases/tag/v0.2.0"><img alt="Release" src="https://img.shields.io/github/v/release/ChaoYue0307/mcp-guard?color=7c2d12"></a>
17
+ <a href="https://github.com/ChaoYue0307/mcp-guard/releases/tag/v0.3.1"><img alt="Release" src="https://img.shields.io/github/v/release/ChaoYue0307/mcp-guard?color=7c2d12"></a>
18
18
  </p>
19
19
 
20
20
  ## Install
@@ -42,6 +42,12 @@ Generate an HTML report:
42
42
  mcp-guard scan --format html --output mcp-guard-report.html
43
43
  ```
44
44
 
45
+ Generate SARIF for GitHub code scanning:
46
+
47
+ ```bash
48
+ mcp-guard scan --format sarif --output mcp-guard.sarif
49
+ ```
50
+
45
51
  Use in CI:
46
52
 
47
53
  ```bash
@@ -51,11 +57,24 @@ mcp-guard scan --config .mcp.json --fail-on high
51
57
  Use the GitHub Action:
52
58
 
53
59
  ```yaml
54
- - uses: ChaoYue0307/mcp-guard@v0.2.0
60
+ - uses: ChaoYue0307/mcp-guard-action@v0.3.1
55
61
  with:
56
62
  fail-on: high
63
+ upload-sarif: "true"
57
64
  ```
58
65
 
66
+ ## End-to-End Example
67
+
68
+ Use the transparent example to evaluate what the scanner actually does:
69
+
70
+ - input config: [site/e2e/claude_desktop_config.json](site/e2e/claude_desktop_config.json)
71
+ - generated Markdown report: [site/e2e/report.md](site/e2e/report.md)
72
+ - generated HTML report: [site/e2e/report.html](site/e2e/report.html)
73
+ - generated JSON report: [site/e2e/report.json](site/e2e/report.json)
74
+ - generated SARIF report: [site/e2e/report.sarif](site/e2e/report.sarif)
75
+
76
+ The example scans 3 MCP servers and reports 9 findings with a risk score of 98. It is synthetic, but fully reproducible from committed files.
77
+
59
78
  ## What It Finds
60
79
 
61
80
  | Risk | Why it matters |
@@ -112,26 +131,23 @@ MCP configs often contain sensitive local paths, internal hostnames, tokens, and
112
131
  - no config upload;
113
132
  - no external API call;
114
133
  - secret-like values redacted in reports;
115
- - text, Markdown, HTML, and JSON output for local review and CI.
134
+ - text, Markdown, HTML, JSON, and SARIF output for local review, CI artifacts, and GitHub code scanning.
116
135
 
117
- ## Commercial Support
136
+ ## Early Access and Feedback
118
137
 
119
- Need help reviewing a real AI agent or MCP setup?
138
+ Want to try `mcp-guard` on a real AI agent or MCP setup?
120
139
 
121
- I offer private **AI Agent/MCP Security Audits** covering server inventory, risky startup commands, secret exposure, filesystem scope, remote MCP endpoints, and remediation planning.
140
+ The project is currently an automated local scanner. I am collecting early users, real-world config examples, CI setup feedback, and rule requests to improve coverage.
122
141
 
123
142
  Contact: [hechaoyue0307@gmail.com](mailto:hechaoyue0307@gmail.com)
124
143
 
125
- Service details: [docs/paid-audit.md](docs/paid-audit.md)
126
-
127
144
  ## Documentation
128
145
 
129
146
  - [Rule reference](docs/rules.md)
130
147
  - [GitHub Action](docs/github-action.md)
148
+ - [Marketplace publishing plan](docs/marketplace.md)
131
149
  - [Privacy and security](docs/privacy-and-security.md)
132
150
  - [Roadmap](docs/roadmap.md)
133
- - [Business playbook](docs/business-playbook.md)
134
- - [Launch checklist](docs/launch-checklist.md)
135
151
  - [Operator runbook](docs/operator-runbook.md)
136
152
 
137
153
  ## Exit Codes
package/action.yml CHANGED
@@ -1,4 +1,4 @@
1
- name: mcp-guard
1
+ name: mcp-guard MCP Security Scanner
2
2
  description: Scan MCP and AI agent tool configuration for risky commands, secrets, and broad permissions.
3
3
  author: mcp-guard
4
4
 
@@ -19,14 +19,14 @@ inputs:
19
19
  description: Directory where reports will be written.
20
20
  required: false
21
21
  default: mcp-guard-report
22
- package-version:
23
- description: npm package version to install.
24
- required: false
25
- default: latest
26
22
  upload-artifact:
27
23
  description: Upload generated reports as a workflow artifact.
28
24
  required: false
29
25
  default: "true"
26
+ upload-sarif:
27
+ description: "Upload SARIF to GitHub code scanning. Requires security-events: write permission."
28
+ required: false
29
+ default: "false"
30
30
  artifact-name:
31
31
  description: Artifact name for generated reports.
32
32
  required: false
@@ -42,6 +42,9 @@ outputs:
42
42
  json-report:
43
43
  description: Path to the generated JSON report.
44
44
  value: ${{ steps.reports.outputs.json-report }}
45
+ sarif-report:
46
+ description: Path to the generated SARIF report.
47
+ value: ${{ steps.reports.outputs.sarif-report }}
45
48
  exit-code:
46
49
  description: mcp-guard threshold exit code.
47
50
  value: ${{ steps.reports.outputs.exit-code }}
@@ -54,12 +57,6 @@ runs:
54
57
  with:
55
58
  node-version: "20"
56
59
 
57
- - name: Install mcp-guard
58
- shell: bash
59
- env:
60
- MCP_GUARD_PACKAGE_VERSION: ${{ inputs.package-version }}
61
- run: npm install --global "agent-mcp-guard@${MCP_GUARD_PACKAGE_VERSION}"
62
-
63
60
  - name: Generate reports
64
61
  id: reports
65
62
  shell: bash
@@ -70,6 +67,7 @@ runs:
70
67
  run: |
71
68
  set -euo pipefail
72
69
 
70
+ guard_bin="${GITHUB_ACTION_PATH}/bin/mcp-guard.js"
73
71
  mkdir -p "${MCP_GUARD_OUTPUT_DIR}"
74
72
 
75
73
  scan_args=()
@@ -80,13 +78,15 @@ runs:
80
78
  markdown_report="${MCP_GUARD_OUTPUT_DIR}/mcp-guard-report.md"
81
79
  html_report="${MCP_GUARD_OUTPUT_DIR}/mcp-guard-report.html"
82
80
  json_report="${MCP_GUARD_OUTPUT_DIR}/mcp-guard-report.json"
81
+ sarif_report="${MCP_GUARD_OUTPUT_DIR}/mcp-guard.sarif"
83
82
 
84
- mcp-guard scan "${scan_args[@]}" --format markdown --output "${markdown_report}" --fail-on none
85
- mcp-guard scan "${scan_args[@]}" --format html --output "${html_report}" --fail-on none
86
- mcp-guard scan "${scan_args[@]}" --format json --output "${json_report}" --fail-on none
83
+ node "${guard_bin}" scan "${scan_args[@]}" --format markdown --output "${markdown_report}" --fail-on none
84
+ node "${guard_bin}" scan "${scan_args[@]}" --format html --output "${html_report}" --fail-on none
85
+ node "${guard_bin}" scan "${scan_args[@]}" --format json --output "${json_report}" --fail-on none
86
+ node "${guard_bin}" scan "${scan_args[@]}" --format sarif --output "${sarif_report}" --fail-on none
87
87
 
88
88
  set +e
89
- mcp-guard scan "${scan_args[@]}" --fail-on "${MCP_GUARD_FAIL_ON}"
89
+ node "${guard_bin}" scan "${scan_args[@]}" --fail-on "${MCP_GUARD_FAIL_ON}"
90
90
  status="$?"
91
91
  set -e
92
92
 
@@ -94,9 +94,23 @@ runs:
94
94
  echo "markdown-report=${markdown_report}"
95
95
  echo "html-report=${html_report}"
96
96
  echo "json-report=${json_report}"
97
+ echo "sarif-report=${sarif_report}"
97
98
  echo "exit-code=${status}"
98
99
  } >> "${GITHUB_OUTPUT}"
99
100
 
101
+ - name: Write job summary
102
+ if: ${{ always() && steps.reports.outputs.json-report != '' }}
103
+ shell: bash
104
+ env:
105
+ MCP_GUARD_FAIL_ON: ${{ inputs.fail-on }}
106
+ run: |
107
+ node "${GITHUB_ACTION_PATH}/scripts/action-summary.js" \
108
+ "${{ steps.reports.outputs.json-report }}" \
109
+ "${{ steps.reports.outputs.markdown-report }}" \
110
+ "${{ steps.reports.outputs.html-report }}" \
111
+ "${{ steps.reports.outputs.sarif-report }}" \
112
+ "${MCP_GUARD_FAIL_ON}" >> "${GITHUB_STEP_SUMMARY}"
113
+
100
114
  - name: Upload report artifact
101
115
  if: ${{ always() && inputs.upload-artifact == 'true' }}
102
116
  uses: actions/upload-artifact@v4
@@ -104,8 +118,18 @@ runs:
104
118
  name: ${{ inputs.artifact-name }}
105
119
  path: ${{ inputs.output-dir }}
106
120
 
121
+ - name: Upload SARIF to code scanning
122
+ if: ${{ always() && inputs.upload-sarif == 'true' && steps.reports.outputs.sarif-report != '' }}
123
+ uses: github/codeql-action/upload-sarif@v3
124
+ with:
125
+ sarif_file: ${{ steps.reports.outputs.sarif-report }}
126
+
107
127
  - name: Enforce severity threshold
108
128
  shell: bash
109
129
  env:
110
130
  MCP_GUARD_EXIT_CODE: ${{ steps.reports.outputs.exit-code }}
111
- run: exit "${MCP_GUARD_EXIT_CODE}"
131
+ run: |
132
+ if [ -z "${MCP_GUARD_EXIT_CODE}" ]; then
133
+ exit 1
134
+ fi
135
+ exit "${MCP_GUARD_EXIT_CODE}"
@@ -4,16 +4,18 @@
4
4
 
5
5
  `mcp-guard` is the local-first security scanner for teams adopting AI agents and MCP servers.
6
6
 
7
- The business is not the open-source CLI alone. The CLI creates trust and distribution. Revenue comes from private audits, remediation, and eventually team workflows.
7
+ The business is not the open-source CLI alone. The CLI creates trust and distribution. Near-term validation comes from early users running the scanner on real setups. Revenue can later come from private audits, remediation, and team workflows once those services are actually offered.
8
8
 
9
- ## First Paid Offer
9
+ ## Future Paid Offer
10
10
 
11
11
  AI Agent/MCP Security Audit.
12
12
 
13
+ Do not advertise this as active until there is a clear delivery process, pricing, and availability.
14
+
13
15
  Deliverables:
14
16
 
15
17
  - MCP server inventory;
16
- - `mcp-guard` Markdown, HTML, and JSON scan reports;
18
+ - `mcp-guard` Markdown, HTML, JSON, and SARIF scan reports;
17
19
  - manual review of high-risk findings;
18
20
  - prioritized remediation plan;
19
21
  - optional GitHub Action setup for continuous scans;
@@ -35,7 +37,7 @@ I built mcp-guard, an open-source local scanner for MCP and AI agent tool config
35
37
 
36
38
  It checks for risky shell access, unpinned npx packages, broad filesystem permissions, exposed secrets, and remote MCP servers.
37
39
 
38
- I am doing a few early MCP security audits for teams using Claude, Cursor, Codex, or MCP in real workflows. If you send a redacted config or run the CLI locally, I can help interpret the report and suggest hardening steps.
40
+ I am collecting real-world MCP and AI agent config patterns from teams using Claude, Cursor, Codex, or MCP in production-like workflows. If you can share a redacted config or run the CLI locally, your feedback can help improve the scanner's rules and reports.
39
41
  ```
40
42
 
41
43
  ## First 20 Targets
@@ -0,0 +1,60 @@
1
+ # End-to-End Example
2
+
3
+ This example is designed for transparent product evaluation. It uses a synthetic MCP config committed to the repository, then runs the real `mcp-guard` CLI to generate Markdown, HTML, JSON, and SARIF outputs.
4
+
5
+ The input is intentionally unsafe so users can see whether the scanner catches concrete risks.
6
+
7
+ ## Input
8
+
9
+ Config file:
10
+
11
+ - [`site/e2e/claude_desktop_config.json`](../../site/e2e/claude_desktop_config.json)
12
+
13
+ It contains three MCP server entries:
14
+
15
+ - `filesystem-all-home`: launches an unpinned remote package with broad filesystem access and a secret-like environment variable.
16
+ - `shell-installer`: runs `bash -c` with a curl-pipe-shell installer pattern.
17
+ - `remote-prod`: points at a remote MCP endpoint with a secret-like authorization header.
18
+
19
+ ## Reproduce the Reports
20
+
21
+ ```bash
22
+ node ./bin/mcp-guard.js scan --config site/e2e/claude_desktop_config.json --format markdown --output site/e2e/report.md
23
+ node ./bin/mcp-guard.js scan --config site/e2e/claude_desktop_config.json --format html --output site/e2e/report.html
24
+ node ./bin/mcp-guard.js scan --config site/e2e/claude_desktop_config.json --format json --output site/e2e/report.json
25
+ node ./bin/mcp-guard.js scan --config site/e2e/claude_desktop_config.json --format sarif --output site/e2e/report.sarif
26
+ ```
27
+
28
+ ## Expected Result
29
+
30
+ The current scanner reports:
31
+
32
+ - Risk score: `98`
33
+ - Findings: `9`
34
+ - Critical: `2`
35
+ - High: `5`
36
+ - Medium: `2`
37
+ - Low: `0`
38
+
39
+ Important findings include:
40
+
41
+ - `MCP010`: shell command executes inline script.
42
+ - `MCP050`: curl-pipe-shell startup command.
43
+ - `MCP021`: unpinned remote MCP package.
44
+ - `MCP030`: secret-like environment variable.
45
+ - `MCP040` and `MCP041`: broad working directory and filesystem argument.
46
+ - `MCP061`: secret-like remote header.
47
+
48
+ ## Generated Artifacts
49
+
50
+ - [Markdown report](../../site/e2e/report.md)
51
+ - [HTML report](../../site/e2e/report.html)
52
+ - [JSON report](../../site/e2e/report.json)
53
+ - [SARIF report](../../site/e2e/report.sarif)
54
+
55
+ ## What This Proves
56
+
57
+ - The scanner does not need the config to leave the machine.
58
+ - Secret-like values are redacted in reports.
59
+ - Findings include rule IDs, severity, evidence, and remediation guidance.
60
+ - The same scan can feed a human-readable HTML report, automation JSON, and GitHub code scanning SARIF.
@@ -2,7 +2,9 @@
2
2
 
3
3
  Use the `mcp-guard` action to scan MCP and AI agent tool configuration in pull requests and CI.
4
4
 
5
- The action installs the published npm package, generates Markdown, HTML, and JSON reports, uploads them as a workflow artifact, then fails the job when findings meet your selected severity threshold.
5
+ The action runs the CLI from the pinned GitHub Action tag, generates Markdown, HTML, JSON, and SARIF reports, writes a job summary, uploads reports as an artifact, and fails the job when findings meet your selected severity threshold.
6
+
7
+ Marketplace/action repository: <https://github.com/ChaoYue0307/mcp-guard-action>
6
8
 
7
9
  ## Basic Workflow
8
10
 
@@ -22,29 +24,47 @@ jobs:
22
24
  runs-on: ubuntu-latest
23
25
  steps:
24
26
  - uses: actions/checkout@v4
25
- - uses: ChaoYue0307/mcp-guard@v0.2.0
27
+ - uses: ChaoYue0307/mcp-guard-action@v0.3.1
26
28
  with:
27
29
  fail-on: high
28
30
  ```
29
31
 
30
- ## Scan a Specific Config
32
+ ## Upload SARIF to GitHub Security
33
+
34
+ Enable SARIF upload when you want findings in the repository Security tab. The workflow needs `security-events: write`.
31
35
 
32
36
  ```yaml
33
- - uses: ChaoYue0307/mcp-guard@v0.2.0
34
- with:
35
- config: .mcp.json
36
- fail-on: medium
37
+ name: mcp-guard
38
+
39
+ on:
40
+ pull_request:
41
+ push:
42
+ branches: [main]
43
+
44
+ permissions:
45
+ contents: read
46
+ security-events: write
47
+
48
+ jobs:
49
+ scan:
50
+ runs-on: ubuntu-latest
51
+ steps:
52
+ - uses: actions/checkout@v4
53
+ - uses: ChaoYue0307/mcp-guard-action@v0.3.1
54
+ with:
55
+ config: .mcp.json
56
+ fail-on: high
57
+ upload-sarif: "true"
37
58
  ```
38
59
 
39
- ## Pin the npm Package
60
+ ## Report-Only Mode
40
61
 
41
- The action defaults to `agent-mcp-guard@latest`. Pin it when you want deterministic CI behavior:
62
+ Use `fail-on: none` when you want artifacts and summaries without blocking a pull request.
42
63
 
43
64
  ```yaml
44
- - uses: ChaoYue0307/mcp-guard@v0.2.0
65
+ - uses: ChaoYue0307/mcp-guard-action@v0.3.1
45
66
  with:
46
- package-version: 0.2.0
47
- fail-on: high
67
+ fail-on: none
48
68
  ```
49
69
 
50
70
  ## Inputs
@@ -54,8 +74,8 @@ The action defaults to `agent-mcp-guard@latest`. Pin it when you want determinis
54
74
  | `config` | empty | Optional MCP config path. Empty scans default project and user config locations. |
55
75
  | `fail-on` | `high` | Fails the job for `critical`, `high`, `medium`, or `low` findings. Use `none` for report-only mode. |
56
76
  | `output-dir` | `mcp-guard-report` | Directory for generated reports. |
57
- | `package-version` | `latest` | npm package version to install. |
58
77
  | `upload-artifact` | `true` | Uploads generated reports as a workflow artifact. |
78
+ | `upload-sarif` | `false` | Uploads SARIF to GitHub code scanning. Requires `security-events: write`. |
59
79
  | `artifact-name` | `mcp-guard-report` | Name of the uploaded artifact. |
60
80
 
61
81
  ## Outputs
@@ -65,4 +85,5 @@ The action defaults to `agent-mcp-guard@latest`. Pin it when you want determinis
65
85
  | `markdown-report` | Path to the generated Markdown report. |
66
86
  | `html-report` | Path to the generated HTML report. |
67
87
  | `json-report` | Path to the generated JSON report. |
88
+ | `sarif-report` | Path to the generated SARIF report. |
68
89
  | `exit-code` | `0` when below threshold, `2` when findings met the threshold. |
@@ -10,8 +10,9 @@
10
10
  - [ ] Publish with `npm publish --access public`.
11
11
  - [ ] Generate fresh sample report with `npm run scan:example`.
12
12
  - [ ] Add screenshots or paste report excerpt into README.
13
+ - [ ] Finish the GitHub Marketplace web publishing step for `mcp-guard-action`.
13
14
  - [ ] Post a short technical article or launch note.
14
- - [ ] Contact 20 early users for free scans or paid hardening.
15
+ - [ ] Contact 20 early users for scan feedback, missing rules, and CI setup needs.
15
16
  - [ ] Follow the detailed steps in `docs/operator-runbook.md`.
16
17
 
17
18
  ## User Setup
@@ -27,6 +28,15 @@ mcp-guard scan
27
28
  mcp-guard scan --config .mcp.json --fail-on high
28
29
  ```
29
30
 
31
+ ## GitHub Action Setup
32
+
33
+ ```yaml
34
+ - uses: ChaoYue0307/mcp-guard-action@v0.3.1
35
+ with:
36
+ fail-on: high
37
+ upload-sarif: "true"
38
+ ```
39
+
30
40
  Exit codes:
31
41
 
32
42
  - `0`: scan completed and did not hit the fail threshold.
@@ -0,0 +1,91 @@
1
+ # mcp-guard MCP Security Scanner
2
+
3
+ Scan MCP and AI agent tool configuration in GitHub Actions before risky tools merge.
4
+
5
+ `mcp-guard` finds risky shell startup commands, leaked secret-like values, broad filesystem access, remote MCP endpoints, dangerous command patterns, and unpinned remote package runners.
6
+
7
+ ## Usage
8
+
9
+ ```yaml
10
+ name: mcp-guard
11
+
12
+ on:
13
+ pull_request:
14
+ push:
15
+ branches: [main]
16
+
17
+ permissions:
18
+ contents: read
19
+
20
+ jobs:
21
+ scan:
22
+ runs-on: ubuntu-latest
23
+ steps:
24
+ - uses: actions/checkout@v4
25
+ - uses: ChaoYue0307/mcp-guard-action@v0.3.1
26
+ with:
27
+ fail-on: high
28
+ ```
29
+
30
+ ## Upload SARIF to GitHub Security
31
+
32
+ ```yaml
33
+ permissions:
34
+ contents: read
35
+ security-events: write
36
+
37
+ jobs:
38
+ scan:
39
+ runs-on: ubuntu-latest
40
+ steps:
41
+ - uses: actions/checkout@v4
42
+ - uses: ChaoYue0307/mcp-guard-action@v0.3.1
43
+ with:
44
+ config: .mcp.json
45
+ fail-on: high
46
+ upload-sarif: "true"
47
+ ```
48
+
49
+ ## Inputs
50
+
51
+ | Input | Default | Description |
52
+ | --- | --- | --- |
53
+ | `config` | empty | Optional MCP config path. Empty scans default project and user config locations. |
54
+ | `fail-on` | `high` | Fails the job for `critical`, `high`, `medium`, or `low` findings. Use `none` for report-only mode. |
55
+ | `output-dir` | `mcp-guard-report` | Directory for generated reports. |
56
+ | `upload-artifact` | `true` | Uploads generated reports as a workflow artifact. |
57
+ | `upload-sarif` | `false` | Uploads SARIF to GitHub code scanning. Requires `security-events: write`. |
58
+ | `artifact-name` | `mcp-guard-report` | Name of the uploaded artifact. |
59
+
60
+ ## Outputs
61
+
62
+ | Output | Description |
63
+ | --- | --- |
64
+ | `markdown-report` | Path to the generated Markdown report. |
65
+ | `html-report` | Path to the generated HTML report. |
66
+ | `json-report` | Path to the generated JSON report. |
67
+ | `sarif-report` | Path to the generated SARIF report. |
68
+ | `exit-code` | `0` when below threshold, `2` when findings met the threshold. |
69
+
70
+ ## Reports
71
+
72
+ The action generates:
73
+
74
+ - Markdown for pull request review.
75
+ - HTML for review-ready artifacts.
76
+ - JSON for automation.
77
+ - SARIF 2.1.0 for GitHub code scanning.
78
+
79
+ Secret-like values are redacted before reports are written.
80
+
81
+ ## Transparent Example
82
+
83
+ Inspect a committed input config, reproduction commands, and generated Markdown, HTML, JSON, and SARIF artifacts:
84
+
85
+ https://chaoyue0307.github.io/mcp-guard/e2e/
86
+
87
+ ## Links
88
+
89
+ - Product site: https://chaoyue0307.github.io/mcp-guard/
90
+ - Main repository: https://github.com/ChaoYue0307/mcp-guard
91
+ - npm package: https://www.npmjs.com/package/agent-mcp-guard
@@ -0,0 +1,119 @@
1
+ # GitHub Marketplace Plan
2
+
3
+ GitHub Marketplace has stricter packaging rules than normal action usage. The main `mcp-guard` repository should stay as the product repository because it contains the CLI, website, tests, CI, Pages, docs, and examples.
4
+
5
+ Official GitHub docs: https://docs.github.com/en/actions/how-tos/create-and-publish-actions/publish-in-github-marketplace
6
+
7
+ Use a dedicated public repository for Marketplace:
8
+
9
+ ```text
10
+ ChaoYue0307/mcp-guard-action
11
+ ```
12
+
13
+ ## Why a Dedicated Repository
14
+
15
+ GitHub requires Marketplace action repositories to:
16
+
17
+ - be public;
18
+ - contain a single root `action.yml` or `action.yaml`;
19
+ - have a unique action metadata `name`;
20
+ - avoid workflow files in the repository.
21
+
22
+ The main repo intentionally contains `.github/workflows`, so it should not be the Marketplace repo.
23
+
24
+ ## Prepared Action Package
25
+
26
+ Generate the clean action repository payload:
27
+
28
+ ```bash
29
+ npm run marketplace:prepare
30
+ ```
31
+
32
+ This creates:
33
+
34
+ ```text
35
+ dist/mcp-guard-action/
36
+ ```
37
+
38
+ The generated directory includes only the files needed by the action:
39
+
40
+ - `action.yml`
41
+ - `README.md`
42
+ - `LICENSE`
43
+ - `package.json`
44
+ - `bin/`
45
+ - `src/`
46
+ - `scripts/action-summary.js`
47
+
48
+ It intentionally excludes `.github/workflows`.
49
+
50
+ ## Recommended Marketplace Metadata
51
+
52
+ Repository name:
53
+
54
+ ```text
55
+ mcp-guard-action
56
+ ```
57
+
58
+ Action name:
59
+
60
+ ```text
61
+ mcp-guard MCP Security Scanner
62
+ ```
63
+
64
+ Description:
65
+
66
+ ```text
67
+ Scan MCP and AI agent tool configuration for risky commands, leaked secrets, broad filesystem access, remote endpoints, and unpinned packages.
68
+ ```
69
+
70
+ Primary category:
71
+
72
+ ```text
73
+ Security
74
+ ```
75
+
76
+ Secondary category:
77
+
78
+ ```text
79
+ Code quality
80
+ ```
81
+
82
+ Release title:
83
+
84
+ ```text
85
+ v0.3.1
86
+ ```
87
+
88
+ Release notes:
89
+
90
+ ```text
91
+ Initial Marketplace-ready release.
92
+
93
+ - Runs mcp-guard from the pinned action tag.
94
+ - Generates Markdown, HTML, JSON, and SARIF reports.
95
+ - Writes a GitHub Step Summary for pull request review.
96
+ - Can upload SARIF to GitHub code scanning with `upload-sarif: "true"`.
97
+ - Fails workflows by configurable severity threshold.
98
+ ```
99
+
100
+ ## Manual Publishing Steps
101
+
102
+ Completed:
103
+
104
+ - Public repository created: <https://github.com/ChaoYue0307/mcp-guard-action>
105
+ - `dist/mcp-guard-action/` exported, committed, and pushed.
106
+ - Release created: <https://github.com/ChaoYue0307/mcp-guard-action/releases/tag/v0.3.1>
107
+ - README, docs, and website examples now use:
108
+
109
+ ```yaml
110
+ - uses: ChaoYue0307/mcp-guard-action@v0.3.1
111
+ ```
112
+
113
+ Remaining Marketplace web step:
114
+
115
+ 1. Open `action.yml` or the release page on GitHub and click the Marketplace banner.
116
+ 2. Select `Publish this Action to the GitHub Marketplace`.
117
+ 3. Accept the GitHub Marketplace Developer Agreement if prompted.
118
+ 4. Choose `Security` as the primary category.
119
+ 5. Publish the release with 2FA.
@@ -98,5 +98,5 @@ Send this to 20 teams using MCP or AI agents:
98
98
  ```text
99
99
  I am building mcp-guard, an open-source security scanner for MCP and AI agent tool configs. It checks for risky shell access, unpinned remote packages, over-broad file permissions, exposed secrets, and unsafe remote server setup.
100
100
 
101
- I am doing a few early scans for teams using MCP in real workflows. If you send a redacted config or run the CLI locally, I can help interpret the report and suggest hardening steps.
101
+ I am collecting real-world MCP config patterns from teams using agents in real workflows. If you can share a redacted config or run the CLI locally, your feedback can help improve the scanner's rules and reports.
102
102
  ```
@@ -1,6 +1,8 @@
1
- # AI Agent/MCP Security Audit
1
+ # Future Service Concept
2
2
 
3
- This is the first paid service attached to `mcp-guard`.
3
+ This is a planning note for a possible future service attached to `mcp-guard`.
4
+
5
+ It is not currently advertised as an active consulting service. Keep public website and README copy focused on the automated scanner, early pilots, and CI setup feedback until this offer is actually available.
4
6
 
5
7
  ## Who It Is For
6
8
 
@@ -24,6 +26,6 @@ Use `docs/templates/audit-report-template.md` as the starting point for client d
24
26
  - Small startup: USD 1,000-3,000.
25
27
  - Funded team or private deployment pilot: USD 3,000-8,000.
26
28
 
27
- ## Sales Copy
29
+ ## Draft Sales Copy
28
30
 
29
- I am building `mcp-guard`, an open-source scanner for MCP and AI agent tool security. It checks for risky shell access, unpinned remote packages, over-broad file permissions, exposed secrets, and unsafe remote server setup. I am offering a few early MCP security audits for teams using agents in real workflows.
31
+ I am building `mcp-guard`, an open-source scanner for MCP and AI agent tool security. It checks for risky shell access, unpinned remote packages, over-broad file permissions, exposed secrets, and unsafe remote server setup. I am collecting real-world config patterns from teams using agents in real workflows.
package/docs/roadmap.md CHANGED
@@ -5,18 +5,18 @@
5
5
  ## Now
6
6
 
7
7
  - CLI config scanning.
8
- - Text, Markdown, HTML, and redacted JSON output.
8
+ - Text, Markdown, HTML, redacted JSON, and SARIF output.
9
9
  - Rules for shell wrappers, remote package runners, unpinned packages, broad filesystem access, secret-like env vars/headers, and remote MCP URLs.
10
10
  - CI usage with `--fail-on`.
11
- - GitHub Action wrapper that uploads Markdown, HTML, and JSON reports as artifacts.
11
+ - GitHub Action wrapper that writes a job summary, uploads Markdown/HTML/JSON/SARIF artifacts, and can upload SARIF to GitHub code scanning.
12
12
 
13
13
  ## Next
14
14
 
15
15
  1. More MCP client discovery paths.
16
16
  2. Rule packs mapped to MCP security best practices.
17
- 3. `mcp-guard audit` mode for client-ready reports.
18
- 4. Policy file for approved commands, packages, directories, and remote URLs.
19
- 5. Baseline mode: accept known findings and fail only on new risks.
17
+ 3. Policy file for approved commands, packages, directories, and remote URLs.
18
+ 4. Baseline mode: accept known findings and fail only on new risks.
19
+ 5. `mcp-guard audit` mode for review-ready reports.
20
20
 
21
21
  ## Later
22
22