https://github.com/GongRzhe/terminal-controller-mcp
A Model Context Protocol (MCP) server that enables secure terminal command execution, directory navigation, and file system operations through a standardized interface.
https://github.com/GongRzhe/terminal-controller-mcp
Last synced: 22 days ago
JSON representation
A Model Context Protocol (MCP) server that enables secure terminal command execution, directory navigation, and file system operations through a standardized interface.
- Host: GitHub
- URL: https://github.com/GongRzhe/terminal-controller-mcp
- Owner: GongRzhe
- License: mit
- Created: 2025-02-25T16:18:55.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2025-03-11T07:08:31.000Z (about 1 month ago)
- Last Synced: 2025-03-19T08:03:46.730Z (about 1 month ago)
- Language: Python
- Homepage:
- Size: 30.3 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-mcp-servers - TermCtrlMCP - A Model Context Protocol (MCP) server that enables secure terminal command execution, directory navigation, and file system operations through a standardized interface. (Table of Contents / System Automation)
- awesome-mcp-servers - TermCtrlMCP - A Model Context Protocol (MCP) server that enables secure terminal command execution, directory navigation, and file system operations through a standardized interface. (Table of Contents / System Automation)
README
# Terminal Controller for MCP
A Model Context Protocol (MCP) server that enables secure terminal command execution, directory navigation, and file system operations through a standardized interface.

## Features
- **Command Execution**: Run terminal commands with timeout controls and comprehensive output capture
- **Directory Management**: Navigate and list directory contents with intuitive formatting
- **Security Measures**: Built-in safeguards against dangerous commands and operations
- **Command History**: Track and display recent command executions
- **Cross-Platform Support**: Works on both Windows and UNIX-based systems## Installation
### Prerequisites
- Python 3.11+
- An MCP-compatible client (such as Claude Desktop)
- UV/UVX installed (optional, for UVX method)### Method 1: PyPI Installation (Recommended)
Install the package directly from PyPI:
```bash
pip install terminal-controller
```Or if you prefer to use UV:
```bash
uv pip install terminal-controller
```### Method 2: From Source
If you prefer to install from source:
1. Clone this repository:
```bash
git clone https://github.com/GongRzhe/terminal-controller-mcp.git
cd terminal-controller-mcp
```2. Run the setup script:
```bash
python setup_mcp.py
```## Client Configuration
### Claude Desktop
There are two ways to configure Claude Desktop to use Terminal Controller:
#### Option 1: Using UVX (Recommended)
Add this to your Claude Desktop configuration file:
```json
"terminal-controller": {
"command": "uvx",
"args": ["terminal_controller"]
}
```#### Option 2: Using Python Directly
```json
"terminal-controller": {
"command": "python",
"args": ["-m", "terminal_controller"]
}
```The configuration path varies by operating system:
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`### Cursor
For Cursor, use similar configuration settings as Claude Desktop.
### Other MCP Clients
For other clients, refer to their documentation on how to configure external MCP servers.
## Usage
Once configured, you can use natural language to interact with your terminal through your MCP client:
- "Run the command `ls -la` in the current directory"
- "Navigate to my Documents folder"
- "Show me the contents of my Downloads directory"
- "Show me my recent command history"## API Reference
Terminal Controller exposes the following MCP tools:
### `execute_command`
Execute a terminal command and return its results.
**Parameters:**
- `command`: The command line command to execute
- `timeout`: Command timeout in seconds (default: 30)**Returns:**
- Output of the command execution, including stdout, stderr, and execution status### `get_command_history`
Get recent command execution history.
**Parameters:**
- `count`: Number of recent commands to return (default: 10)**Returns:**
- Formatted command history record### `get_current_directory`
Get the current working directory.
**Returns:**
- Path of current working directory### `change_directory`
Change the current working directory.
**Parameters:**
- `path`: Directory path to switch to**Returns:**
- Operation result information### `list_directory`
List files and subdirectories in the specified directory.
**Parameters:**
- `path`: Directory path to list contents (default: current directory)**Returns:**
- List of directory contents, formatted with icons for directories and files## Security Considerations
Terminal Controller implements several security measures:
- Timeout controls to prevent long-running commands
- Blacklisting of dangerous commands (rm -rf /, format, mkfs)
- Proper error handling and isolation of command execution
- Access only to the commands and directories specifically granted## Limitations
- Only commands that complete within the timeout period will return results
- By default, the server has access to the same file system permissions as the user running it
- Some interactive commands may not work as expected due to the non-interactive nature of the terminal interface## Troubleshooting
If you encounter issues:
1. Check that your Python version is 3.11 or higher
2. Verify that your Claude Desktop configuration is correct
3. Try running the terminal controller directly to check for errors:
```bash
python -m terminal_controller
```
4. For UVX-related issues, try:
```bash
uvx terminal_controller
```
5. Review your MCP client's logs for connection errors## Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
## License
MIT