Content
# Shell Execution MCP Server
A Model Context Protocol (MCP) server that provides persistent shell command execution capabilities for Claude and other MCP-compatible AI assistants.
## Features
- **Persistent Shell Session**: Maintains state between commands in the same session
- **Background Execution**: Run commands in the background with proper process management
- **Cross-Platform**: Works on macOS, Linux, and Windows with the appropriate shell
- **Timeout Control**: Configure command execution timeouts to prevent hanging
- **Session Reset**: Ability to reset the shell session if needed
## Installation
```bash
# Clone the repository
git clone https://github.com/samihalawa/mcp-server-shell-exec.git
cd mcp-server-shell-exec
# Install dependencies
npm install
# Make the server executable
chmod +x server.js
```
## Usage
### Starting the Server
```bash
npm start
```
### Configuration
Add the server to your MCP configuration:
#### macOS/Linux
```json
{
"mcpServers": {
"shell-exec-server": {
"command": "/path/to/node",
"args": [
"/absolute/path/to/mcp-server-shell-exec/server.js"
]
}
}
}
```
#### Windows
```json
{
"mcpServers": {
"shell-exec-server": {
"command": "node",
"args": [
"C:\\path\\to\\mcp-server-shell-exec\\server.js"
]
}
}
}
```
### Available Tools
#### execute-command
Execute a shell command in the persistent shell session.
Parameters:
- `command` (string, required): The shell command to execute
- `runInBackground` (boolean, optional): Whether to run the command in the background. Default: false
- `timeoutMs` (number, optional): Timeout in milliseconds for the command. Default: 30000
Returns:
- `success` (boolean): Whether the command executed successfully
- `output` (string): Output from the command execution
#### reset-shell
Reset the shell session. This will kill the current session and start a new one.
Parameters: None
Returns:
- `success` (boolean): Whether the shell was reset successfully
- `message` (string): Status message
## Example Usage
1. Execute a simple command:
```
execute-command(command: "ls -la")
```
2. Run a long-running command in the background:
```
execute-command(command: "sleep 60 && echo 'Done'", runInBackground: true)
```
3. Execute a command with a custom timeout:
```
execute-command(command: "find / -name '*.js'", timeoutMs: 60000)
```
4. Reset the shell session:
```
reset-shell()
```
## How It Works
The server uses Node.js to create a shell process that maintains state between commands. This allows for:
- Environment variables to persist between commands
- Working directory to remain consistent
- Background processes to continue running
- Interactive commands that require stdin/stdout
## Requirements
- Node.js 14+
- Compatible with Claude Desktop, Cursor, and other MCP-compatible applications
## Troubleshooting
If you encounter issues with the MCP server, check the following:
### Common Error: Tool Execution Failed
If you see "Tool execution failed" errors, check:
1. That the server is running correctly
2. That your configuration file uses absolute paths
3. That you have restarted your client application after changing the configuration
### Testing the Server
You can test the server directly by sending a command:
```bash
echo '{"id":"test1","jsonrpc":"2.0","method":"execute-command","params":{"command":"echo \"Hello World\""}}' | node server.js
```
This should return a properly formatted JSON response with the output.
### Configuration Path Issues
Double-check the paths in your configuration:
- Use absolute paths instead of relative paths
- For Windows users, use forward slashes (/) or escaped backslashes (\\) in the path
- Verify the server file path is correct
Connection Info
You Might Also Like
markitdown
MarkItDown-MCP is a lightweight server for converting URIs to Markdown.
servers
Model Context Protocol Servers
Time
A Model Context Protocol server for time and timezone conversions.
Filesystem
Node.js MCP Server for filesystem operations with dynamic access control.
Sequential Thinking
A structured MCP server for dynamic problem-solving and reflective thinking.
git
A Model Context Protocol server for Git automation and interaction.