About gha-intel
gha-intel is an MCP server for teams inspecting GitHub Actions performance and workflow configuration. It reports run timings, audits YAML for optimization opportunities, and exposes repository cache usage; account billing data is limited by retired GitHub endpoints.
Key features
- 01Workflow and job timing statistics
- 02Workflow YAML configuration audit
- 03Repository cache usage lookup
- 04stdio, HTTP, and Docker deployment
Use cases
- 01Review recent workflow duration trends
- 02Find caching or concurrency improvements in workflow YAML
- 03Check repository cache consumption
MCP support
Provides MCP tools for workflow timing analysis, YAML auditing, and repository cache and run-usage lookup. It supports stdio and HTTP transports.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
npx -y @barissozudogru/gha-intel-mcpGITHUB_TOKENSecretGitHub token with repository and actions read access, for the GitHub API.Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.
Tools
3Saved tool list · updated 2w ago
| Parameter | Type | Required | Description |
|---|---|---|---|
| repo | string | Yes | GitHub repository name |
| count | integer | No | Number of recent runs to analyse (default: 10, max: 100) |
| owner | string | Yes | GitHub repository owner (user or org) |
| workflow_id | string | Yes | Workflow file name (e.g. ci.yml) or numeric workflow ID |
Details
From the project READMEgha-intel-mcp
Inspect GitHub Actions run timing and review workflow configuration through MCP.
Tools
| Tool | Description |
|---|---|
list_workflow_performance | Computes average, min, max, and p95 duration statistics for recent workflow runs. |
analyze_workflow_config | Evaluates workflow YAML for caching, parallelism, concurrency, artifacts, checkout depth, timeouts, runner pinning, Docker caching, and triggers. |
get_billing_usage | Reads repository cache usage and recent run timing. Account billing uses retired endpoints; see limitations below. |
Requirements
- Node.js >= 18 (uses native
fetch) - A GitHub token with access to the repositories you want to inspect. See your token type and endpoint permissions before granting access.
Setup
Three transport modes are available. Choose whichever fits your deployment:
Option A: stdio (local, recommended for desktop clients)
The server runs as a subprocess of the MCP client over stdin/stdout. No network port required.
Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json (macOS)
%APPDATA%\Claude\claude_desktop_config.json (Windows)
{
"mcpServers": {
"gha-intel": {
"command": "npx",
"args": ["-y", "@barissozudogru/gha-intel-mcp"],
"env": {
"GITHUB_TOKEN": "ghp_your_token"
}
}
}
}
Claude Code
claude mcp add gha-intel -e GITHUB_TOKEN=ghp_your_token -- npx -y @barissozudogru/gha-intel-mcp
Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"gha-intel": {
"command": "npx",
"args": ["-y", "@barissozudogru/gha-intel-mcp"],
"env": {
"GITHUB_TOKEN": "ghp_your_token"
}
}
}
}
Windsurf
~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"gha-intel": {
"command": "npx",
"args": ["-y", "@barissozudogru/gha-intel-mcp"],
"env": {
"GITHUB_TOKEN": "ghp_your_token"
}
}
}
}
VS Code + Copilot
.vscode/mcp.json (workspace) or user settings
{
"servers": {
"gha-intel": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@barissozudogru/gha-intel-mcp"],
"env": {
"GITHUB_TOKEN": "ghp_your_token"
}
}
}
}
Cline
Open Cline settings, navigate to MCP Servers, and add:
{
"mcpServers": {
"gha-intel": {
"command": "npx",
"args": ["-y", "@barissozudogru/gha-intel-mcp"],
"env": {
"GITHUB_TOKEN": "ghp_your_token"
}
}
}
}
Continue.dev
~/.continue/config.yaml
mcpServers:
- name: gha-intel
command: npx
args:
- -y
- "@barissozudogru/gha-intel-mcp"
env:
GITHUB_TOKEN: ghp_your_token
Zed
~/.config/zed/settings.json
{
"context_servers": {
"gha-intel": {
"command": {
"path": "npx",
"args": ["-y", "@barissozudogru/gha-intel-mcp"],
"env": {
"GITHUB_TOKEN": "ghp_your_token"
}
}
}
}
}
JetBrains (IntelliJ, PyCharm, WebStorm, etc.)
Go to Settings > Tools > AI Assistant > MCP and add:
{
"mcpServers": {
"gha-intel": {
"command": "npx",
"args": ["-y", "@barissozudogru/gha-intel-mcp"],
"env": {
"GITHUB_TOKEN": "ghp_your_token"
}
}
}
}
Option B: HTTP (remote or cloud clients)
Start the server in HTTP mode and point clients at the endpoint:
GITHUB_TOKEN=ghp_your_token npx @barissozudogru/gha-intel-mcp --http
# Server listens on http://0.0.0.0:3000/mcp
# Health check: http://localhost:3000/health
Or set via environment variable instead of the flag:
TRANSPORT=http PORT=3000 GITHUB_TOKEN=ghp_your_token npx @barissozudogru/gha-intel-mcp
Cursor (HTTP)
~/.cursor/mcp.json
{
"mcpServers": {
"gha-intel": {
"url": "http://localhost:3000/mcp"
}
}
}
VS Code + Copilot (HTTP)
.vscode/mcp.json
{
"servers": {
"gha-intel": {
"type": "http",
"url": "http://localhost:3000/mcp"
}
}
}
Windsurf (HTTP)
~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"gha-intel": {
"serverUrl": "http://localhost:3000/mcp"
}
}
}
Continue.dev (HTTP)
~/.continue/config.yaml
mcpServers:
- name: gha-intel
url: http://localhost:3000/mcp
Option C: Docker
docker build -t gha-intel-mcp .
docker run -p 3000:3000 -e GITHUB_TOKEN=ghp_your_token gha-intel-mcp
The container starts in HTTP mode by default. Point your client at http://localhost:3000/mcp.
Tool Reference
list_workflow_performance
Fetch real run timing data and compute job-level statistics.
| Parameter | Type | Required | Description |
|---|---|---|---|
owner | string | yes | GitHub owner (user or org) |
repo | string | yes | Repository name |
workflow_id | string | yes | Workflow file name (e.g. ci.yml) or numeric ID |
count | number | no | Number of recent runs to analyse (default: 10, max: 100) |
Output: Per-job and per-step timing stats (avg, min, max, p95), overall run timing, and a list of recent run conclusions.
analyze_workflow_config
Parse and audit a workflow YAML for optimisation opportunities.
| Parameter | Type | Required | Description |
|---|---|---|---|
workflow_content | string | yes | Full YAML content of the workflow file |
Output: Findings grouped by severity (critical / warning / info / good) across nine categories, each with a concrete recommendation.
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.
get_billing_usage
Retrieve repository cache consumption and recent run estimates. Account billing is currently limited by a retired API integration.
| Parameter | Type | Required | Description |
|---|---|---|---|
owner | string | yes | GitHub username or organisation |
repo | string | no | Repository name for repo-scoped cache and run stats |
Output: With repo supplied, cache usage and recent run timing where accessible. Account billing requests use retired GitHub endpoints and can fail. Existing cost estimates use a historical rate table and should not be treated as current charges.
Environment Variables
| Variable | Required | Description |
|---|---|---|
GITHUB_TOKEN | yes | GitHub personal access token. Access must match the requested repository and endpoint. Keep the token outside version control. |
TRANSPORT | no | Set to http to enable HTTP mode (default: stdio). |
PORT | no | HTTP port when running in HTTP mode (default: 3000). |
Limitations and deployment
- Account billing uses
/settings/billing/actions, which GitHub retired in September 2025. Granting broader token scopes does not restore those endpoints. Repository cache and run timing requests use separate endpoints. - Current cost estimates use historical rates, and cache utilisation assumes a fixed 10 GB limit. Review account configuration before using either for capacity or budget decisions.
- HTTP mode listens on all interfaces and does not implement client authentication. Keep it on a trusted network or place an authenticated gateway in front of it. The server uses its configured GitHub token for client requests.
- Timing statistics describe the fetched runs, rather than predicting a future run.
Development and support
Report problems through GitHub issues. See CONTRIBUTING.md for the contribution workflow.
To build and test a source checkout with Node.js 22:
npm ci
npm test
npm run build
The default branch can contain changes that have not yet been published to npm.
License
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.