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 +109 -2
- package/dist/security/openssf-client.d.ts +1 -1
- package/dist/security/openssf-client.d.ts.map +1 -1
- package/dist/security/openssf-client.js +27 -5
- package/dist/security/openssf-client.js.map +1 -1
- package/dist/security/types.d.ts +2 -0
- package/dist/security/types.d.ts.map +1 -1
- package/dist/tools/analyze-code-scanning.d.ts +2 -0
- package/dist/tools/analyze-code-scanning.d.ts.map +1 -1
- package/dist/tools/analyze-code-scanning.js +8 -4
- package/dist/tools/analyze-code-scanning.js.map +1 -1
- package/dist/tools/get-health-score.d.ts +1 -0
- package/dist/tools/get-health-score.d.ts.map +1 -1
- package/dist/tools/get-health-score.js +15 -1
- package/dist/tools/get-health-score.js.map +1 -1
- package/package.json +11 -2
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
|
-
|
|
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,
|
|
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.
|
|
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
|
|
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,
|
|
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;
|
|
1
|
+
{"version":3,"file":"openssf-client.js","sourceRoot":"","sources":["../../src/security/openssf-client.ts"],"names":[],"mappings":"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"}
|
package/dist/security/types.d.ts
CHANGED
|
@@ -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;
|
|
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;
|
|
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)
|
|
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
|
|
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":"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"}
|
|
@@ -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;
|
|
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,
|
|
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;
|
|
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.
|
|
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
|
-
"
|
|
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",
|