Documentation

Installation

Two recommended options: AppImage for any Linux system, or Nix for reproducible builds.

AppImage (Recommended for non-Nix users)

Single portable executable with all 104+ CLI tools bundled. No dependencies required.

# Install to ~/.local/bin (user)
curl -fsSL https://raw.githubusercontent.com/NacoSolutions/modern-cli-mcp/main/install.sh | sh

# Install to /usr/local/bin (system-wide)
curl -fsSL https://raw.githubusercontent.com/NacoSolutions/modern-cli-mcp/main/install.sh | sh -s -- --system

Options: --full (default, AppImage) | --binary (server only) | --user (default) | --system

Nix (Recommended for Nix users)

Runs directly from GitHub or FlakeHub. Requires Nix with flakes.

# Run from GitHub (latest)
nix run github:NacoSolutions/modern-cli-mcp

# Run from FlakeHub (versioned)
nix run "https://flakehub.com/f/NacoSolutions/modern-cli-mcp/0.4.tar.gz"
Other installation methods

Add as flake input

# flake.nix
{
  inputs.modern-cli-mcp.url = "github:NacoSolutions/modern-cli-mcp";
  # or FlakeHub: "https://flakehub.com/f/NacoSolutions/modern-cli-mcp/*.tar.gz"
}

Classic Nix (no flakes)

nix-build https://github.com/NacoSolutions/modern-cli-mcp/archive/main.tar.gz -A defaultNix.default
./result/bin/modern-cli-mcp

Cargo (tools not included)

Server only. Requires all CLI tools installed separately in PATH.

cargo install --git https://github.com/NacoSolutions/modern-cli-mcp

Configuration

Add to your MCP client's config file:

{
  "mcpServers": {
    "modern-cli": {
      "command": "~/.local/bin/modern-cli-mcp",
      "args": []
    }
  }
}

Use /usr/local/bin/modern-cli-mcp for system-wide installs

Config File Locations

Agent Profiles

Profiles pre-expand relevant tool groups for specific agent roles, reducing cognitive load and improving response latency. Use the --profile flag to select a profile.

Usage

# Run with a specific profile
nix run github:NacoSolutions/modern-cli-mcp -- --profile explore

# List available profiles
nix run github:NacoSolutions/modern-cli-mcp -- --list-profiles

# List tool groups
nix run github:NacoSolutions/modern-cli-mcp -- --list-groups

MCP Configuration with Profile

{
  "mcpServers": {
    "modern-cli": {
      "command": "nix",
      "args": ["run", "github:NacoSolutions/modern-cli-mcp", "--", "--profile", "explore"]
    }
  }
}

Available Profiles

explore filesystem, search, git

Codebase discovery and exploration. Read-only focus for understanding project structure.

architect filesystem, search, reference

System design and architecture planning. Access to docs and reference materials.

review git, search, diff

Code review and quality analysis. Git diffs, search, and file comparison.

generator file_ops, search, git, system

General task execution. Broadest access for typical development work.

test file_ops, search, system

Test writing and execution. Shell access for running test suites.

dev-deploy kubernetes, container, git, github

Container and Kubernetes deployment. CI/CD and infrastructure operations.

api network, text, file_ops

API interaction and integration. HTTP requests, JSON/YAML processing.

full all groups

All tools pre-expanded. Maximum capability, higher cognitive load.

Tool Discovery

Even with a limited profile, agents can discover additional tools:

Dynamic Toolsets (Beta)

Start with minimal tools and enable groups on demand. Reduces cognitive load for AI agents by exposing only relevant tools.

Enable Dynamic Mode

{
  "mcpServers": {
    "modern-cli": {
      "command": "nix",
      "args": ["run", "github:NacoSolutions/modern-cli-mcp", "--", "--dynamic-toolsets"]
    }
  }
}

Pre-enable Specific Toolsets

{
  "mcpServers": {
    "modern-cli": {
      "command": "nix",
      "args": ["run", "github:NacoSolutions/modern-cli-mcp", "--", "--dynamic-toolsets", "--toolsets=filesystem,git"]
    }
  }
}

Meta-tools

In dynamic mode, these tools are always available:

Available Toolsets

filesystem eza, bat, fd, dust, duf, rip
file_ops read, write, edit, patch
search rg, fzf, ast-grep, web
text jq, yq, sd, hck, miller
git status, add, commit, branch
github repo, issue, pr, release, api
gitlab issue, mr, pipeline
kubernetes kubectl, stern, helm
container podman, dive, trivy
network xh, usql, doggo
system shell, nix_shell, procs
archive compress, decompress, list
reference tldr, navi, grex
diff delta, difftastic
mcp cache, tasks, context

.agentignore

Control which files AI agents can access using .agentignore files. Uses gitignore syntax but operates independently—tools respect .agentignore only, not .gitignore.

Pattern Sources

Patterns are loaded from (in order of precedence):

  1. ~/.config/agent/ignore — Global patterns for all projects
  2. .agentignore — Per-directory patterns (walked up from working directory)

Example

# Secrets and credentials
*.secret
.env*
secrets/
credentials.json

# Large generated files
node_modules/
target/
*.min.js

# Sensitive data
*.pem
*.key

Behavior

Usage

Once configured, the tools are available to your AI assistant. Example prompts:

"List files in the current directory with git status"

Uses: eza

"Search for TODO comments in all Rust files"

Uses: rg

"Show my open GitHub issues"

Uses: gh_issue

"Get all pods in the production namespace"

Uses: kubectl_get

Environment Variables

Variable Description Default
MCP_DYNAMIC_TOOLSETS Enable dynamic toolsets mode false
MCP_TOOLSETS Comma-separated toolsets to pre-enable -
RUST_LOG Logging level info
GITHUB_TOKEN For GitHub CLI tools -
GITLAB_TOKEN For GitLab CLI tools -
KUBECONFIG Kubernetes config path ~/.kube/config