terminal controller mcp
An MCP server that enables secure terminal command execution, directory navigation, and file system operations through a standardized interface for LLMs.
An MCP server that enables secure terminal command execution, directory navigation, and file system operations through a standardized interface for LLMs.
A Model Context Protocol (MCP) server that enables secure terminal command execution, directory navigation, and file system operations through a standardized interface.
Install the package directly from PyPI:
pip install terminal-controller
Or if you prefer to use UV:
uv pip install terminal-controller
If you prefer to install from source:
Clone this repository:
git clone https://github.com/GongRzhe/terminal-controller-mcp.git
cd terminal-controller-mcp
Run the setup script:
python setup_mcp.py
There are two ways to configure Claude Desktop to use Terminal Controller:
Add this to your Claude Desktop configuration file:
"terminal-controller": {
"command": "uvx",
"args": ["terminal_controller"]
}
"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%Claudeclaude_desktop_config.json
For Cursor, use similar configuration settings as Claude Desktop.
For other clients, refer to their documentation on how to configure external MCP servers.
Once configured, you can use natural language to interact with your terminal through your MCP client:
ls -la
in the current directory"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
write_file
Write content to a file with overwrite or append options.
Parameters:
- path
: Path to the file
- content
: Content to write
- mode
: Write mode ('overwrite' or 'append', default: 'overwrite')
Returns: - Operation result information including verification of successful write
read_file
Read content from a file with optional row selection.
Parameters:
- path
: Path to the file
- start_row
: Starting row to read from (0-based, optional)
- end_row
: Ending row to read to (0-based, inclusive, optional)
Returns: - File content or selected lines
insert_file_content
Insert content at specific row(s) in a file.
Parameters:
- path
: Path to the file
- content
: Content to insert
- row
: Row number to insert at (0-based, optional)
- rows
: List of row numbers to insert at (0-based, optional)
Returns: - Operation result information
delete_file_content
Delete content at specific row(s) from a file.
Parameters:
- path
: Path to the file
- row
: Row number to delete (0-based, optional)
- rows
: List of row numbers to delete (0-based, optional)
Returns: - Operation result information
update_file_content
Update content at specific row(s) in a file.
Parameters:
- path
: Path to the file
- content
: New content to place at the specified row(s)
- row
: Row number to update (0-based, optional)
- rows
: List of row numbers to update (0-based, optional)
Returns: - Operation result information
Terminal Controller implements several security measures:
If you encounter issues:
python -m terminal_controller
uvx terminal_controller
Contributions are welcome! Please feel free to submit a Pull Request.
MIT