https://github.com/codelion/dynamic-shell-server
https://github.com/codelion/dynamic-shell-server
Last synced: 9 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/codelion/dynamic-shell-server
- Owner: codelion
- License: apache-2.0
- Created: 2025-02-18T04:04:24.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-02-18T04:37:03.000Z (over 1 year ago)
- Last Synced: 2025-02-18T05:22:21.710Z (over 1 year ago)
- Language: Python
- Size: 15.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-mcp-security - dynamic-shell-server - githubcom-codelion-dynamic-shell-server) | (γ«γγ΄γͺ / π οΈ <a name="developer-tools"></a>ιηΊγγΌγ«)
README
# Dynamic Shell Command MCP Server
A Model Context Protocol (MCP) server that enables secure execution of shell commands with a dynamic approval system. This server allows running arbitrary commands while maintaining security through user approval and audit logging.
## Features
- π Dynamic command approval system
- π Persistent storage of approved commands
- π Comprehensive audit logging
- β±οΈ Command timeout protection
- π Command revocation capability
## Installation
1. Clone this repository:
```bash
git clone
cd dynamic-shell-server
```
2. Create a virtual environment and activate it:
```bash
python -m venv venv
source venv/bin/activate # On Windows use: venv\Scripts\activate
```
3. Install dependencies:
```bash
pip install -r requirements.txt
```
## Usage
### Standalone Mode
Run the server directly:
```bash
python dynamic_shell_server.py
```
### Claude Desktop Integration
1. Open your Claude Desktop configuration:
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
2. Add the server configuration:
```json
{
"mcpServers": {
"shell": {
"command": "/absolute/path/to/.venv/bin/python",
"args": ["/absolute/path/to/dynamic_shell_server.py"]
}
}
}
```
3. Restart Claude Desktop
### Command Approval Process
When running a command for the first time, you'll be prompted with:
```
Command Approval Required
Command:
Arguments:
This command has not been previously approved. Do you want to:
1. Allow this command once
2. Allow this command and remember for future use
3. Deny execution
Please choose an option (1-3):
```
### Available Tools
1. `execute_command`: Execute a shell command
- Parameters:
- `command`: The command to execute
- `args`: Optional list of command arguments
2. `revoke_command_approval`: Revoke approval for a previously approved command
- Parameters:
- `command`: The command to revoke approval for
### Available Resources
1. `commands://approved`: Lists all approved commands with their approval dates
## Data Storage
The server stores its data in `~/.config/mcp-shell-server/`:
- `approved_commands.json`: List of approved commands and their approval dates
- `audit.log`: Detailed execution history of all commands
## Security Features
- User approval required for first-time command execution
- Persistent storage of approved commands
- Comprehensive audit logging
- 5-minute command timeout
- No shell execution (prevents injection attacks)
- Command revocation capability
## Example Usage
Through Claude Desktop:
```
Human: Run 'npm install' in my project directory
Assistant: I'll help you run that command. Since this is the first time running 'npm install', you'll need to approve it.
[Command approval prompt appears]