MCP Shell Server
A server that uses the Model Context Protocol (MCP) to execute shell commands. It functions as a bridge that allows AI agents to safely execute shell commands.
Features
- Execute shell commands (single-line and multi-line support)
- Support for various shells (bash, zsh, fish, powershell, cmd, etc.)
- Detailed error handling and logging
- MCP Inspector compatible
Installation
From npm (as a user)
# Using npm
npm install -g @mkusaka/mcp-shell-server
# Using yarn
yarn global add @mkusaka/mcp-shell-server
# Using pnpm
pnpm add -g @mkusaka/mcp-shell-server
From source (for development)
# Clone the repository
git clone https://github.com/mkusaka/mcp-shell-server.git
cd mcp-shell-server
# Install dependencies
pnpm install
# Build the project
pnpm build
Usage
Direct Execution
node dist/index.js
# or as an executable
./dist/index.js
Development Mode
pnpm dev
Testing with MCP Inspector
pnpm inspect
Command Line Arguments
-s, --shell <shell> Specify the path to the shell to use
-h, --help Display help message
-V, --version Display version information
Tool Reference
shell_exec
Executes commands in the specified shell.
Parameters:
command
(string, required): The shell command to execute
Resource Reference
The server provides the following system information as resources:
hostname
Returns the hostname of the system.
URI: hostname://
platform
Returns the operating system platform.
URI: platform://
shell
Returns the shell path being used by the server.
URI: shell://
username
Returns the current username.
URI: username://
system-info
Returns comprehensive system information in JSON format, including:
- hostname
- platform
- shell
- username
- CPU count
- Total memory
- Free memory
- System uptime
Usage Examples
Basic Command Execution
{
"name": "shell_exec",
"parameters": {
"command": "echo Hello, World!"
}
}
Multi-line Command (Heredoc) Execution
{
"name": "shell_exec",
"parameters": {
"command": "cat << EOF | grep 'example'\nThis is an example text.\nAnother line without the keyword.\nEOF"
}
}
Development
Project Structure
src/
├── index.ts # Main entry point
└── shell-server/
├── index.ts # Shell server implementation
└── lib/
└── logger.ts # Logging configuration
Logging
Logs are written to the mcp-shell.log
file.
License
MIT