Command line interface for MCP clients with secure execution and customizable security policies
A secure Model Context Protocol (MCP) server implementation for executing controlled command-line operations with comprehensive security features.
This MCP server enables secure command-line execution with robust security measures including command whitelisting, path validation, and execution controls. Perfect for providing controlled CLI access to LLM applications while maintaining security.
Configure the server using environment variables:
Variable | Description | Default |
---|---|---|
ALLOWED_DIR | Base directory for command execution (Required) | None (Required) |
ALLOWED_COMMANDS | Comma-separated list of allowed commands or 'all' | ls,cat,pwd |
ALLOWED_FLAGS | Comma-separated list of allowed flags or 'all' | -l,-a,--help |
MAX_COMMAND_LENGTH | Maximum command string length | 1024 |
COMMAND_TIMEOUT | Command execution timeout (seconds) | 30 |
Note: Setting ALLOWED_COMMANDS
or ALLOWED_FLAGS
to 'all' will allow any command or flag respectively.
To install CLI MCP Server for Claude Desktop automatically via Smithery:
npx @smithery/cli install cli-mcp-server --client claude
Executes whitelisted CLI commands within allowed directories.
Input Schema:
{
"command": {
"type": "string",
"description": "Single command to execute (e.g., 'ls -l' or 'cat file.txt')"
}
}
Security Notes:
Displays current security configuration and restrictions, including:
Add to your ~/Library/Application\ Support/Claude/claude_desktop_config.json
:
Development/Unpublished Servers Configuration
{
"mcpServers": {
"cli-mcp-server": {
"command": "uv",
"args": [
"--directory",
"<path/to/the/repo>/cli-mcp-server",
"run",
"cli-mcp-server"
],
"env": {
"ALLOWED_DIR": "</your/desired/dir>",
"ALLOWED_COMMANDS": "ls,cat,pwd,echo",
"ALLOWED_FLAGS": "-l,-a,--help,--version",
"MAX_COMMAND_LENGTH": "1024",
"COMMAND_TIMEOUT": "30"
}
}
}
}
Published Servers Configuration
{
"mcpServers": {
"cli-mcp-server": {
"command": "uvx",
"args": [
"cli-mcp-server"
],
"env": {
"ALLOWED_DIR": "</your/desired/dir>",
"ALLOWED_COMMANDS": "ls,cat,pwd,echo",
"ALLOWED_FLAGS": "-l,-a,--help,--version",
"MAX_COMMAND_LENGTH": "1024",
"COMMAND_TIMEOUT": "30"
}
}
}
}
In case it's not working or showing in the UI, clear your cache via
uv clean
.
The server provides detailed error messages for:
To prepare the package for distribution:
Sync dependencies and update lockfile:
uv sync
Build package distributions:
uv build
This will create source and wheel distributions in the
dist/
directory.
Publish to PyPI:
uv publish --token {{YOUR_PYPI_API_TOKEN}}
Since MCP servers run over stdio, debugging can be challenging. For the best debugging experience, we strongly recommend using the MCP Inspector.
You can launch the MCP Inspector via npm
with
this command:
npx @modelcontextprotocol/inspector uv --directory {{your source code local directory}}/cli-mcp-server run cli-mcp-server
Upon launching, the Inspector will display a URL that you can access in your browser to begin debugging.
This project is licensed under the MIT License - see the LICENSE file for details.
For more information or support, please open an issue on the project repository.