Skip to main content
Glama
README.md
# Shell Server - MCP Terminal Tool

A simple MCP (Model Context Protocol) server that exposes a terminal tool for executing shell commands.

## Features

- Execute shell commands via MCP protocol
- Support for custom working directories
- Configurable timeout for command execution
- Safe command parsing using `shlex`
- Proper error handling and output capture

## Installation

Install dependencies using `uv` (recommended) or `pip`:

```bash
# Using uv
uv sync

# Or using pip
pip install -e .
```

## Usage

### Running the Server

Run the server directly:

```bash
python server.py
```

The server uses stdio transport by default, which is suitable for MCP clients like Claude Desktop or Cursor.

### MCP Client Configuration

To use this server with an MCP client, add it to your client configuration:

**Claude Desktop** (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):

```json
{
  "mcpServers": {
    "shellserver": {
      "command": "python",
      "args": ["/path/to/shellserver/server.py"]
    }
  }
}
```

**Cursor** (similar configuration):

```json
{
  "mcpServers": {
    "shellserver": {
      "command": "python",
      "args": ["/path/to/shellserver/server.py"]
    }
  }
}
```

### Tool Usage

The server exposes a single tool called `terminal` with the following parameters:

- `command` (required): The shell command to execute (e.g., `"ls -la"`, `"pwd"`, `"echo hello"`)
- `working_directory` (optional): The working directory to run the command in
- `timeout` (optional): Timeout in seconds (default: 30.0)

### Example Tool Calls

```json
{
  "name": "terminal",
  "arguments": {
    "command": "ls -la"
  }
}
```

```json
{
  "name": "terminal",
  "arguments": {
    "command": "pwd",
    "working_directory": "/tmp"
  }
}
```

```json
{
  "name": "terminal",
  "arguments": {
    "command": "echo 'Hello, World!'",
    "timeout": 10.0
  }
}
```

## Security Considerations

⚠️ **Warning**: This server allows execution of arbitrary shell commands. Use with caution:

- The server executes commands in the context of the user running it
- Commands are parsed using `shlex` to handle quoted arguments safely
- A timeout is enforced to prevent long-running commands
- Consider running the server in a restricted environment or container for production use

## Development

The server is built using:
- [MCP Python SDK](https://github.com/modelcontextprotocol/python-sdk)
- FastMCP for simplified server creation

## License

MIT