Workflow timing analysis, configuration audit and billing insight for GitHub Actions.
Runs on your machine from its package; the steps are below.
At most: only reads or looks up information.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Run
npx -y @barissozudogru/gha-intel-mcp
MCP client config
{
"mcpServers": {
"gha-intel": {
"command": "npx",
"args": [
"-y",
"@barissozudogru/gha-intel-mcp"
]
}
}
}Inspect GitHub Actions run timing and review workflow configuration through MCP.
| 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. |
fetch)Three transport modes are available. Choose whichever fits your deployment:
The server runs as a subprocess of the MCP client over stdin/stdout. No network port required.
~/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 mcp add gha-intel -e GITHUB_TOKEN=ghp_your_token -- npx -y @barissozudogru/gha-intel-mcp
~/.cursor/mcp.json
{
"mcpServers": {
"gha-intel": {
"command": "npx",
"args": ["-y", "@barissozudogru/gha-intel-mcp"],
"env": {
"GITHUB_TOKEN": "ghp_your_token"
}
}
}
}
~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"gha-intel": {
"command": "npx",
"args": ["-y", "@barissozudogru/gha-intel-mcp"],
"env": {
"GITHUB_TOKEN": "ghp_your_token"
}
}
}
}
.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"
}
}
}
}
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/config.yaml
mcpServers:
- name: gha-intel
command: npx
args:
- -y
- "@barissozudogru/gha-intel-mcp"
env:
GITHUB_TOKEN: ghp_your_token
~/.config/zed/settings.json
{
"context_servers": {
"gha-intel": {
"command": {
"path": "npx",
"args": ["-y", "@barissozudogru/gha-intel-mcp"],
"env": {
"GITHUB_TOKEN": "ghp_your_token"
}
}
}
}
}
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"
}
}
}
}
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/mcp.json
{
"mcpServers": {
"gha-intel": {
"url": "http://localhost:3000/mcp"
}
}
}
.vscode/mcp.json
{
"servers": {
"gha-intel": {
"type": "http",
"url": "http://localhost:3000/mcp"
}
}
}
~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"gha-intel": {
"serverUrl": "http://localhost:3000/mcp"
}
}
}
~/.continue/config.yaml
mcpServers:
- name: gha-intel
url: http://localhost:3000/mcp
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.
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.
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.
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.
| 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). |
/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.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.