ProjectPulse MCP

io.github.alexbypa由 GitHub 帳號 alexbypa 發布v1.10.0更新於 Oct 24, 2026

Monitor GitHub repo health, DORA metrics and CI signals from your AI assistant.

概覽

AI 產生的概覽

本機 MCP 伺服器,讓 AI 助理為 GitHub 儲存庫評分與稽核:健康分數、DORA 指標、CI 狀態、安全警示與最佳實務。

可以做什麼
為儲存庫計算 0-100 健康分數與 A-F 等級,提供分類明細與改善建議,重複呼叫時附上趨勢比較,並支援 2-5 個儲存庫並排比較。讀取儲存庫中繼資料,例如星號、分支、語言、授權與最近推送時間。透過 Dependabot 警示、CodeQL 等程式碼掃描警示與 OpenSSF Scorecard 檢查評估安全狀況。查看最近的 GitHub Actions 工作流程執行與結論。依 7-90 天區間計算代理 DORA 指標(部署頻率、前置時間、變更失敗率、MTTR)。以 12 項清單評估開源最佳實務,並提供簡單的 ping 連線檢查。
適用情境
適合在評估某個函式庫或相依套件是否可用於正式環境、比較替代專案的技術風險、依 DORA 指標準備衝刺或交付檢視,或在不離開助理對話的情況下對儲存庫做快速安全與 CI 稽核時使用。
執行需求
透過 npx 以 stdio 在本機執行,需要 Node.js v18 或更新版本及 npm。GitHub 個人存取權杖透過 GITHUB_TOKEN 環境變數提供;公開儲存庫可不填,但私有儲存庫、較高速率限制與安全資料需要它。權杖需具備唯讀的 Code scanning alerts 與 Dependabot alerts 權限。需要連線至 GitHub API 與 OpenSSF Scorecard 的網路存取。
安裝前請注意
GITHUB_TOKEN 是憑證:應放在用戶端設定或 .env 檔案中,限定到所需儲存庫,並優先使用唯讀的細緻權限。健康分數會以趨勢快照形式存到本機磁碟目錄。程式碼掃描工具可選擇觸發 CodeQL 掃描,會在 GitHub 上啟動工作,且需要 Advanced Setup。儲存庫查詢與比較呼叫會送往 GitHub API 與 OpenSSF Scorecard,比較的儲存庫越多 API 用量越大。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 ProjectPulse MCP,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

ProjectPulse MCP 🏥

GitHub repository health monitoring for AI assistants — works with any language, any repo.

[npm version] [license] [tests] [stars] [downloads] [OpenSSF Scorecard] [M8ven MCP]


This Model Context Protocol (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.

📑 Table of Contents

✨ Features

  • 🏥 Health Score — comprehensive 0-100 score with grade (A-F), category breakdown, and improvement suggestions
  • 🔒 Security — Dependabot alerts blended with OpenSSF Scorecard checks (60/40 weighted)
  • 📊 DORA Metrics — proxy DORA metrics from GitHub data: deployment frequency, lead time, change failure rate, MTTR
  • 🔍 Code Scanning — CodeQL and other code scanning alerts with severity, message, and creation date
  • 📦 Dependency Analysis — Dependabot alerts with severity filtering
  • ⚙️ CI/CD Status — recent GitHub Actions workflow runs and conclusions
  • 📋 Repository Info — stars, forks, language, license, and general metadata
  • 📝 Best Practices — 12-point checklist for open-source repo quality (README, LICENSE, SECURITY.md, templates, branch protection, etc.) with A-F grade

📸 Examples

All screenshots taken live from MCP Inspector.

get_health_score — A-F grade with category breakdown

[get_health_score]

get_dora_metrics — DORA delivery metrics from GitHub data

[get_dora_metrics]

compare_repos — Side-by-side health score ranking

[compare_repos]

check_ci_status — Recent GitHub Actions workflow runs

[check_ci_status]

get_repo_health — Repository metadata and stats

[get_repo_health]

analyze_dependencies — Dependabot vulnerability alerts

[analyze_dependencies]

check_best_practices — Open-source repo quality checklist with A-F grade

[check_best_practices]

💡 Use Cases

Copy-paste these prompts into Claude, Cursor, Windsurf, or any MCP-compatible assistant.

Due Diligence — Library Adoption

"Evaluate whether facebook/react is production-ready. Check the health score, security vulnerabilities (Dependabot and CodeQL), and whether the CI pipeline passes consistently."

Tools used: get_health_score, analyze_dependencies, analyze_code_scanning, check_ci_status

Compare Alternatives

"I need to choose between expressjs/express, fastify/fastify, and koajs/koa. Compare their health scores and tell me which one has the lowest technical risk."

Tools used: compare_repos

Sprint Review — DORA Metrics

"Calculate the DORA metrics for vercel/next.js over the last 30 days. I want to present delivery performance at our sprint review."

Tools used: get_dora_metrics

Trend Monitoring

"Check the health score of microsoft/vscode. Has it improved or worsened since the last time we checked?"

Tools used: get_health_score (includes trend comparison on repeated calls)

Quick Security Audit

"Run a security audit of pallets/flask: Dependabot alerts, CodeQL vulnerabilities, and CI build status. Give me a complete picture."

Tools used: analyze_dependencies, analyze_code_scanning, check_ci_status


📋 Prerequisites

  • Node.js v18 or later — download
  • npm (included with Node.js)
  • GitHub Personal Access Token (optional for public repos, required for private repos and security data)

🚀 Quick Start

Claude Code (CLI)

bash
claude mcp add projectpulse -- npx projectpulse-mcp

Note: You need a .env file with your GITHUB_TOKEN in the directory where you run Claude Code.

Claude Desktop

Step 1: Get a GitHub Token
  1. Go to GitHub Settings > Developer settings > Personal access tokens > Fine-grained tokens
  2. Give it a name (e.g., projectpulse)
  3. Select the repositories you want to monitor (or "All repositories")
  4. Under Permissions, grant Read-only access to:
    • Code scanning alerts
    • Dependabot alerts
    • Metadata (enabled by default)
  5. Click Generate token and copy it
Step 2: Configure Claude Desktop
  1. Open Claude Desktop
  2. Go to Settings (gear icon) > Developer > Edit Config
  3. This opens claude_desktop_config.json. Add the projectpulse entry inside "mcpServers":
json
{  "mcpServers": {    "projectpulse": {      "command": "npx",      "args": ["-y", "projectpulse-mcp"],      "env": {        "GITHUB_TOKEN": "ghp_paste_your_token_here"      }    }  }}
  1. Save the file and restart Claude Desktop
Step 3: Verify it works

In a new Claude Desktop conversation, try asking:

"Check the health score of facebook/react"

Claude should call the get_health_score tool and return an A-F grade with a detailed breakdown.

Troubleshooting
ProblemSolution
Tools not showing upRestart Claude Desktop after editing the config file
"Rate limit exceeded" errorsMake sure GITHUB_TOKEN is set correctly in the config
Dependabot/CodeQL data missingYour token needs Code scanning alerts and Dependabot alerts permissions
npx not foundInstall Node.js (v18 or later) and make sure npx is in your PATH

Other MCP Clients (Cursor, Windsurf, etc.)

Configure a new MCP server with:

  • Transport: stdio
  • Command: npx
  • Arguments: -y projectpulse-mcp
  • Environment: GITHUB_TOKEN = your GitHub PAT

🛠️ Tools

get_health_score

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.

Side effect: saves a trend snapshot to local disk (~/.projectpulse/snapshots/).

Inputs: owner, repo Try asking: "What's the health score of microsoft/vscode?"

get_dora_metrics

Calculates proxy DORA metrics 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.

Inputs: owner, repo, days (optional, 7-90, default 30) Try asking: "Show me the DORA metrics for vercel/next.js over the last 60 days"

compare_repos

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.

Inputs: repos (array of {owner, repo}) Try asking: "Compare the health of expressjs/express, fastify/fastify, and koajs/koa"

get_repo_health

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.

Inputs: owner, repo Try asking: "Give me general info about torvalds/linux"

analyze_dependencies

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.

Inputs: owner, repo, severity (optional) Try asking: "Show me critical dependency vulnerabilities in my-org/my-app"

check_ci_status

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.

Inputs: owner, repo, limit (optional, default 10) Try asking: "Are the CI builds passing for facebook/react?"

analyze_code_scanning

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).

Inputs: owner, repo, trigger_scan (optional, default false), poll_timeout_seconds (optional, default 300), poll_interval_seconds (optional, default 15) Try asking: "Are there any code scanning vulnerabilities in my-org/my-api?"

check_best_practices

Evaluates whether a repository follows open-source community best practices. Runs 12 weighted checks: README, LICENSE, SECURITY.md, CONTRIBUTING.md, CODE_OF_CONDUCT, issue/PR templates, branch protection, Dependabot config, CI/CD workflows, description, and topics. Returns a 0-100 weighted score with A-F grade, per-check pass/fail/unknown status, and actionable suggestions for every missing item. Branch protection check requires admin token access — returns "unknown" (not penalized) if unavailable.

Inputs: owner, repo Try asking: "Does my-org/my-repo follow open-source best practices?"

ping

Simple connectivity check. Returns "pong" with your message. Use to verify the MCP server is running.

Inputs: message

🆕 What's New

HTTP Transport (v1.7.0)

ProjectPulse now supports Streamable HTTP transport in addition to stdio. This enables running as a standalone HTTP server — ideal for Docker containers, remote deployments, and cross-runtime integrations (e.g., .NET clients consuming Node.js MCP tools over the network).

Default behavior is unchanged — npx projectpulse-mcp still uses stdio. To activate HTTP mode:

bash
MCP_TRANSPORT=http MCP_PORT=3000 node dist/index.js
Env VariableDefaultDescription
MCP_TRANSPORTstdioTransport mode: stdio or http
MCP_PORT3000HTTP server port (only used when MCP_TRANSPORT=http)

Docker example:

yaml
projectpulse:  image: node:22-slim  command: >-    sh -c "npm install -g projectpulse-mcp &&           node /usr/local/lib/node_modules/projectpulse-mcp/dist/index.js"  environment:    - MCP_TRANSPORT=http    - MCP_PORT=3000    - GITHUB_TOKEN=${GITHUB_TOKEN}

Health check endpoint available at GET / (returns JSON with server name and version). MCP protocol endpoint at POST /mcp.

OpenSSF Scorecard Integration

Security score now blends Dependabot alerts (60%) with OpenSSF Scorecard checks (40%) for a more complete picture. 12 security-relevant checks are evaluated — repos without a scorecard gracefully fall back to Dependabot-only scoring.

DORA Metrics

New get_dora_metrics tool calculates proxy DORA metrics from public GitHub data:

MetricSourceUnit
Deployment FrequencyReleasesreleases/week
Lead Time for ChangesPR created → mergedhours (median)
Change Failure RateCI workflow conclusionspercentage
Mean Time to RecoveryCI failure → next successhours (median)

Metrics return null when insufficient data is available — works safely on any repository.

🔌 Compatibility

ProjectPulse works with any MCP-compatible client. Tested with:

ClientTransportStatus
Claude Desktopstdio✅ Tested
Claude Code (CLI)stdio✅ Tested
Cursorstdio✅ Tested
Windsurfstdio✅ Tested
MCP Inspectorstdio✅ Tested
Docker / RemoteHTTP✅ Tested
Any MCP clientstdio or HTTP✅ Compatible

🏗️ Architecture

┌─────────────────────────────────────────────────┐│                  MCP Client                     ││        (Claude, Cursor, Windsurf, etc.)         │└────────────────────┬────────────────────────────┘                     │ stdio or HTTP┌────────────────────▼────────────────────────────┐│            ProjectPulse MCP Server              ││                                                 ││  ┌─────────────┐  ┌─────────────┐              ││  │  Tool Layer  │  │  Transport  │              ││  │  (8 tools)   │  │ stdio/HTTP  │              ││  └──────┬──────┘  └─────────────┘              ││         │                                       ││  ┌──────▼──────┐  ┌─────────────┐              ││  │  GitHub API  │  │   OpenSSF   │              ││  │  (Octokit)   │  │  Scorecard  │              ││  └─────────────┘  └─────────────┘              │└─────────────────────────────────────────────────┘
  • Tool layer: 8 independent tools, each in its own file (src/tools/)
  • GitHub API: all calls through a shared Octokit client (src/github/client.ts) with rate-limit handling
  • OpenSSF Scorecard: integrated via public API for security scoring
  • Input validation: Zod schemas at the MCP boundary
  • Transport: stdio (default) or Streamable HTTP — configurable via environment variables

🚢 Transport Modes

stdio (default)HTTP
Activationnpx projectpulse-mcpMCP_TRANSPORT=http node dist/index.js
Best forLocal MCP clientsDocker, remote, cross-runtime
Health checkN/AGET / → JSON
MCP endpointstdin/stdoutPOST /mcp
Config neededNoneMCP_TRANSPORT=http, optionally MCP_PORT

See What's New: HTTP Transport for Docker examples.

⚙️ Configuration

GITHUB_TOKEN

Required to avoid rate limits and access security data (Dependabot, CodeQL alerts).

Option A: Fine-grained PAT (Recommended)

  1. Settings > Developer settings > Personal access tokens > Fine-grained tokens
  2. Select target repositories
  3. Grant Read-only access to:
    • Code scanning alerts
    • Dependabot alerts
    • Metadata (default)

Option B: Classic Token Generate with repo + security_events scopes.

Providing the token:

  • Claude Desktop: set in claude_desktop_config.json (see Quick Start)
  • Claude Code / Local: create a .env file:
    env
    GITHUB_TOKEN=ghp_your_token_here

🧪 Testing

All 8 tools have dedicated test suites. Tests use Vitest with mocked GitHub API responses.

bash
# Run all testsnpm test
# Watch modenpm run test:watch
ToolTest fileStatus
get_health_scoresrc/tools/get-health-score.test.ts✅
get_dora_metricssrc/tools/get-dora-metrics.test.ts✅
compare_repossrc/tools/compare-repos.test.ts✅
get_repo_healthsrc/tools/get-repo-health.test.ts✅
analyze_dependenciessrc/tools/analyze-dependencies.test.ts✅
check_ci_statussrc/tools/check-ci-status.test.ts✅
analyze_code_scanningsrc/tools/analyze-code-scanning.test.ts✅
check_best_practicessrc/tools/check-best-practices.test.ts✅

👤 Author

alexbypa — GitHub · npm

🤝 Contributing

Contributions, issues, and feature requests are welcome!

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Run tests (npm test) and ensure they pass
  4. Commit your changes
  5. Push to the branch and open a Pull Request

See the issues page for open tasks and bug reports.

⭐ Show your support

Give a star if this project helped you!

📝 License

MIT — see the LICENSE file for details.

來源:README.md,提交 715a318

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

5
  1. v1.10.0最新Oct 18, 2026
  2. v1.9.0Oct 14, 2026
  3. v1.8.4Sep 24, 2026
  4. v1.8.1Sep 23, 2026
  5. v1.7.0Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分