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
{
"mcpServers": {
"modern-cli": {
"command": "nix",
"args": ["run", "github:NacoSolutions/modern-cli-mcp", "--"]
}
}
}
Config File Locations
~/.claude/settings.json— Claude Code~/.config/claude/claude_desktop_config.json— Claude Desktop~/.cursor/mcp.json— Cursor~/.config/cline/mcp_settings.json— Cline
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:
list_tool_groups— List all 15 tool groups with descriptionsexpand_tools <group>— Show all tools in a specific group
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:
list_available_toolsets— Show all toolsets and their enabled statusget_toolset_tools— Preview tools in a toolset before enablingenable_toolset— Activate a toolset (use "all" for everything)
Available Toolsets
filesystem eza, bat, fd, dust, duf, ripfile_ops read, write, edit, patchsearch rg, fzf, ast-grep, webtext jq, yq, sd, hck, millergit status, add, commit, branchgithub repo, issue, pr, release, apigitlab issue, mr, pipelinekubernetes kubectl, stern, helmcontainer podman, dive, trivynetwork xh, usql, doggosystem shell, nix_shell, procsarchive compress, decompress, listreference tldr, navi, grexdiff delta, difftasticmcp 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):
~/.config/agent/ignore— Global patterns for all projects.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
- Blocked paths return an error:
Path is blocked by .agentignore - Search tools (fd, rg, ast-grep) automatically apply ignore patterns
- Patterns in child directories extend (not replace) parent patterns
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 |