Overview
What is MCPShell?
MCPShell is a tool that allows LLMs to safely execute command-line tools through the Model Context Protocol (MCP). It provides a secure bridge between LLMs and operating system commands, enabling AI assistants to run shell commands with configurable constraints and parameter validation.
How to use MCPShell?
Create a YAML configuration file defining your tools with parameters, constraints, and the shell command to run. Then configure MCPShell as an MCP server in your LLM client (e.g., Cursor, VS Code) using go run github.com/inercia/[email protected] mcp --tools <config>. After refreshing the client, you can ask the LLM questions that require command execution.
Key features of MCPShell
- Flexible command execution with parameter substitution through templates
- Configuration-based tool definitions in YAML with parameters and constraints
- Security through CEL expression validation and optional sandboxed environments
- Quick prototyping of MCP tools by adding shell code
- Simple integration with any LLM client supporting the MCP protocol
Use cases of MCPShell
- Analyzing disk usage to identify space-consuming directories
- Running Kubernetes commands via kubectl for cluster management
- Executing AWS CLI commands for network diagnostics
FAQ from MCPShell
What makes MCPShell secure for executing shell commands?
MCPShell validates tool parameters using CEL expressions before execution, and optionally runs commands in sandboxed environments. The README strongly recommends limiting tools to read-only actions and reviewing templates for injection vulnerabilities.
Does MCPShell require specific runtime dependencies?
Yes, the go command must be available to run MCPShell, as it is invoked via go run. The tool itself is written in Go and fetched from GitHub.
Where are tool configurations stored?
Tool definitions are stored in YAML files. By default, MCPShell looks for them in the ~/.mcpshell/tools/ directory, though custom paths can be specified with the --tools argument and relative paths are supported.