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.
Documentation
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
- File Operations: Read, write, update, insert, and delete file content with row-level precision
Installation
Installing via Smithery
To install Terminal Controller for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @GongRzhe/terminal-controller-mcp --client claudePrerequisites
- 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:
pip install terminal-controllerOr if you prefer to use UV:
uv pip install terminal-controllerMethod 2: From Source
If you prefer to install from source:
1. Clone this repository:
git clone https://github.com/GongRzhe/terminal-controller-mcp.git
cd terminal-controller-mcp2. Run the setup script:
python setup_mcp.pyClient 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:
"terminal-controller": {
"command": "uvx",
"args": ["terminal_controller"]
}Option 2: Using Python Directly
"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"
- "Read the content of config.json"
- "Update line 5 in my script.py file with 'print(\"Hello World\")'"
- "Delete lines 10-15 from the log file"
- "Insert a new line at the beginning of my text file"
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
`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
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:
python -m terminal_controller4. For UVX-related issues, try:
uvx terminal_controller5. Review your MCP client's logs for connection errors
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
MIT
Frequently asked questions
What is terminal-controller-mcp?
terminal-controller-mcp is A Model Context Protocol (MCP) server that enables secure terminal command execution, directory navigation, and file system operations through a standardized interface.
How do I install terminal-controller-mcp?
Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.
Is terminal-controller-mcp open source?
Yes — it is hosted on GitHub at https://github.com/GongRzhe/terminal-controller-mcp and has 91 stars.
Related MCP tools
🙌 OpenHands: Code Less, Make More for the Model Context Protocol. Enhance AI assistants with powerful integrations. Python-based implementation.
Universal memory layer for AI Agents; Announcing OpenMemory MCP - local and secure memory management. Python-based implementation.
基于大模型搭建的聊天机器人,同时支持 微信公众号、企业微信应用、飞书、钉钉 等接入,可选择ChatGPT/Claude/DeepSeek/文心一言/讯飞星火/通义千问/ Gemini/GLM-4/Kimi/LinkAI,能处理文本、语音和图片,访问操作系统和互联网,支持基于自有知识库进行定制企业智能客服。
An LLM agent that conducts deep research (local and web) on any given topic and generates a long report with citations. Built for the Model Context Protocol to
🚀 The fast, Pythonic way to build MCP servers and clients Trusted by 19900+ developers. Trusted by 19900+ developers. Trusted by 19900+ developers.
🔥 MaxKB is an open-source platform for building enterprise-grade agents. MaxKB 是强大易用的开源企业级智能体平台。 for the Model Context Protocol. Enhance AI assistants with po
Run your own MCP server? See who uses it and what to fix.
Measure it with TrackMCP