MCP CLI Wrapper
A flexible MCP (Model Context Protocol) server that wraps any CLI tool and exposes its subcommands as individual MCP tools with typed parameters.
Features
Config-driven tools: Define CLI subcommands as MCP tools via JSON configuration
Fallback mode: Single
run_clitool when no config providedType-safe parameters: Zod validation for all inputs before execution
Flexible parameter types: Supports positional args, flags, and boolean switches
Preserved parameter order: Flags and positionals stay interleaved as defined
Nested subcommands: Supports
git remote addstyle commandsSafe execution: Uses
spawnSyncto prevent command injectionFull output capture: Returns stdout, stderr, and exit code
Installation
Usage
Basic (Fallback Mode)
Run without a config file to get a single run_cli tool that accepts raw arguments:
This exposes one tool:
run_cli- Acceptsargs: string[]and executesgit <args...>
With Configuration
Run with a config file to expose multiple typed tools:
This exposes tools like:
git_status- Show working tree statusgit_commit- Commit with typedmessageand optionalallflaggit_add- Stage files withpathspecparametergit_log- Show logs withonelineandmax_countoptionsAnd more...
Configuration Format
Create a JSON file with tool definitions:
Parameter Configuration
Each parameter supports:
Field | Type | Description |
| string | Parameter name (used in schema) |
|
|
|
| Parameter type |
| string | Description shown to AI agents |
| string (optional) | CLI flag (e.g.,
,
). If omitted, parameter is positional |
| boolean | Whether the parameter is required |
Parameter Order
Parameters are processed in declaration order. This allows you to define tools where flags must precede positional arguments:
This produces: docker run -it ubuntu bash (flags before positionals)
Nested Subcommands
Use spaces in subcommand for nested commands:
MCP Client Configuration
Claude Desktop
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):
Claude Code
Add to your MCP settings:
Example Configs
Git (included)
See config.example.json for a complete Git configuration with 8 tools.
Docker (example)
Security
No shell interpolation: Arguments are passed directly via
spawnSync, preventing command injectionInput validation: All parameters validated with Zod schemas before execution
Local execution only: Commands run on the local machine with the user's permissions
Development
License
MIT
This server cannot be installed