GitHub Health Monitor MCP
Monitors and analyzes GitHub repository health by detecting stale branches, old PRs, unresponsive issues, and security vulnerabilities, providing tools and resources for AI agents to query and manage repository metrics.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@GitHub Health Monitor MCPcheck the health of facebook/react"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
GitHub Health Monitor MCP
π Monitor, analyze, and improve your GitHub repository health with intelligent MCP tooling.
GitHub Health Monitor is a powerful Model Context Protocol (MCP) server that continuously tracks critical repository health metrics. Get instant insights into stale branches, aging pull requests, inactive issues, and security vulnerabilitiesβall through standardized MCP interfaces that integrate seamlessly with AI assistants and automation tools.
π Key Features
Feature | Description | Default Threshold |
πΏ Stale Branch Detection | Identify branches untouched for extended periods | >30 days |
π Old PR Tracking | Find pull requests awaiting review/merge | >14 days |
π Unresponsive Issues | Flag issues needing attention | >7 days |
π Security Alert Monitoring | Track potential security concerns | Real-time |
π― MCP Native | Full MCP Resources & Tools integration | β |
β‘ Configurable | Customize thresholds and behavior | Flexible |
π Quick Start
Prerequisites
Node.js 20+
npm or compatible package manager
GitHub Personal Access Token (optional but recommended for higher rate limits)
Installation & Setup
# Clone the repository
git clone https://github.com/IN3PIRE/github-health-monitor.git
cd github-health-monitor
# Install dependencies
npm install
# Build the project
npm run build
# Optional: Test the build
npm testTesting Your Installation
# Run in development mode
npm run dev
# Or start the built version
npm startπ§ Configuration
Environment Variables
Configure behavior using these environment variables:
Variable | Description | Default | Example |
| GitHub PAT for authenticated requests | β |
|
| Days before branch considered stale |
|
|
| Days before PR considered old |
|
|
| Days before issue needs attention |
|
|
MCP Client Integration
Add to your MCP-compatible client configuration:
{
"mcpServers": {
"github-health": {
"command": "node",
"args": ["/absolute/path/to/github-health-monitor/dist/index.js"],
"env": {
"GITHUB_TOKEN": "${GH_TOKEN}",
"STALE_BRANCH_DAYS": "21"
}
}
}
}Popular MCP Clients
Claude Desktop: Add to
claude_desktop_config.jsonCursor: Use MCP settings panel
Windsurf: Configure via MCP integrations
Custom Applications: Use MCP SDK directly
See the examples/ directory for ready-to-use configuration templates.
π Usage Guide
As an MCP Tool
Trigger comprehensive health checks for any repository:
// Basic repository check
const healthReport = await mcpClient.callTool("check_health", {
owner: "facebook",
repo: "react"
});
// With custom thresholds for this specific check
const strictHealth = await mcpClient.callTool("check_health", {
owner: "vercel",
repo: "next.js",
staleBranchDays: 14,
oldPRDays: 7,
unresponsiveIssueDays: 3
});Tool Parameters:
owner(string, required): GitHub username or organizationrepo(string, required): Repository namestaleBranchDays(number, optional): Override default stale thresholdoldPRDays(number, optional): Override PR age thresholdunresponsiveIssueDays(number, optional): Override issue timeout
As an MCP Resource
Read the current aggregated health metrics:
// Access latest health snapshot
const metrics = await mcpClient.readResource("health://current");
// Integrate with monitoring dashboards
const healthData = await mcpClient.readResource("health://metrics");Available Resources:
health://current: Real-time repository health snapshothealth://metrics: Time-series health metricshealth://summary: Condensed health report
Direct API Usage
For programmatic integration without MCP:
# Build the server
npm run build
# Run directly with environment variables
GITHUB_TOKEN=ghp_xxx node dist/index.js
# Use with process managers
pm2 start dist/index.js --name "github-health-monitor"π Example Outputs
Full Health Report
{
"repository": "facebook/react",
"timestamp": "2024-03-20T15:30:00Z",
"staleBranches": [
{
"name": "feature/deprecated-component",
"lastCommit": "2024-01-15T10:30:00Z",
"author": "dev123",
"daysStale": 45,
"url": "https://github.com/facebook/react/tree/feature/deprecated-component"
}
],
"oldPRs": [
{
"number": 26784,
"title": "Add experimental concurrent features",
"author": "core-team",
"createdAt": "2024-02-20T08:15:00Z",
"daysOpen": 28,
"reviewStatus": "changes-requested",
"url": "https://github.com/facebook/react/pull/26784"
}
],
"unresponsiveIssues": [
{
"number": 24563,
"title": "Bug: Suspense fallback shows briefly on fast networks",
"author": "community-member",
"createdAt": "2024-02-10T14:22:00Z",
"lastUpdated": "2024-02-10T14:22:00Z",
"daysSinceUpdate": 39,
"assignee": null,
"labels": ["bug", "needs-triage"],
"url": "https://github.com/facebook/react/issues/24563"
}
],
"securityAlerts": [
{
"severity": "high",
"package": "semver",
"vulnerableVersion": "<7.5.2",
"patchedVersion": "7.5.2",
"description": "Regular Expression Denial of Service (ReDoS)"
}
],
"summary": {
"totalStaleBranches": 3,
"totalOldPRs": 7,
"totalUnresponsiveIssues": 12,
"totalSecurityAlerts": 1,
"healthScore": 72
}
}Condensed Summary
{
"repository": "vercel/next.js",
"healthScore": 85,
"status": "healthy",
"requiresAttention": {
"staleBranches": 2,
"oldPRs": 3,
"unresponsiveIssues": 5
},
"timestamp": "2024-03-20T15:30:00Z"
}π― Use Cases
For Maintainers & Teams
Daily Standups: Quick health pulse before meetings
Release Readiness: Ensure no blockers before shipping
Cleanup Campaigns: Identify technical debt systematically
Security Audits: Monitor for new vulnerabilities
Onboarding: Help new contributors understand repository state
For Automation
CI/CD Integration: Gate deployments on health thresholds
Scheduled Reports: Daily/weekly health digests via automation
ChatOps: Query repository health from Slack/Discord bots
Dashboards: Feed metrics to Grafana, Datadog, etc.
π Troubleshooting
Common Issues
Rate Limiting
Error: API rate limit exceededSolution: Set
GITHUB_TOKENenvironment variable for 5,000 req/hour limit (vs 60 for unauthenticated)Token: Generate at github.com/settings/tokens with
reposcope
Connection Issues
Error: Failed to connect to MCP serverVerify Node.js version:
node --version(requires 20+)Check port availability:
lsof -i :<port>Review firewall settings
Permission Errors
Error: Resource not accessible by integrationEnsure token has access to target repository
Verify repository name spelling
Check organization access if applicable
Debug Mode
# Enable verbose logging
DEBUG=mcp:* npm run dev
# Or set globally
export DEBUG=mcp:*
node dist/index.jsGetting Help
Check existing issues
Review logs with
DEBUG=mcp:*Verify configuration against examples in
examples/Open a new issue with debug logs and reproduction steps
π§ͺ Testing
# Run full test suite
npm test
# Run with coverage
npm test -- --coverage
# Lint check
npm run lint # if configuredποΈ Architecture
βββββββββββββββββββ ββββββββββββββββββββββββ βββββββββββββββββββ
β MCP Client βββββββ€ MCP Protocol Layer ββββββΊβ Health Monitor β
β (Claude/Cursor) β β (SDK Integration) β β Server β
βββββββββββββββββββ ββββββββββββββββββββββββ βββββββββββββββββββ
β
βΌ
βββββββββββββββββββ ββββββββββββββββββββββββ βββββββββββββββββββ
β GitHub API βββββββ€ Octokit Clients βββββββ€ Metrics β
β (REST/GraphQL)β β (REST + GraphQL) β β Engine β
βββββββββββββββββββ ββββββββββββββββββββββββ βββββββββββββββββββCore Components
MCP Server: Handles protocol negotiation and tool/resource exposure
Metrics Engine: Orchestrates data collection and analysis
GitHub Adapter: Octokit-based API communication layer
Health Calculator: Scoring and status determination logic
π€ Contributing Guidelines
We welcome contributions! Please see CONTRIBUTING.md for detailed guidelines.
Quick Contribution Steps
Star the repo β (required for PR merging)
Fork the repository
Create a feature branch:
git checkout -b feat/your-featureMake your changes with tests
Commit with clear messages:
git commit -m "feat: add new metric type"Push to your fork:
git push origin feat/your-featureOpen a Pull Request with detailed description
β οΈ Important: PRs can only be merged if you have β starred this repository!
Development Setup
# Fork and clone your fork
git clone https://github.com/YOUR_USERNAME/github-health-monitor.git
cd github-health-monitor
# Install dependencies
npm install
# Start development mode
npm run dev
# Run tests before committing
npm testπ License
MIT License - see LICENSE file for details.
Copyright Β© 2024 IN3PIRE
π Support & Community
β Star this repository to show support and unlock PR merging capabilities
π Report bugs with detailed reproduction steps
π‘ Request features via GitHub Discussions
π¬ Join discussions about roadmap and improvements
Watch for Releases
Click π Watch β Releases only to get notified about new versions and security updates.
Built with β€οΈ for the MCP ecosystem.
β Don't forget to star the repo to enable PR merging and show your support!
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/IN3PIRE/github-health-monitor-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server