{"_id":"@barissozudogru/gha-intel-mcp","_rev":"2-7efd7bb4735cd4587b5c33a26d51893d","name":"@barissozudogru/gha-intel-mcp","dist-tags":{"latest":"0.4.3"},"versions":{"0.4.2":{"name":"@barissozudogru/gha-intel-mcp","version":"0.4.2","keywords":["mcp","github-actions","optimization","ci-cd","workflow"],"author":{"name":"Baris Sozudogru"},"license":"MIT","_id":"@barissozudogru/gha-intel-mcp@0.4.2","maintainers":[{"name":"barissozudogru","email":"barissozudogru@gmail.com"}],"homepage":"https://github.com/barissozudogru/gha-intel-mcp#readme","bugs":{"url":"https://github.com/barissozudogru/gha-intel-mcp/issues"},"bin":{"gha-intel-mcp":"dist/index.js"},"dist":{"shasum":"0aad82f499584963922e3312c5162f807da16cd0","tarball":"https://registry.npmjs.org/@barissozudogru/gha-intel-mcp/-/gha-intel-mcp-0.4.2.tgz","fileCount":11,"integrity":"sha512-bbOp7EiHdAA1XxJPv0C4uKSIWQm3Px16Ixtrc5GxiCtxYsdc/8VCa1jsi4mj00jqgI5j9eBkcA/iD8wNVA+lGg==","signatures":[{"sig":"MEQCIBkgEEz7YuRoZgt93yOw2mWGABoHI23HTqGQHvXKgwrsAiAx70B1WnTWXYlRRd1fsX8jxAtckDGnMHLlzvotahKcGQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":81707},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"1efc2202faa00f6c4f46643010be17b03132d396","scripts":{"test":"npm run build && node --test dist/index.test.js","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"barissozudogru","email":"barissozudogru@gmail.com"},"repository":{"url":"git+https://github.com/barissozudogru/gha-intel-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"GitHub Actions intelligence MCP server - workflow timing analysis, configuration audit, and billing insights","directories":{},"_nodeVersion":"25.2.1","dependencies":{"zod":"^4.3.6","express":"^5.2.1","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^25.5.0","@types/express":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gha-intel-mcp_0.4.2_1787176175970_0.5954961050487211","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@barissozudogru/gha-intel-mcp","version":"0.4.3","mcpName":"io.github.barissozudogru/gha-intel","description":"GitHub Actions intelligence MCP server - workflow timing analysis, configuration audit, and billing insights","type":"module","main":"dist/index.js","bin":{"gha-intel-mcp":"dist/index.js"},"scripts":{"build":"tsc","test":"npm run build && node --test dist/index.test.js","prepublishOnly":"npm run build"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"repository":{"type":"git","url":"git+https://github.com/barissozudogru/gha-intel-mcp.git"},"keywords":["mcp","github-actions","optimization","ci-cd","workflow"],"author":{"name":"Baris Sozudogru"},"license":"MIT","engines":{"node":">=18.0.0"},"dependencies":{"@modelcontextprotocol/sdk":"^1.27.1","express":"^5.2.1","zod":"^4.3.6"},"devDependencies":{"@types/express":"^5.0.0","@types/node":"^25.5.0","typescript":"^5.9.3"},"gitHead":"3bc7323379cdbe7fbd24e45ee1a595fbbb5e885a","types":"./dist/index.d.ts","_id":"@barissozudogru/gha-intel-mcp@0.4.3","bugs":{"url":"https://github.com/barissozudogru/gha-intel-mcp/issues"},"homepage":"https://github.com/barissozudogru/gha-intel-mcp#readme","_nodeVersion":"25.2.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-0tkAEn8m70Heuo+E3YSrz2qxYyf2pspB6tk48cECXTKRi7eclyH2eoUmFKsJrUffOdaetDQCnYmB2X/3MYr7SQ==","shasum":"ea39288d5460ba68e45950c7c03b952b1afc5cff","tarball":"https://registry.npmjs.org/@barissozudogru/gha-intel-mcp/-/gha-intel-mcp-0.4.3.tgz","fileCount":11,"unpackedSize":81758,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDxAvoeojRzFsAS0B0i+0tmV9770R3MJY2TateuLHta1gIgHopyPukgIkxVTZvun0xpwFVns8Buer+c/f394cSJIc0="}]},"_npmUser":{"name":"barissozudogru","email":"barissozudogru@gmail.com"},"directories":{},"maintainers":[{"name":"barissozudogru","email":"barissozudogru@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/gha-intel-mcp_0.4.3_1787221566455_0.6991082978222682"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-19T21:49:35.863Z","modified":"2026-08-20T10:26:06.763Z","0.4.2":"2026-08-19T21:49:36.127Z","0.4.3":"2026-08-20T10:26:06.592Z"},"bugs":{"url":"https://github.com/barissozudogru/gha-intel-mcp/issues"},"author":{"name":"Baris Sozudogru"},"license":"MIT","homepage":"https://github.com/barissozudogru/gha-intel-mcp#readme","keywords":["mcp","github-actions","optimization","ci-cd","workflow"],"repository":{"type":"git","url":"git+https://github.com/barissozudogru/gha-intel-mcp.git"},"description":"GitHub Actions intelligence MCP server - workflow timing analysis, configuration audit, and billing insights","maintainers":[{"name":"barissozudogru","email":"barissozudogru@gmail.com"}],"readme":"<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","readmeFilename":"README.md"}