projectpulse-mcp 1.6.1 → 1.6.3
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 +85 -11
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
<a href="https://github.com/alexbypa/github-projectpulse-mcp/actions"><img src="https://img.shields.io/github/actions/workflow/status/alexbypa/github-projectpulse-mcp/ci.yml?label=tests" alt="tests" /></a>
|
|
11
11
|
<a href="https://github.com/alexbypa/github-projectpulse-mcp/stargazers"><img src="https://img.shields.io/github/stars/alexbypa/github-projectpulse-mcp" alt="stars" /></a>
|
|
12
12
|
<a href="https://www.npmjs.com/package/projectpulse-mcp"><img src="https://img.shields.io/npm/dt/projectpulse-mcp" alt="downloads" /></a>
|
|
13
|
+
<a href="https://scorecard.dev/viewer/?uri=github.com/alexbypa/github-projectpulse-mcp"><img src="https://img.shields.io/ossf-scorecard/github.com/alexbypa/github-projectpulse-mcp?label=openssf+scorecard" alt="OpenSSF Scorecard" /></a>
|
|
13
14
|
</p>
|
|
14
15
|
|
|
15
16
|
---
|
|
@@ -42,7 +43,22 @@ claude mcp add projectpulse -- npx projectpulse-mcp
|
|
|
42
43
|
|
|
43
44
|
### Claude Desktop
|
|
44
45
|
|
|
45
|
-
|
|
46
|
+
#### Step 1: Get a GitHub Token
|
|
47
|
+
|
|
48
|
+
1. Go to [GitHub Settings > Developer settings > Personal access tokens > Fine-grained tokens](https://github.com/settings/personal-access-tokens/new)
|
|
49
|
+
2. Give it a name (e.g., `projectpulse`)
|
|
50
|
+
3. Select the repositories you want to monitor (or "All repositories")
|
|
51
|
+
4. Under **Permissions**, grant **Read-only** access to:
|
|
52
|
+
- `Code scanning alerts`
|
|
53
|
+
- `Dependabot alerts`
|
|
54
|
+
- `Metadata` (enabled by default)
|
|
55
|
+
5. Click **Generate token** and copy it
|
|
56
|
+
|
|
57
|
+
#### Step 2: Configure Claude Desktop
|
|
58
|
+
|
|
59
|
+
1. Open Claude Desktop
|
|
60
|
+
2. Go to **Settings** (gear icon) > **Developer** > **Edit Config**
|
|
61
|
+
3. This opens `claude_desktop_config.json`. Add the `projectpulse` entry inside `"mcpServers"`:
|
|
46
62
|
|
|
47
63
|
```json
|
|
48
64
|
{
|
|
@@ -51,13 +67,32 @@ Add to your `claude_desktop_config.json` (`%APPDATA%\Claude\` on Windows, `~/Lib
|
|
|
51
67
|
"command": "npx",
|
|
52
68
|
"args": ["-y", "projectpulse-mcp"],
|
|
53
69
|
"env": {
|
|
54
|
-
"GITHUB_TOKEN": "
|
|
70
|
+
"GITHUB_TOKEN": "ghp_paste_your_token_here"
|
|
55
71
|
}
|
|
56
72
|
}
|
|
57
73
|
}
|
|
58
74
|
}
|
|
59
75
|
```
|
|
60
76
|
|
|
77
|
+
4. Save the file and **restart Claude Desktop**
|
|
78
|
+
|
|
79
|
+
#### Step 3: Verify it works
|
|
80
|
+
|
|
81
|
+
In a new Claude Desktop conversation, try asking:
|
|
82
|
+
|
|
83
|
+
> "Check the health score of facebook/react"
|
|
84
|
+
|
|
85
|
+
Claude should call the `get_health_score` tool and return an A-F grade with a detailed breakdown.
|
|
86
|
+
|
|
87
|
+
#### Troubleshooting
|
|
88
|
+
|
|
89
|
+
| Problem | Solution |
|
|
90
|
+
| --- | --- |
|
|
91
|
+
| Tools not showing up | Restart Claude Desktop after editing the config file |
|
|
92
|
+
| "Rate limit exceeded" errors | Make sure `GITHUB_TOKEN` is set correctly in the config |
|
|
93
|
+
| Dependabot/CodeQL data missing | Your token needs `Code scanning alerts` and `Dependabot alerts` permissions |
|
|
94
|
+
| `npx` not found | Install [Node.js](https://nodejs.org/) (v18 or later) and make sure `npx` is in your PATH |
|
|
95
|
+
|
|
61
96
|
### Other MCP Clients (Cursor, Windsurf, etc.)
|
|
62
97
|
|
|
63
98
|
Configure a new MCP server with:
|
|
@@ -68,15 +103,54 @@ Configure a new MCP server with:
|
|
|
68
103
|
|
|
69
104
|
## 🛠️ Tools
|
|
70
105
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
106
|
+
### `get_health_score`
|
|
107
|
+
Calculates a **0-100 health score** with an A-F grade. Evaluates 5 weighted categories: CI reliability (25%), code freshness (20%), security posture (25%), community activity (15%), and maintenance quality (15%). Returns actionable improvement suggestions for low-scoring categories. On repeated calls for the same repo, includes a **trend comparison** showing score change since last check. Queries multiple GitHub API endpoints and [OpenSSF Scorecard](https://scorecard.dev/).
|
|
108
|
+
|
|
109
|
+
**Side effect:** saves a trend snapshot to local disk (`~/.projectpulse/snapshots/`).
|
|
110
|
+
|
|
111
|
+
**Inputs:** `owner`, `repo`
|
|
112
|
+
**Try asking:** *"What's the health score of microsoft/vscode?"*
|
|
113
|
+
|
|
114
|
+
### `get_dora_metrics`
|
|
115
|
+
Calculates proxy [DORA metrics](https://dora.dev/) from public GitHub data: **Deployment Frequency** (from releases), **Lead Time for Changes** (PR created → merged), **Change Failure Rate** (CI failure percentage), and **Mean Time to Recovery** (CI failure → next success). Returns `null` for metrics with insufficient data. Queries multiple GitHub API endpoints (releases, pulls, actions) — heavier API usage than single-endpoint tools.
|
|
116
|
+
|
|
117
|
+
**Inputs:** `owner`, `repo`, `days` (optional, 7-90, default 30)
|
|
118
|
+
**Try asking:** *"Show me the DORA metrics for vercel/next.js over the last 60 days"*
|
|
119
|
+
|
|
120
|
+
### `compare_repos`
|
|
121
|
+
Compares health scores **side-by-side** for 2-5 repositories. Returns each repo's full health breakdown ranked by score. Useful for evaluating alternatives or benchmarking your project against similar ones. API calls are multiplied by the number of repos compared.
|
|
122
|
+
|
|
123
|
+
**Inputs:** `repos` (array of `{owner, repo}`)
|
|
124
|
+
**Try asking:** *"Compare the health of expressjs/express, fastify/fastify, and koajs/koa"*
|
|
125
|
+
|
|
126
|
+
### `get_repo_health`
|
|
127
|
+
Fetches **basic repository metadata**: stars, forks, open issues count, primary language, license, last push date, default branch, and archive status. Use this for a quick overview — for a computed grade, use `get_health_score` instead.
|
|
128
|
+
|
|
129
|
+
**Inputs:** `owner`, `repo`
|
|
130
|
+
**Try asking:** *"Give me general info about torvalds/linux"*
|
|
131
|
+
|
|
132
|
+
### `analyze_dependencies`
|
|
133
|
+
Lists **Dependabot security alerts** for vulnerable package dependencies (npm, pip, Maven, etc.) grouped by severity (critical, high, medium, low). Optionally filter by a specific severity level. Requires a token with `Dependabot alerts` permission.
|
|
134
|
+
|
|
135
|
+
**Inputs:** `owner`, `repo`, `severity` (optional)
|
|
136
|
+
**Try asking:** *"Show me critical dependency vulnerabilities in my-org/my-app"*
|
|
137
|
+
|
|
138
|
+
### `check_ci_status`
|
|
139
|
+
Returns the **most recent CI/CD workflow runs** from GitHub Actions: status (success, failure, in_progress), conclusion, branch, duration, and timestamps. Useful for checking if builds are green before deploying or merging.
|
|
140
|
+
|
|
141
|
+
**Inputs:** `owner`, `repo`, `limit` (optional, default 10)
|
|
142
|
+
**Try asking:** *"Are the CI builds passing for facebook/react?"*
|
|
143
|
+
|
|
144
|
+
### `analyze_code_scanning`
|
|
145
|
+
Lists **CodeQL and other code scanning alerts**: rule ID, severity, vulnerability message, affected file and line number, and creation date. Requires a token with `Code scanning alerts` permission. Can optionally **trigger a CodeQL scan** and wait for results (requires Advanced Setup, not Default Setup).
|
|
146
|
+
|
|
147
|
+
**Inputs:** `owner`, `repo`, `trigger_scan` (optional, default `false`), `poll_timeout_seconds` (optional, default 300), `poll_interval_seconds` (optional, default 15)
|
|
148
|
+
**Try asking:** *"Are there any code scanning vulnerabilities in my-org/my-api?"*
|
|
149
|
+
|
|
150
|
+
### `ping`
|
|
151
|
+
Simple connectivity check. Returns "pong" with your message. Use to verify the MCP server is running.
|
|
152
|
+
|
|
153
|
+
**Inputs:** `message`
|
|
80
154
|
|
|
81
155
|
## 🆕 What's New
|
|
82
156
|
|
package/package.json
CHANGED