projectpulse-mcp 1.8.3 โ†’ 1.9.0

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
@@ -18,6 +18,22 @@
18
18
 
19
19
  This [Model Context Protocol](https://modelcontextprotocol.io/) (MCP) server gives AI assistants the ability to analyze health, security, CI/CD status, and delivery metrics of any GitHub repository โ€” directly from your conversations.
20
20
 
21
+ ## ๐Ÿ“‘ Table of Contents
22
+
23
+ - [Features](#-features)
24
+ - [Examples](#-examples)
25
+ - [Use Cases](#-use-cases)
26
+ - [Prerequisites](#-prerequisites)
27
+ - [Quick Start](#-quick-start)
28
+ - [Tools](#๏ธ-tools)
29
+ - [Compatibility](#-compatibility)
30
+ - [Architecture](#-architecture)
31
+ - [Transport Modes](#-transport-modes)
32
+ - [Configuration](#๏ธ-configuration)
33
+ - [Testing](#-testing)
34
+ - [Contributing](#-contributing)
35
+ - [License](#-license)
36
+
21
37
  ## โœจ Features
22
38
 
23
39
  - ๐Ÿฅ **Health Score** โ€” comprehensive 0-100 score with grade (A-F), category breakdown, and improvement suggestions
@@ -106,6 +122,12 @@ This [Model Context Protocol](https://modelcontextprotocol.io/) (MCP) server giv
106
122
 
107
123
  ---
108
124
 
125
+ ## ๐Ÿ“‹ Prerequisites
126
+
127
+ - **Node.js** v18 or later โ€” [download](https://nodejs.org/)
128
+ - **npm** (included with Node.js)
129
+ - **GitHub Personal Access Token** (optional for public repos, required for private repos and security data)
130
+
109
131
  ## ๐Ÿš€ Quick Start
110
132
 
111
133
  ### Claude Code (CLI)
@@ -283,6 +305,61 @@ New `get_dora_metrics` tool calculates proxy [DORA metrics](https://dora.dev/) f
283
305
 
284
306
  Metrics return `null` when insufficient data is available โ€” works safely on any repository.
285
307
 
308
+ ## ๐Ÿ”Œ Compatibility
309
+
310
+ ProjectPulse works with any MCP-compatible client. Tested with:
311
+
312
+ | Client | Transport | Status |
313
+ | --- | --- | --- |
314
+ | [Claude Desktop](https://claude.ai/download) | stdio | โœ… Tested |
315
+ | [Claude Code (CLI)](https://docs.anthropic.com/en/docs/claude-code) | stdio | โœ… Tested |
316
+ | [Cursor](https://cursor.sh/) | stdio | โœ… Tested |
317
+ | [Windsurf](https://codeium.com/windsurf) | stdio | โœ… Tested |
318
+ | [MCP Inspector](https://modelcontextprotocol.io/docs/tools/inspector) | stdio | โœ… Tested |
319
+ | Docker / Remote | HTTP | โœ… Tested |
320
+ | Any MCP client | stdio or HTTP | โœ… Compatible |
321
+
322
+ ## ๐Ÿ—๏ธ Architecture
323
+
324
+ ```
325
+ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
326
+ โ”‚ MCP Client โ”‚
327
+ โ”‚ (Claude, Cursor, Windsurf, etc.) โ”‚
328
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
329
+ โ”‚ stdio or HTTP
330
+ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
331
+ โ”‚ ProjectPulse MCP Server โ”‚
332
+ โ”‚ โ”‚
333
+ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
334
+ โ”‚ โ”‚ Tool Layer โ”‚ โ”‚ Transport โ”‚ โ”‚
335
+ โ”‚ โ”‚ (8 tools) โ”‚ โ”‚ stdio/HTTP โ”‚ โ”‚
336
+ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
337
+ โ”‚ โ”‚ โ”‚
338
+ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
339
+ โ”‚ โ”‚ GitHub API โ”‚ โ”‚ OpenSSF โ”‚ โ”‚
340
+ โ”‚ โ”‚ (Octokit) โ”‚ โ”‚ Scorecard โ”‚ โ”‚
341
+ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
342
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
343
+ ```
344
+
345
+ - **Tool layer**: 8 independent tools, each in its own file (`src/tools/`)
346
+ - **GitHub API**: all calls through a shared Octokit client (`src/github/client.ts`) with rate-limit handling
347
+ - **OpenSSF Scorecard**: integrated via public API for security scoring
348
+ - **Input validation**: Zod schemas at the MCP boundary
349
+ - **Transport**: stdio (default) or Streamable HTTP โ€” configurable via environment variables
350
+
351
+ ## ๐Ÿšข Transport Modes
352
+
353
+ | | stdio (default) | HTTP |
354
+ | --- | --- | --- |
355
+ | **Activation** | `npx projectpulse-mcp` | `MCP_TRANSPORT=http node dist/index.js` |
356
+ | **Best for** | Local MCP clients | Docker, remote, cross-runtime |
357
+ | **Health check** | N/A | `GET /` โ†’ JSON |
358
+ | **MCP endpoint** | stdin/stdout | `POST /mcp` |
359
+ | **Config needed** | None | `MCP_TRANSPORT=http`, optionally `MCP_PORT` |
360
+
361
+ See [What's New: HTTP Transport](#http-transport-v170) for Docker examples.
362
+
286
363
  ## โš™๏ธ Configuration
287
364
 
288
365
  ### GITHUB_TOKEN
@@ -307,14 +384,44 @@ Generate with `repo` + `security_events` scopes.
307
384
  GITHUB_TOKEN=ghp_your_token_here
308
385
  ```
309
386
 
387
+ ## ๐Ÿงช Testing
388
+
389
+ All 8 tools have dedicated test suites. Tests use [Vitest](https://vitest.dev/) with mocked GitHub API responses.
390
+
391
+ ```bash
392
+ # Run all tests
393
+ npm test
394
+
395
+ # Watch mode
396
+ npm run test:watch
397
+ ```
398
+
399
+ | Tool | Test file | Status |
400
+ | --- | --- | --- |
401
+ | `get_health_score` | `src/tools/get-health-score.test.ts` | โœ… |
402
+ | `get_dora_metrics` | `src/tools/get-dora-metrics.test.ts` | โœ… |
403
+ | `compare_repos` | `src/tools/compare-repos.test.ts` | โœ… |
404
+ | `get_repo_health` | `src/tools/get-repo-health.test.ts` | โœ… |
405
+ | `analyze_dependencies` | `src/tools/analyze-dependencies.test.ts` | โœ… |
406
+ | `check_ci_status` | `src/tools/check-ci-status.test.ts` | โœ… |
407
+ | `analyze_code_scanning` | `src/tools/analyze-code-scanning.test.ts` | โœ… |
408
+ | `check_best_practices` | `src/tools/check-best-practices.test.ts` | โœ… |
409
+
310
410
  ## ๐Ÿ‘ค Author
311
411
 
312
412
  **alexbypa** โ€” [GitHub](https://github.com/alexbypa) ยท [npm](https://www.npmjs.com/~alexbypa)
313
413
 
314
414
  ## ๐Ÿค Contributing
315
415
 
316
- Contributions, issues and feature requests are welcome!
317
- Feel free to check the [issues page](https://github.com/alexbypa/github-projectpulse-mcp/issues).
416
+ Contributions, issues, and feature requests are welcome!
417
+
418
+ 1. Fork the repository
419
+ 2. Create your feature branch (`git checkout -b feature/amazing-feature`)
420
+ 3. Run tests (`npm test`) and ensure they pass
421
+ 4. Commit your changes
422
+ 5. Push to the branch and open a Pull Request
423
+
424
+ See the [issues page](https://github.com/alexbypa/github-projectpulse-mcp/issues) for open tasks and bug reports.
318
425
 
319
426
  ## โญ Show your support
320
427
 
@@ -1,4 +1,4 @@
1
1
  import { OpenSSFCheck, OpenSSFResult } from "./types.js";
2
2
  export declare function fetchOpenSSFScore(owner: string, repo: string): Promise<OpenSSFResult | null>;
3
- export declare function calculateOpenSSFResult(checks: OpenSSFCheck[]): OpenSSFResult | null;
3
+ export declare function calculateOpenSSFResult(checks: OpenSSFCheck[], officialScore: number): OpenSSFResult | null;
4
4
  //# sourceMappingURL=openssf-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"openssf-client.d.ts","sourceRoot":"","sources":["../../src/security/openssf-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAIzD,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAmBlG;AAID,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,aAAa,GAAG,IAAI,CAenF"}
1
+ {"version":3,"file":"openssf-client.d.ts","sourceRoot":"","sources":["../../src/security/openssf-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAIzD,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAsBlG;AAID,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,aAAa,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAgC1G"}
@@ -8,27 +8,49 @@ export async function fetchOpenSSFScore(owner, repo) {
8
8
  return null;
9
9
  }
10
10
  const data = await response.json();
11
+ if (typeof data.score !== "number" || data.score < 0) {
12
+ return null;
13
+ }
11
14
  const checks = data.checks;
12
- return calculateOpenSSFResult(checks);
15
+ return calculateOpenSSFResult(checks, data.score);
13
16
  }
14
17
  catch (error) {
15
- console.debug("Error fetching OpenSSF score:", error);
18
+ console.error("Error fetching OpenSSF score:", error);
16
19
  return null;
17
20
  }
18
21
  }
19
22
  const SECURITY_CHECKS = new Set(["Binary-Artifacts", "Fuzzing", "Dependency-Update-Tool", "Branch-Protection", "Code-Review", "Dangerous-Workflow", "Pinned-Dependencies", "SAST", "Security-Policy", "Signed-Releases", "Token-Permissions", "Vulnerabilities"]);
20
- export function calculateOpenSSFResult(checks) {
23
+ export function calculateOpenSSFResult(checks, officialScore) {
21
24
  const securityChecks = checks.filter(check => SECURITY_CHECKS.has(check.name));
22
25
  const applicableChecks = securityChecks.filter(c => c.score !== -1); // solo quelli applicabili
23
26
  if (applicableChecks.length === 0) {
24
27
  return null;
25
28
  }
26
- const score = Math.round((applicableChecks.reduce((sum, item) => sum + item.score, 0) / applicableChecks.length) * 10);
29
+ const securityChecksAverage = Math.round((applicableChecks.reduce((sum, item) => sum + item.score, 0) / applicableChecks.length) * 10);
30
+ const score = Math.round(officialScore * 10);
31
+ const sorted = [...checks]
32
+ .map(c => ({
33
+ name: c.name,
34
+ score: c.score,
35
+ reason: c.reason,
36
+ documentation: { url: c.documentation?.url ?? "" }
37
+ }))
38
+ .sort((a, b) => {
39
+ if (a.score === b.score)
40
+ return 0;
41
+ if (a.score === -1)
42
+ return 1;
43
+ if (b.score === -1)
44
+ return -1;
45
+ return a.score - b.score;
46
+ });
27
47
  return {
28
48
  score: score,
49
+ securityChecksAverage: securityChecksAverage,
29
50
  checksUsed: applicableChecks.length,
30
51
  checksTotal: securityChecks.length,
31
- details: `${applicableChecks.length}/${securityChecks.length} security checks, score ${score}/100`
52
+ details: `${applicableChecks.length}/${securityChecks.length} security checks, official ${score}/100, security-checks avg ${securityChecksAverage}/100`,
53
+ checks: sorted
32
54
  };
33
55
  }
34
56
  //# sourceMappingURL=openssf-client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"openssf-client.js","sourceRoot":"","sources":["../../src/security/openssf-client.ts"],"names":[],"mappings":"AAEA,MAAM,QAAQ,GAAG,wDAAwD,CAAC;AAE1E,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,KAAa,EAAE,IAAY;IAC/D,IAAI,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,IAAI,KAAK,IAAI,IAAI,EAAE,EAAE;YACzD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;SACpC,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,MAAM,GAAmB,IAAI,CAAC,MAAM,CAAC;QAE3C,OAAO,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAG1C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC;AAED,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,kBAAkB,EAAE,SAAS,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,aAAa,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,iBAAiB,CAAC,CAAC,CAAC;AAElQ,MAAM,UAAU,sBAAsB,CAAC,MAAsB;IACzD,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/E,MAAM,gBAAgB,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA,0BAA0B;IAE9F,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IAEvH,OAAO;QACH,KAAK,EAAE,KAAK;QACZ,UAAU,EAAE,gBAAgB,CAAC,MAAM;QACnC,WAAW,EAAE,cAAc,CAAC,MAAM;QAClC,OAAO,EAAE,GAAG,gBAAgB,CAAC,MAAM,IAAI,cAAc,CAAC,MAAM,2BAA2B,KAAK,MAAM;KACrG,CAAA;AACL,CAAC"}
1
+ {"version":3,"file":"openssf-client.js","sourceRoot":"","sources":["../../src/security/openssf-client.ts"],"names":[],"mappings":"AAEA,MAAM,QAAQ,GAAG,wDAAwD,CAAC;AAE1E,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,KAAa,EAAE,IAAY;IAC/D,IAAI,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,IAAI,KAAK,IAAI,IAAI,EAAE,EAAE;YACzD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;SACpC,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YACnD,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,MAAM,MAAM,GAAmB,IAAI,CAAC,MAAM,CAAC;QAE3C,OAAO,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAGtD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC;AAED,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,kBAAkB,EAAE,SAAS,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,aAAa,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,iBAAiB,CAAC,CAAC,CAAC;AAElQ,MAAM,UAAU,sBAAsB,CAAC,MAAsB,EAAE,aAAqB;IAChF,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/E,MAAM,gBAAgB,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA,0BAA0B;IAE9F,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IACvI,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,EAAE,CAAC,CAAC;IAE7C,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC;SACrB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,aAAa,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,aAAa,EAAE,GAAG,IAAI,EAAE,EAAE;KACrD,CAAC,CAAC;SACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACX,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK;YAAE,OAAO,CAAC,CAAC;QAClC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC;QAC9B,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEP,OAAO;QACH,KAAK,EAAE,KAAK;QACZ,qBAAqB,EAAE,qBAAqB;QAC5C,UAAU,EAAE,gBAAgB,CAAC,MAAM;QACnC,WAAW,EAAE,cAAc,CAAC,MAAM;QAClC,OAAO,EAAE,GAAG,gBAAgB,CAAC,MAAM,IAAI,cAAc,CAAC,MAAM,8BAA8B,KAAK,6BAA6B,qBAAqB,MAAM;QACvJ,MAAM,EAAE,MAAM;KACjB,CAAC;AACN,CAAC"}
@@ -8,8 +8,10 @@ export type OpenSSFCheck = {
8
8
  };
9
9
  export type OpenSSFResult = {
10
10
  score: number;
11
+ securityChecksAverage: number;
11
12
  checksUsed: number;
12
13
  checksTotal: number;
13
14
  details: string;
15
+ checks: OpenSSFCheck[];
14
16
  };
15
17
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/security/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/security/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB,EAAE,MAAM,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,YAAY,EAAE,CAAC;CAC1B,CAAC"}
@@ -17,6 +17,8 @@ export declare function executeAnalyzeCodeScanning(input: z.infer<typeof inputSc
17
17
  alerts: {
18
18
  rule_id: string | null | undefined;
19
19
  severity: "error" | "warning" | "none" | "note" | null | undefined;
20
+ tool_name: string | null;
21
+ security_severity_level: "critical" | "high" | "medium" | "low" | null;
20
22
  rule_description: string | undefined;
21
23
  state: "open" | "dismissed" | "fixed" | null;
22
24
  most_recent_instance_path: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"analyze-code-scanning.d.ts","sourceRoot":"","sources":["../../src/tools/analyze-code-scanning.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,QAAA,MAAM,WAAW;;;;;;iBASf,CAAC;AAwGH,wBAAsB,0BAA0B,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsElF;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAyBnE"}
1
+ {"version":3,"file":"analyze-code-scanning.d.ts","sourceRoot":"","sources":["../../src/tools/analyze-code-scanning.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,QAAA,MAAM,WAAW;;;;;;iBASf,CAAC;AA0GH,wBAAsB,0BAA0B,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwElF;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAyBnE"}
@@ -14,6 +14,8 @@ const outputSchema = z.object({
14
14
  alerts: z.array(z.object({
15
15
  rule_id: z.string().nullable(),
16
16
  severity: z.string().nullable(),
17
+ tool_name: z.string().nullable(),
18
+ security_severity_level: z.string().nullable(),
17
19
  rule_description: z.string().nullable(),
18
20
  state: z.string(),
19
21
  most_recent_instance_path: z.string().optional(),
@@ -126,6 +128,8 @@ export async function executeAnalyzeCodeScanning(input) {
126
128
  const result = data.map((alert) => ({
127
129
  rule_id: alert.rule.id,
128
130
  severity: alert.rule.severity,
131
+ tool_name: alert.tool?.name ?? null,
132
+ security_severity_level: alert.rule.security_severity_level ?? null,
129
133
  rule_description: alert.rule.description,
130
134
  state: alert.state,
131
135
  most_recent_instance_path: alert.most_recent_instance.location?.path,
@@ -165,13 +169,13 @@ export async function executeAnalyzeCodeScanning(input) {
165
169
  }
166
170
  export function registerAnalyzeCodeScanning(server) {
167
171
  server.registerTool("analyze_code_scanning", {
168
- description: `Fetches or triggers open Code Scanning (CodeQL) alerts for a GitHub repository.
169
- - Side effects: Read-only by default. If trigger_scan=true, writes to GitHub Actions by creating a workflow_dispatch event.
172
+ description: `Fetches or triggers open Code Scanning alerts from all tools (CodeQL, Scorecard, third-party) for a GitHub repository. Note: trigger_scan is CodeQL-only.
173
+ - Side effects: Read-only by default. If trigger_scan=true (CodeQL-only), writes to GitHub Actions by creating a workflow_dispatch event.
170
174
  - Data sources: GitHub REST API (code-scanning/alerts and actions).
171
175
  - Auth requirements: Requires GITHUB_TOKEN with appropriate permissions (security-events).
172
176
  - Rate limits: Subject to standard GitHub API limits.
173
- - Return shape: Returns a JSON array of alert objects including rule_id, severity, rule_description, state, location paths, and html_url.
174
- - Usage guidelines: Use this tool ONLY for deep static code vulnerability scanning (CodeQL). DO NOT use this tool for other checks:
177
+ - Return shape: Returns a JSON array of alert objects including tool_name, rule_id, severity (error/warning/note), security_severity_level (critical/high/medium/low as in GitHub UI, or null), rule_description, state, location paths, and html_url.
178
+ - Usage guidelines: Use this tool ONLY for deep static analysis code vulnerability scanning. DO NOT use this tool for other checks:
175
179
  - For package/dependency vulnerabilities, use 'analyze_dependencies' instead.
176
180
  - For a computed A-F health score grading, use 'get_health_score' instead.
177
181
  - For checking standard CI/CD workflow statuses, use 'check_ci_status' instead.`,
@@ -1 +1 @@
1
- {"version":3,"file":"analyze-code-scanning.js","sourceRoot":"","sources":["../../src/tools/analyze-code-scanning.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analyze-code-scanning.js","sourceRoot":"","sources":["../../src/tools/analyze-code-scanning.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IACzB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;IACpF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;IACjE,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;SAC9C,QAAQ,CAAC,kFAAkF,CAAC;IACjG,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;SACnD,QAAQ,CAAC,8DAA8D,CAAC;IAC7E,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;SACnD,QAAQ,CAAC,4CAA4C,CAAC;CAC9D,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1B,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACrB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC9B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC/B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,uBAAuB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC9C,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACvC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;QACjB,yBAAyB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChD,+BAA+B,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACtD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;QACpB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;QACxB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACnC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC/B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;KACzB,CAAC,CAAC;IACH,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAEH,KAAK,UAAU,sBAAsB,CAAC,KAAa,EAAE,IAAY;IAC7D,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAE7B,IAAI,CAAC;QACD,mCAAmC;QACnC,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,MAAM,OAAO,CAAC,OAAO,CAChD,uDAAuD,EACvD,EAAE,KAAK,EAAE,IAAI,EAAE,CAClB,CAAC;QACF,IAAI,YAAY,CAAC,KAAK,KAAK,YAAY,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CACX,wCAAwC,YAAY,CAAC,QAAQ,kBAAkB,YAAY,CAAC,UAAU,KAAK;gBAC3G,yGAAyG,CAC5G,CAAC;QACN,CAAC;IACL,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QAClB,sEAAsE;QACtE,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAC,EAAE,CAAC;YACxE,MAAM,CAAC,CAAC;QACZ,CAAC;QACD,kEAAkE;IACtE,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACrF,MAAM,cAAc,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAChD,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACvC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAC1C,CAAC;IACF,IAAI,CAAC,cAAc,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE,CAAC;AAChE,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,KAAa,EAAE,IAAY,EAAE,UAAkB;IAC1E,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACpE,IAAI,CAAC;QACD,MAAM,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC;YACzC,KAAK;YACL,IAAI;YACJ,WAAW,EAAE,UAAU;YACvB,GAAG,EAAE,QAAQ,CAAC,cAAc;SAC/B,CAAC,CAAC;IACP,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QAClB,MAAM,OAAO,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,yEAAyE,OAAO,EAAE,CAAC,CAAC;IACxG,CAAC;AACL,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,KAAa,EAAE,IAAY,EAAE,UAAkB,EAAE,cAAoB;IACjG,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACzB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC;YAC1D,KAAK;YACL,IAAI;YACJ,WAAW,EAAE,UAAU;YACvB,QAAQ,EAAE,CAAC;SACd,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,cAAc,CAAC,CAAC;QACnF,IAAI,GAAG,EAAE,CAAC;YACN,OAAO,GAAG,CAAC,EAAE,CAAC;QAClB,CAAC;QACD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;AAClE,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,KAAa,EAAE,IAAY,EAAE,KAAa,EAAE,UAAkB,EAAE,WAAmB;IAChH,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAG,UAAU,GAAG,IAAI,CAAC;IACpC,MAAM,UAAU,GAAG,WAAW,GAAG,IAAI,CAAC;IAEtC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,SAAS,EAAE,CAAC;QACxC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3F,IAAI,GAAG,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAC7B,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC;QAC9D,CAAC;QACD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AACvD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,KAAkC;IAC/E,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,GAAG,KAAK,CAAC;IAEzF,IAAI,OAAO,GAAG,EAAE,CAAC;IAEjB,IAAI,YAAY,EAAE,CAAC;QACf,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAE3D,4CAA4C;YAC5C,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;YAEnD,MAAM,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;YAChD,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;YAC/E,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,CAAC;YAExG,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBAChC,OAAO,GAAG,+DAA+D,oBAAoB,iDAAiD,CAAC;YACnJ,CAAC;iBAAM,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;gBACzC,OAAO,GAAG,mDAAmD,MAAM,CAAC,UAAU,yCAAyC,CAAC;YAC5H,CAAC;QACL,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO,GAAG,4CAA4C,OAAO,yCAAyC,CAAC;QAC3G,CAAC;IACL,CAAC;IAED,IAAI,CAAC;QACD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,EAAE,CAAC,YAAY,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACnG,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAChC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE;YACtB,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ;YAC7B,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI;YACnC,uBAAuB,EAAE,KAAK,CAAC,IAAI,CAAC,uBAAuB,IAAI,IAAI;YACnE,gBAAgB,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW;YACxC,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,yBAAyB,EAAE,KAAK,CAAC,oBAAoB,CAAC,QAAQ,EAAE,IAAI;YACpE,+BAA+B,EAAE,KAAK,CAAC,oBAAoB,CAAC,QAAQ,EAAE,UAAU;YAChF,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,YAAY,EAAE,KAAK,CAAC,MAAM;YAC1B,YAAY,EAAE,KAAK,CAAC,oBAAoB,CAAC,OAAO,EAAE,IAAI;YACtD,QAAQ,EAAE,KAAK,CAAC,oBAAoB,CAAC,QAAQ,EAAE,QAAQ;YACvD,UAAU,EAAE,KAAK,CAAC,UAAU;SAC/B,CAAC,CAAC,CAAC;QAEJ,MAAM,QAAQ,GAAG;YACb,MAAM,EAAE,MAAM;YACd,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClC,CAAC;QAEF,OAAO;YACH,OAAO,EAAE,CAAC;oBACN,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;iBAC1C,CAAC;YACF,iBAAiB,EAAE,QAAQ;SAC9B,CAAC;IAEN,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,IAAK,KAA6B,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAChD,OAAO;gBACH,OAAO,EAAE,CAAC;wBACN,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACjB,OAAO,EAAE,2CAA2C;4BACpD,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;yBAClC,EAAE,IAAI,EAAE,CAAC,CAAC;qBACd,CAAC;aACL,CAAC;QACN,CAAC;QACD,MAAM,KAAK,CAAC;IAChB,CAAC;AACL,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,MAAiB;IACzD,MAAM,CAAC,YAAY,CACf,uBAAuB,EACvB;QACI,WAAW,EAAE;;;;;;;;;kFASyD;QACtE,WAAW;QACX,YAAY;QACZ,WAAW,EAAE;YACT,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,IAAI;SACtB;KACJ,EACD,0BAA0B,CAC7B,CAAC;AACN,CAAC"}
@@ -18,6 +18,7 @@ export declare function executeGetHealthScore({ owner, repo }: {
18
18
  } | null;
19
19
  recommendations: import("../types/health.js").Recommendation[];
20
20
  badgeSnippet: string;
21
+ openssf: import("../security/types.js").OpenSSFResult | null;
21
22
  };
22
23
  }>;
23
24
  export declare function registerGetHealthScore(server: McpServer): void;
@@ -1 +1 @@
1
- {"version":3,"file":"get-health-score.d.ts","sourceRoot":"","sources":["../../src/tools/get-health-score.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAuDpE,wBAAsB,qBAAqB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;;;;;;;GA8E3F;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA0B9D"}
1
+ {"version":3,"file":"get-health-score.d.ts","sourceRoot":"","sources":["../../src/tools/get-health-score.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAoEpE,wBAAsB,qBAAqB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;;;;;;;;GA+E3F;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA0B9D"}
@@ -37,6 +37,19 @@ const outputSchema = z.object({
37
37
  }).nullable(),
38
38
  recommendations: z.array(recommendationSchema),
39
39
  badgeSnippet: z.string(),
40
+ openssf: z.object({
41
+ score: z.number(),
42
+ securityChecksAverage: z.number(),
43
+ checksUsed: z.number(),
44
+ checksTotal: z.number(),
45
+ details: z.string(),
46
+ checks: z.array(z.object({
47
+ name: z.string(),
48
+ score: z.number(),
49
+ reason: z.string(),
50
+ documentation: z.object({ url: z.string() })
51
+ }))
52
+ }).nullable(),
40
53
  });
41
54
  export async function executeGetHealthScore({ owner, repo }) {
42
55
  const octokit = getOctokit();
@@ -93,6 +106,7 @@ export async function executeGetHealthScore({ owner, repo }) {
93
106
  } : null,
94
107
  recommendations,
95
108
  badgeSnippet,
109
+ openssf: openssfResult ?? null,
96
110
  };
97
111
  await saveSnapshot(owner, repo, report);
98
112
  return {
@@ -110,7 +124,7 @@ export function registerGetHealthScore(server) {
110
124
  - Data sources: GitHub REST API (repos, actions, dependabot) and OpenSSF Scorecard API.
111
125
  - Auth requirements: No authentication required for public repositories. Uses configured token if available.
112
126
  - Rate limits: Subject to standard GitHub API limits (heavy usage across multiple endpoints).
113
- - Return shape: Returns a JSON object with a grade (A-F), total score, detailed category breakdown (CI, freshness, security, community, maintenance), improvement suggestions, and historical trend data.
127
+ - Return shape: Returns a JSON object with a grade (A-F), total score, detailed category breakdown (CI, freshness, security, community, maintenance), improvement suggestions, historical trend data, and an 'openssf' object containing official score, securityChecksAverage, and individual 'checks' (worst score first).
114
128
  - Usage guidelines: Use this tool ONLY for deep analytical grading and overall repository health assessment. DO NOT use this tool for quick metadata checks:
115
129
  - For basic raw metadata (stars, language, etc.), use 'get_repo_health' instead.
116
130
  - For raw CI workflow statuses, use 'check_ci_status' instead.
@@ -1 +1 @@
1
- {"version":3,"file":"get-health-score.js","sourceRoot":"","sources":["../../src/tools/get-health-score.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAE9E,OAAO,EACH,gBAAgB,EAChB,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,yBAAyB,EACzB,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,GACvB,MAAM,4BAA4B,CAAC;AAEpC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IACzB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;IACpF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;CACpE,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC;QACrC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;QACjB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;QAClB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;KACrB,CAAC,CAAC;IACH,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAChC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;CAC3B,CAAC,CAAC;AAEH,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC3C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;CACrB,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1B,MAAM,EAAE,kBAAkB;IAC1B,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACZ,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;QACzB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;QACzB,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE;QAC7B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;QACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;KACxB,CAAC,CAAC,QAAQ,EAAE;IACb,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC;IAC9C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;CAC3B,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAmC;IACxF,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAE7B,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC1D,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAClC,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QACtE,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC;KACjC,CAAC,CAAC;IAEH,IAAI,WAAW,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;IAC9D,IAAI,CAAC;QACD,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACrF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;gBACzB,MAAM,GAAG,GAAG,KAAK,CAAC,iBAAiB,CAAC,QAAoC,CAAC;gBACzE,IAAI,GAAG,IAAI,WAAW;oBAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,CAAC;QACL,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACL,mDAAmD;IACvD,CAAC;IAED,MAAM,UAAU,GAAG;QACf,EAAE,EAAE,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAoB,CAAC;QACxD,SAAS,EAAE,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACvF,QAAQ,EAAE,sBAAsB,CAAC,WAAW,EAAE,aAAa,EAAE,KAAK,CAAC;QACnE,SAAS,EAAE,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;QAC9F,WAAW,EAAE,yBAAyB,CAClC,QAAQ,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI,EAC9B,QAAQ,CAAC,IAAI,CAAC,WAAW,KAAK,IAAI,EAClC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CACzB;KACJ,CAAC;IAGF,MAAM,gBAAgB,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAE5D,MAAM,MAAM,GAAG,oBAAoB,CAAC,GAAG,KAAK,IAAI,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;IAEpE,MAAM,iBAAiB,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACzI,MAAM,QAAQ,GAAI,QAAQ,CAAC,IAAI,CAAC,aAAsD,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;IAEtI,MAAM,eAAe,GAAG,uBAAuB,CAAC,UAAU,EAAE;QACxD,QAAQ;QACR,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM;QAC3C,iBAAiB;QACjB,MAAM,EAAE,WAAW;QACnB,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI;QAC1C,cAAc,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,KAAK,IAAI;QAClD,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ;QAChC,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,iBAAiB;QAC3C,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW;KACnC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAExD,MAAM,QAAQ,GAAG;QACb,MAAM;QACN,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC;YACtB,aAAa,EAAE,gBAAgB,CAAC,KAAK;YACrC,aAAa,EAAE,gBAAgB,CAAC,KAAK;YACrC,iBAAiB,EAAE,gBAAgB,CAAC,SAAS;YAC7C,SAAS,EAAE,MAAM,CAAC,KAAK,GAAG,gBAAgB,CAAC,KAAK;YAChD,SAAS,EAAE,MAAM,CAAC,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;SAC7G,CAAC,CAAC,CAAC,IAAI;QACR,eAAe;QACf,YAAY;KACf,CAAA;IAED,MAAM,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAExC,OAAO;QACH,OAAO,EAAE,CAAC;gBACN,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;aAC1C,CAAC;QACF,iBAAiB,EAAE,QAAQ;KAC9B,CAAC;AACN,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACpD,MAAM,CAAC,YAAY,CACf,kBAAkB,EAClB;QACI,WAAW,EAAE;;;;;;;;;;sDAU6B;QAC1C,WAAW;QACX,YAAY;QACZ,WAAW,EAAE;YACT,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,IAAI;SACtB;KACJ,EACD,qBAAqB,CACxB,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"get-health-score.js","sourceRoot":"","sources":["../../src/tools/get-health-score.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "projectpulse-mcp",
3
3
  "description": "MCP Server for GitHub repository health monitoring",
4
- "version": "1.8.3",
4
+ "version": "1.9.0",
5
5
  "mcpName": "io.github.alexbypa/github-projectpulse-mcp",
6
6
  "main": "dist/index.js",
7
7
  "scripts": {
@@ -12,11 +12,20 @@
12
12
  },
13
13
  "keywords": [
14
14
  "mcp",
15
+ "mcp-server",
16
+ "model-context-protocol",
15
17
  "github",
16
18
  "health",
17
19
  "monitoring",
18
20
  "ai",
19
- "Workflow"
21
+ "dora-metrics",
22
+ "security",
23
+ "ci-cd",
24
+ "code-scanning",
25
+ "dependabot",
26
+ "openssf-scorecard",
27
+ "devops",
28
+ "workflow"
20
29
  ],
21
30
  "author": "Alessandro Chiodo",
22
31
  "license": "MIT",