{
  "markdown": "<img src=\"./assets/banner-gha-intel.svg\" alt=\"gha-intel-mcp\" width=\"888\" />\n\nAn MCP server for GitHub Actions workflow timing analysis, configuration auditing, and billing insights.\n\n## Tools\n\n| Tool | Description |\n|------|-------------|\n| `list_workflow_performance` | Computes average, min, max, and p95 duration statistics for recent workflow runs. |\n| `analyze_workflow_config` | Evaluates workflow YAML for caching, parallelism, concurrency, artifacts, checkout depth, timeouts, runner pinning, Docker caching, and triggers. |\n| `get_billing_usage` | Returns Actions billing minutes and estimated cost by runner type, plus per-repo cache utilisation. |\n\n## Requirements\n\n- Node.js >= 18 (uses native `fetch`)\n- A GitHub personal access token with `repo` and `read:org` scopes\n\n## Setup\n\nThree transport modes are available. Choose whichever fits your deployment:\n\n---\n\n### Option A: stdio (local, recommended for desktop clients)\n\nThe server runs as a subprocess of the MCP client over stdin/stdout. No network port required.\n\n#### Claude Desktop\n\n`~/Library/Application Support/Claude/claude_desktop_config.json` (macOS)\n`%APPDATA%\\Claude\\claude_desktop_config.json` (Windows)\n\n```json\n{\n  \"mcpServers\": {\n    \"gha-intel\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@barissozudogru/gha-intel-mcp\"],\n      \"env\": {\n        \"GITHUB_TOKEN\": \"ghp_your_token\"\n      }\n    }\n  }\n}\n```\n\n#### Claude Code\n\n```bash\nclaude mcp add gha-intel -e GITHUB_TOKEN=ghp_your_token -- npx -y @barissozudogru/gha-intel-mcp\n```\n\n#### Cursor\n\n`~/.cursor/mcp.json`\n\n```json\n{\n  \"mcpServers\": {\n    \"gha-intel\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@barissozudogru/gha-intel-mcp\"],\n      \"env\": {\n        \"GITHUB_TOKEN\": \"ghp_your_token\"\n      }\n    }\n  }\n}\n```\n\n#### Windsurf\n\n`~/.codeium/windsurf/mcp_config.json`\n\n```json\n{\n  \"mcpServers\": {\n    \"gha-intel\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@barissozudogru/gha-intel-mcp\"],\n      \"env\": {\n        \"GITHUB_TOKEN\": \"ghp_your_token\"\n      }\n    }\n  }\n}\n```\n\n#### VS Code + Copilot\n\n`.vscode/mcp.json` (workspace) or user settings\n\n```json\n{\n  \"servers\": {\n    \"gha-intel\": {\n      \"type\": \"stdio\",\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@barissozudogru/gha-intel-mcp\"],\n      \"env\": {\n        \"GITHUB_TOKEN\": \"ghp_your_token\"\n      }\n    }\n  }\n}\n```\n\n#### Cline\n\nOpen Cline settings, navigate to MCP Servers, and add:\n\n```json\n{\n  \"mcpServers\": {\n    \"gha-intel\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@barissozudogru/gha-intel-mcp\"],\n      \"env\": {\n        \"GITHUB_TOKEN\": \"ghp_your_token\"\n      }\n    }\n  }\n}\n```\n\n#### Continue.dev\n\n`~/.continue/config.yaml`\n\n```yaml\nmcpServers:\n  - name: gha-intel\n    command: npx\n    args:\n      - -y\n      - \"@barissozudogru/gha-intel-mcp\"\n    env:\n      GITHUB_TOKEN: ghp_your_token\n```\n\n#### Zed\n\n`~/.config/zed/settings.json`\n\n```json\n{\n  \"context_servers\": {\n    \"gha-intel\": {\n      \"command\": {\n        \"path\": \"npx\",\n        \"args\": [\"-y\", \"@barissozudogru/gha-intel-mcp\"],\n        \"env\": {\n          \"GITHUB_TOKEN\": \"ghp_your_token\"\n        }\n      }\n    }\n  }\n}\n```\n\n#### JetBrains (IntelliJ, PyCharm, WebStorm, etc.)\n\nGo to **Settings > Tools > AI Assistant > MCP** and add:\n\n```json\n{\n  \"mcpServers\": {\n    \"gha-intel\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@barissozudogru/gha-intel-mcp\"],\n      \"env\": {\n        \"GITHUB_TOKEN\": \"ghp_your_token\"\n      }\n    }\n  }\n}\n```\n\n---\n\n### Option B: HTTP (remote or cloud clients)\n\nStart the server in HTTP mode and point clients at the endpoint:\n\n```bash\nGITHUB_TOKEN=ghp_your_token npx @barissozudogru/gha-intel-mcp --http\n# Server listens on http://0.0.0.0:3000/mcp\n# Health check: http://localhost:3000/health\n```\n\nOr set via environment variable instead of the flag:\n\n```bash\nTRANSPORT=http PORT=3000 GITHUB_TOKEN=ghp_your_token npx @barissozudogru/gha-intel-mcp\n```\n\n#### Cursor (HTTP)\n\n`~/.cursor/mcp.json`\n\n```json\n{\n  \"mcpServers\": {\n    \"gha-intel\": {\n      \"url\": \"http://localhost:3000/mcp\"\n    }\n  }\n}\n```\n\n#### VS Code + Copilot (HTTP)\n\n`.vscode/mcp.json`\n\n```json\n{\n  \"servers\": {\n    \"gha-intel\": {\n      \"type\": \"http\",\n      \"url\": \"http://localhost:3000/mcp\"\n    }\n  }\n}\n```\n\n#### Windsurf (HTTP)\n\n`~/.codeium/windsurf/mcp_config.json`\n\n```json\n{\n  \"mcpServers\": {\n    \"gha-intel\": {\n      \"serverUrl\": \"http://localhost:3000/mcp\"\n    }\n  }\n}\n```\n\n#### Continue.dev (HTTP)\n\n`~/.continue/config.yaml`\n\n```yaml\nmcpServers:\n  - name: gha-intel\n    url: http://localhost:3000/mcp\n```\n\n---\n\n### Option C: Docker\n\n```bash\ndocker build -t gha-intel-mcp .\ndocker run -p 3000:3000 -e GITHUB_TOKEN=ghp_your_token gha-intel-mcp\n```\n\nThe container starts in HTTP mode by default. Point your client at `http://localhost:3000/mcp`.\n\n---\n\n## Tool Reference\n\n### list_workflow_performance\n\nFetch real run timing data and compute job-level statistics.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `owner` | string | yes | GitHub owner (user or org) |\n| `repo` | string | yes | Repository name |\n| `workflow_id` | string | yes | Workflow file name (e.g. `ci.yml`) or numeric ID |\n| `count` | number | no | Number of recent runs to analyse (default: 10, max: 100) |\n\n**Output:** Per-job and per-step timing stats (avg, min, max, p95), overall run timing, and a list of recent run conclusions.\n\n---\n\n### analyze_workflow_config\n\nParse and audit a workflow YAML for optimisation opportunities.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `workflow_content` | string | yes | Full YAML content of the workflow file |\n\n**Output:** Findings grouped by severity (critical / warning / info / good) across nine categories, each with a concrete recommendation.\n\n**Categories analysed:** Dependency caching, matrix strategy and fail-fast, concurrency groups and cancel-in-progress, artifact uploads, git checkout depth, job timeout-minutes, runner version pinning, Docker layer caching, and trigger path filters.\n\n---\n\n### get_billing_usage\n\nRetrieve billing and cache consumption data.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `owner` | string | yes | GitHub username or organisation |\n| `repo` | string | no | Repository name for repo-scoped cache and run stats |\n\n**Output:** Total minutes used, plan utilisation, estimated cost broken down by runner type (Ubuntu / macOS / Windows / large runners), plus per-repo cache size and utilisation percentage.\n\n---\n\n## Environment Variables\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| `GITHUB_TOKEN` | yes | GitHub personal access token. Requires `repo` scope for private repos, `read:org` for org billing. |\n| `TRANSPORT` | no | Set to `http` to enable HTTP mode (default: stdio). |\n| `PORT` | no | HTTP port when running in HTTP mode (default: `3000`). |\n\n## License\n\nMIT\n",
  "bytes": 6882,
  "sha": "56c0e7cadbb1d539d98de1acc5562054662b2e9ea6430a41fe52a96e5b85f186",
  "repo_slug": "barissozudogru/gha-intel-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_barissozudogru_gha_intel_dc6299a7/readme"
}