Prototype · Preview: every server in the official registry, synced every 30 minutes. Reviews and accounts come in a later step.
PopNx MCPMCP servers for people who use AI · explained in plain words

bash-mcp

by nickw8version 5.0.1i★ –iRuns on your computer
Registry nameio.github.nickw8/bash-mcp

Install

Overview

Description from the maker (original English)

Structured JSON wrappers for git, kubectl, terraform, helm, argocd, gh, glab and other CLIs.

PopNx MCP’s three pillars

These three are never merged into one score: opinions, measurements and popularity are different things.

What you can do with it

We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.

  • Connection: Runs on your computer
  • Transport: stdio
  • Category: Developer tools

Install

Pick the AI app you use, then copy the settings.

Before you install

  • Basic checks: 1 of 1 passed
  • Runs on your computer with your user’s permissions (files, network, apps).
  • You fill in yourself: BASH_MCP_MODE, BASH_MCP_PROFILE, BASH_MCP_RESPONSE_MODE

You need

  • npmNode.js installed (for the npx command)

Which app do you use?

Pick your app above. We remember it, so next time the button says “Install in …”.

Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json

{
  "mcpServers": {
    "bash": {
      "command": "npx",
      "args": [
        "-y",
        "@nickw8/bash-mcp"
      ],
      "env": {
        "BASH_MCP_MODE": "your-value",
        "BASH_MCP_PROFILE": "your-value",
        "BASH_MCP_RESPONSE_MODE": "your-value"
      }
    }
  }
}

Run this in your terminal

claude mcp add bash --env BASH_MCP_MODE=your-value --env BASH_MCP_PROFILE=your-value --env BASH_MCP_RESPONSE_MODE=your-value -- npx -y @nickw8/bash-mcp

Fill in the empty values before running it.

Open in Cursor

Or copy the settings yourself

Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json

{
  "mcpServers": {
    "bash": {
      "command": "npx",
      "args": [
        "-y",
        "@nickw8/bash-mcp"
      ],
      "env": {
        "BASH_MCP_MODE": "your-value",
        "BASH_MCP_PROFILE": "your-value",
        "BASH_MCP_RESPONSE_MODE": "your-value"
      }
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

Open in VS Code

Or copy the settings yourself

Paste into .vscode/mcp.json in your project

{
  "servers": {
    "bash": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@nickw8/bash-mcp"
      ],
      "env": {
        "BASH_MCP_MODE": "your-value",
        "BASH_MCP_PROFILE": "your-value",
        "BASH_MCP_RESPONSE_MODE": "your-value"
      }
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.

Your choice stays on this device in a cookie; no account needed.

Values you fill in

  • BASH_MCP_MODE env
    Write gate for run/batch: readOnly (default), confirmWrites, off
  • BASH_MCP_PROFILE env
    Tool set to register: core, development, infrastructure, all (default)
  • BASH_MCP_RESPONSE_MODE env
    Response budget: auto (default), summary, compact, full

These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.

What it can do

Runs on your computer; the tool list appears in your AI app after you install it.

Basic checksi

We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 6, 2026

  • ✓ Pass

    Maker matches the repo

    The registry name was verified with the GitHub account nickw8, which owns the repo

  • … Not checked yet

    Still maintained

    We have not read this repo from GitHub yet

  • … Not checked yet

    Has a licence

    We have not read this repo from GitHub yet

  • – Not applicable

    Endpoint responds

    This one runs on your computer; there is no internet endpoint

  • – Not applicable

    Sign-in with OAuth

    Runs on your computer and uses local settings instead

  • … Not checked yet

    No hidden instructions in tool descriptions

    Runs on your computer; we can only read tool lists from internet endpoints

Compared with others in Developer toolsi

  • More stars than 0% of the other 1390 servers in this category
  • Published to the registry more recently than 76% of the other 1390 servers in this category
  • Basic checks equal to or better than 100% of the other 1390 servers in this category

Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.

Common questions

Is bash-mcp safe?

It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.

What keys or codes does it need?

The registry does not list a required key, though some servers ask you to sign in on first use.

Does it run on my computer or in the cloud?

It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).

Is it still maintained?

The GitHub repo last changed –, and the latest version (5.0.1) reached the registry 14 days ago.

Which apps can use it?

Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.

What can I use instead?

In the same category: GitHub, Desktop Commander, Cloudflare MCP

Alternatives

Servers in the same category from other makers, sorted by stars.

Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi

GitHub

by github

GitHub’s official server lets AI read and manage code, issues and pull requests in your account. Use GitHub’s hosted version or run it locally with Docker.

Computer or cloud★ 34,245MITUpdated 3 days ago
Install

Desktop Commander

by wonderwhy-er

MCP server for terminal commands, file operations, and process management

Runs on your computer★ 10,225MITUpdated 15 days ago
Install

Cloudflare MCP

by cloudflare

Cloudflare MCP servers

Runs in the cloud★ 4,446Apache-2.0Updated 14 months ago
Install

README from the maker

Open the README

Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.

bash-mcp

An MCP server that wraps common CLI tools (kubectl, terraform, helm, git, argocd, jq, yq, ripgrep, etc.) and returns structured JSON instead of raw text output.

Designed for AI agents and LLM-powered workflows where parsing human-readable CLI output wastes tokens and breaks easily.

Created with the help of Claude since it is the main consumer of the structured data.

Quick Start

Option 1: Zero-install with npx

No installation needed — just add the MCP config and npx will fetch it on first use.

Option 2: Global install
npm install -g @nickw8/bash-mcp
Option 3: Install from source
git clone https://github.com/nickw8/bash-mcp.git

cd bash-mcp npm install && npm run build npm link

Verify your setup

Run the built-in preflight check before wiring bash-mcp into a client:

npx -y @nickw8/bash-mcp --doctor   # or: bash-mcp --doctor (global install)

It reports your Node version, whether the MCP SDK loads, which CLIs are available (versions included), and the resolved BASH_MCP_MODE — then exits non-zero if a critical check fails (Node too old or the SDK can't load). Missing CLIs are advisory, not failures. Without --doctor, the binary starts the MCP server as usual.

Claude Code Setup

Add bash-mcp to your Claude Code settings. For all projects (recommended), edit ~/.claude/settings.json. For a single project, edit .claude/settings.json in the project root.

With npx (no install required):

{

"mcpServers": { "bash-mcp": { "command": "npx", "args": ["-y", "@nickw8/bash-mcp"], "env": { "BASH_MCP_MODE": "readOnly" } } } }

Safe by default: an unset BASH_MCP_MODE resolves to readOnly, which

blocks mutating run/batch commands. The examples set it explicitly for

clarity. For trusted local use, set BASH_MCP_MODE=off to allow writes.

With global install:

{

"mcpServers": { "bash-mcp": { "command": "bash-mcp", "env": { "BASH_MCP_MODE": "readOnly" } } } }

To verify it's working, start Claude Code and check that bash-mcp tools (like cat, rg, git_status) appear in the tool list.

You can also add it from the CLI:

claude mcp add bash-mcp -e BASH_MCP_MODE=readOnly -- npx -y @nickw8/bash-mcp
Steer agents toward the structured tools (optional)

Registering the server exposes the tools, but agents still reach for raw Bash out of habit. Two assets fix that: a rules file (~/.claude/rules/bash-mcp-tools.md, auto-loaded into every session — the tool inventory) and a PreToolUse(Bash) redirect hook. Install both with:

npx -y @nickw8/bash-mcp --install-claude        # copy into ~/.claude

npx -y @nickw8/bash-mcp --install-claude --check # report drift, write nothing

It prints the settings.json hook block to paste in (the rules file needs no settings — Claude Code auto-loads ~/.claude/rules/*.md). See hooks/README.md for details and the clone-time npm run claude:install equivalent. --uninstall-claude removes both files again.

Or install the Claude Code plugin, which bundles the server and the hook (in warn mode — it never blocks unless BASH_MCP_HOOK=block):

/plugin install bash-mcp --marketplace nickw8/bash-mcp

Every other client (VS Code/Copilot, Codex, generic stdio) and pinned versions: docs/guides/installation.md.

Claude Desktop Setup

Edit claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\) and add the same mcpServers entry:

{

"mcpServers": { "bash-mcp": { "command": "npx", "args": ["-y", "@nickw8/bash-mcp"], "env": { "BASH_MCP_MODE": "readOnly" } } } }

Restart Claude Desktop after editing.

Cursor Setup

Add bash-mcp to ~/.cursor/mcp.json (global) or .cursor/mcp.json (per-project):

{

"mcpServers": { "bash-mcp": { "command": "npx", "args": ["-y", "@nickw8/bash-mcp"], "env": { "BASH_MCP_MODE": "readOnly" } } } }

(Use "command": "bash-mcp" with no args if you installed globally.) Any MCP-aware client works the same way — point it at the bash-mcp binary or npx -y @nickw8/bash-mcp.

Recommended Hooks

Optional Claude Code hooks in hooks/ steer agents toward the structured tools by blocking raw shell commands (git status, kubectl get, cat, …) that have a bash-mcp equivalent, while letting write commands (git commit, kubectl apply) pass through. BASH_MCP_HOOK=warn makes every block advisory; off disables the hook.

See docs/runbooks/hooks-setup.md for setup.

Why Structured Output?

Raw CLI tools return text meant for humans. AI agents waste tokens parsing tables, aligning columns, and guessing field boundaries. bash-mcp runs the same CLI tools but returns structured JSON with typed schemas, so the agent gets exactly the data it needs.

# Raw kubectl output: 148 tokens to parse a table

NAME READY STATUS RESTARTS AGE nginx-7c5b8d6c88-abc12 1/1 Running 0 3d

bash-mcp output: typed, compact, ready to use

{ "name": "nginx-7c5b8d6c88-abc12", "status": "Running", "age": "3d", ... }

See docs/guides/token-benchmarks.md for measured savings (e.g. kubectl describe pod → kube_diagnose_pod is ~64% fewer tokens).

Philosophy: structured tools first, run is the escape hatch

  1. Reach for a structured tool first. Every wrapper returns typed JSON the agent can use directly — no column-counting, no re-parsing on a format change.
  2. Prefer a diagnostic over a chain of raw commands. Tools like kube_diagnose_pod, helm_release_triage, and argo_app_health_summary answer an *operational question* in one call — { status, likelyCauses, suggestedNextCommands, evidence } — instead of making the agent run get, then logs, then reason across both.
  3. `run` / `batch` are the escape hatch. For commands without a dedicated wrapper, run executes anything with smart truncation. Optional hooks actively steer agents back to the structured tool when a raw equivalent is invoked.

Read-only tools carry the MCP readOnlyHint annotation. run/batch can be gated with BASH_MCP_MODE (see Configuration).

Which tool should I use?

Pick the structured tool that matches your intent instead of reaching for a raw command. The list_guidance tool returns this same index as JSON (filter by intent or category), so agents can self-select without the README.

I want to…Use thisInstead of
diagnose a crashing or failing Kubernetes podkube_diagnose_podkubectl describe pod, kubectl logs
find all not-ready or failing pods in a namespacekube_pod_failure_summarykubectl get pods, `kubectl get pods \grep`
check a deployment's rollout healthkube_deployment_statuskubectl rollout status, kubectl get deployment
understand recent cluster eventskube_events_summarykubectl get events
summarize the changes in a Terraform plantf_plan_summaryterraform plan, terraform show
review the current feature branch before a PRgit_pr_contextgit diff, git log, git status
understand the overall state of a repositoryrepo_health_summarygit status, git log --oneline
read a file's structure without loading the full bodyoutlinecat (entire file), cat
read one region of a large filecatcat (whole file), sed -n '10,40p'
keep a broad search from flooding the contextrg`rg \head`
search for exact code references or symbolsrggrep -r, rg
check whether a pull request's CI checks passgh_pr_checksgh pr checks, gh pr view
find out why a CI / GitHub Actions run failedgh_run_failure_summarygh run view --log-failed, gh run list
check whether a GitLab pipeline or merge request's jobs passglab_ci_statusglab ci get, glab ci status
find out why a GitLab CI pipeline failedglab_pipeline_failure_summaryglab ci trace, glab ci view
triage why a Helm release is unhealthyhelm_release_triagehelm status, helm get values
check whether an ArgoCD app is healthy and in syncargo_app_health_summaryargocd app get, argocd app list
validate a Liquibase changelog for errorsliquibase_validateliquibase validate
preview the SQL Liquibase would run for pending changesetsliquibase_update_sqlliquibase updateSQL, `liquibase updateSQL \grep`
list Liquibase changesets not yet applied to the databaseliquibase_statusliquibase status --verbose
lint a shell script for bugs and quoting issuesbash_lintshellcheck, shellcheck -f json1
run a bats or shell test suitebash_testbats, bash test.sh
discover which CLIs are installed before calling a toolcheck_environmentwhich, --version

Tools

📖 [Full tool reference → `docs/tools.md`](docs/tools.md) — generated from the

registered tools (inputs, outputs, and the raw command each one approximates).

Regenerate with npm run docs:tools.

Environment
ToolDescription
check_environmentReport which CLIs are installed (and their versions) so you can pick the right tool before calling it.
list_guidanceReturn an intent → preferred-tool index so you can pick the right bash-mcp tool for a goal.
Filesystem
ToolDescription
lsList files in a directory.
treeShow directory structure as a compact tree.
duShow disk usage for paths.
find_filesFind files by name pattern, type, or modification time.
Search
ToolDescription
rgSearch file contents with ripgrep.
globFind files matching a glob pattern.
File
ToolDescription
catRead one or more files with line numbers and smart truncation.
outlineShow the structural outline of a file — function/class names, top-level comments, imports.
Git
ToolDescription
git_statusStructured git status: branch, staged/unstaged/untracked files.
git_logStructured git log: commit hash, author, date, message.
git_diffStructured git diff: files changed with insertions/deletions counts.
git_branchesList git branches.
repo_health_summaryOne-call snapshot of a git working tree: branch, ahead/behind vs upstream, staged/unstaged/untracked counts, recent commits, and the uncommitted diffstat.
git_pr_contextCollect the commits and file changes of a branch vs a base ref (for writing a PR description): commit list, changed files with status, and a diffstat over base...head.
git_diff_contentShow git diff with structured patch content.
GitHub
ToolDescription
gh_pr_checksReport a pull request's CI checks as counts per state plus the failing and pending checks.
gh_run_failure_summaryDiagnose a GitHub Actions run in one call: status, the failed jobs and steps, and the ##[error] lines from the failed log as evidence.
GitLab
ToolDescription
glab_ci_statusReport a GitLab pipeline's jobs as counts per status plus the failed, running and pending jobs.

| glab_pipeline_failure_summary | Diagnose a GitLab pipeline in one call: status, the failed jobs and why GitLab says they failed, and the last script li

Only the beginning is shown; read the rest in the repo

Ask PopNx