Can check Docker installation status and version on remote Linux servers through command execution.
Built with FastAPI as the web framework powering the standalone web interface and control panel.
Enables remote Linux server management through SSH, allowing execution of bash commands, system diagnostics, software installation, file operations, and log analysis with real-time terminal output and smart filtering.
Supports installation, configuration, and management of NGINX web servers on remote Linux systems through SSH command execution.
Core implementation language requiring Python 3.9+ for running the MCP server and its components.
Uses SQLite for maintaining audit trails, command history, conversation tracking, batch script library, and automation recipes with usage statistics.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Remote Terminalcheck disk usage on production server and alert if over 90%"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Remote Terminal
AI-Powered Remote Linux Server Management via MCP
Remote Terminal lets Claude (the AI assistant) execute commands on your remote Linux servers through a natural chat interface. Watch full output in your browser in real-time while Claude receives smart-filtered summaries optimized for token efficiency.
π― What Is This?
Imagine telling Claude:
"Install nginx on my server and configure it with SSL"
"Run complete system diagnostics and tell me if anything looks wrong"
"Find all log errors from the last hour and summarize them"
"Save this batch script and run it again next week"And Claude does it - executing commands, analyzing output, saving useful scripts, and taking action on your behalf.
That's Remote Terminal.
β¨ Key Features
Core Capabilities
π₯οΈ Remote Command Execution - Run any bash command on Linux servers
π Multi-Server Management - Switch between multiple servers easily
π File Transfer (SFTP) - Upload/download files and directories with compression
π Batch Script Execution - Run multi-command scripts 10-50x faster
π Batch Script Library - Save, browse, and reuse batch scripts (NEW in 3.1)
π¬ Conversation Tracking - Group commands by goal with rollback support
π― Recipe System - Save successful workflows for reuse
ποΈ Database Integration - Full audit trail with SQLite
π Interactive Web Terminal - Full-featured terminal in browser (type, paste, scroll history)
π Multi-Terminal Sync - Open multiple terminals, all perfectly synchronized
β¨ Bash Syntax Highlighting - VS Code-style colors in standalone UI (NEW in 3.1)
The Interactive Web Terminal
Remote Terminal provides a fully interactive terminal window in your browser at http://localhost:8080 - it looks and feels just like WSL, PuTTY, or any standard terminal:
You can:
Type commands directly (just like any terminal)
Copy/paste text (Ctrl+C, Ctrl+V)
Scroll through command history
Use arrow keys for history navigation
View real-time command output with colors preserved
Claude can:
Execute commands that appear in your terminal
See command results instantly
Continue working while you watch
The key advantage: You maintain complete visibility and control. Every command Claude runs appears in your terminal window in real-time. You're never in the dark about what's happening on your server - it's like sitting side-by-side with an assistant who types commands for you while you watch the screen.
Multi-Terminal Support: Open multiple browser windows at http://localhost:8080 - they all stay perfectly synchronized via WebSocket broadcast. Type in one terminal, see it in all terminals instantly. Perfect for multi-monitor setups or sharing your view with others.
β οΈ Best Practice: Close unused terminal tabs when done. While the system handles multiple connections efficiently, keeping many old tabs open can consume unnecessary resources and may cause connection issues.
π¬ See It In Action
https://github.com/user-attachments/assets/98a6fa41-ec4f-410b-8d4a-a2422d8ac7c9
Watch the interactive web terminal in action - see Claude execute commands while you maintain full visibility and control
The Dual-Stream Architecture
Behind the scenes, Remote Terminal uses a smart two-stream approach:
SSH Output from Remote Server
β
[Raw Output]
β
ββββββ΄βββββ
β β
β β
[FULL] [FILTERED]
β β
β β
Web Terminal Claude
(You see all) (Smart summary)Result:
You: Full visibility and control in interactive terminal
Claude: Efficient work with 95% token savings
Both: Shared SSH session, synchronized state
Best of both worlds!
π Quick Start
Installation
Step 1: Create Installation Directory
# Choose a location for your installation (example: C:\RemoteTerminal)
mkdir C:\RemoteTerminal
cd C:\RemoteTerminalStep 2: Install Package
# Create dedicated virtual environment
python -m venv remote-terminal-env
remote-terminal-env\Scripts\activate
pip install remote-terminal-mcpStep 3: Configure Claude Desktop
Edit %APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"remote-terminal": {
"command": "C:\\RemoteTerminal\\remote-terminal-env\\Scripts\\remote-terminal-mcp.exe",
"env": {
"REMOTE_TERMINAL_ROOT": "C:\\RemoteTerminal"
}
}
}
}Important: Replace C:\RemoteTerminal with your actual installation path from Step 1.
Step 4: First Run - Auto Setup
Restart Claude Desktop. On first use, configuration files will automatically copy to C:\RemoteTerminal:
config.yaml- Default settings (auto-created from package defaults)hosts.yaml- Server list (auto-created from template)
Step 5: Configure Your Servers
You have two options to configure your servers:
Option A: Manual Configuration (Recommended for first server)
Edit C:\RemoteTerminal\hosts.yaml:
servers:
- name: My Server
host: 192.168.1.100
user: username
password: your_password
port: 22
description: My development server
tags:
- development
# Optional: Set default server for auto-connect
# Use list_servers to see which server is marked as [DEFAULT]
default_server: My ServerOption B: AI-Assisted Configuration
Ask Claude to help you add a new server:
Claude, add a new server to my configuration:
- Name: Production Server
- Host: 192.168.1.100
- User: admin
- Password: mypassword
- Port: 22Claude will use the add_server tool to update your hosts.yaml file automatically.
Restart Claude Desktop and test:
List my configured serversStep 6: (Optional) Run Standalone Web Interface
cd C:\RemoteTerminal
remote-terminal-env\Scripts\activate
remote-terminal-standaloneAccess at:
Control Panel: http://localhost:8081
Terminal: http://localhost:8082
π Documentation
Complete guides for every use case:
Quick Start β Get running in 5 minutes
Installation β Detailed setup instructions
User Guide β Complete feature walkthrough
Feature Reference β All MCP tools reference
Troubleshooting β Common problems and solutions
WebSocket Broadcast β Multi-terminal synchronization details
Release Notes v3.1 β Release notes for version 3.1
π‘ Usage Examples
System Administration
"Check disk space and memory usage"
"What processes are using the most CPU?"
"Is nginx running? If not, start it"
"Show me the last 50 lines of the system log"Software Management
"Install htop and verify it works"
"Update all packages"
"Check if docker is installed and what version"Troubleshooting
"Run complete network diagnostics"
"Find all errors in the last hour of logs"
"Check why nginx won't start"
"Analyze disk usage by directory"File Operations
"Upload my local config.json to /etc/app/"
"Download all log files from /var/log/myapp/"
"List files in /var/log modified today"
"Find all files larger than 100MB"Automation & Script Management
"Create a recipe from our successful nginx installation"
"Execute the network diagnostics recipe"
"Start a conversation to configure WiFi"
"List my saved batch scripts"
"Execute script 5"
"Load script 3 for editing"π¨ Example Session
You:
Install nginx on my production server
Claude:
I'll install nginx. This will create a package installation...
Interactive terminal opens automatically at http://localhost:8080
Web Terminal shows (real-time):
$ sudo apt install nginx
Reading package lists... Done
Building dependency tree... Done
[... 500+ lines of installation output ...]
Setting up nginx (1.18.0-0ubuntu1) ...
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service
Processing triggers for systemd (245.4-4ubuntu3.23) ...Claude receives (filtered summary):
nginx installed successfully in 45s
12 packages installed
Service: nginx.service is activeClaude responds:
nginx has been successfully installed and is now running. The service is active. Would you like me to configure it or show you the default page?
Token savings: 96% (15,000 tokens β 600 tokens)
ποΈ Architecture
Project Structure
remote_terminal/
βββ config/ # Default configuration templates
β βββ config.yaml # Default settings (packaged)
β βββ hosts.yaml.example # Server template (packaged)
βββ data/ # SQLite database (user directory)
β βββ remote_terminal.db # Command history, conversations, recipes, scripts
βββ docs/ # Documentation
β βββ DATABASE_SCHEMA.md
β βββ FEATURE_REFERENCE.md
β βββ INDEX.md
β βββ INSTALLATION.md
β βββ QUICK_START.md
β βββ RELEASE_NOTES_v3.1.md
β βββ TROUBLESHOOTING.md
β βββ USER_GUIDE.md
β βββ WEBSOCKET_BROADCAST.md
βββ recipes/ # Example automation recipes
βββ src/ # Source code (modular architecture)
β βββ batch/ # Batch execution system
β β βββ batch_executor.py
β β βββ batch_helpers.py
β β βββ batch_parser.py
β βββ config/ # Configuration management
β β βββ config.py
β β βββ config_dataclasses.py
β β βββ config_init.py
β β βββ config_loader.py
β βββ database/ # Database operations (SQLite)
β β βββ database_manager.py # Core database manager
β β βββ database_batch.py # Batch script storage
β β βββ database_batch_execution.py
β β βββ database_batch_queries.py
β β βββ database_batch_scripts.py
β β βββ database_commands.py # Command history
β β βββ database_conversations.py
β β βββ database_recipes.py # Recipe storage
β β βββ database_servers.py # Machine identity tracking
β βββ output/ # Output filtering & formatting
β β βββ output_buffer.py
β β βββ output_buffer_base.py
β β βββ output_buffer_filtered.py
β β βββ output_filter.py # Smart filtering (95% token savings)
β β βββ output_filter_commands.py
β β βββ output_filter_decision.py
β β βββ output_formatter.py
β βββ prompt/ # Command completion detection
β β βββ prompt_detector.py
β β βββ prompt_detector_checks.py
β β βββ prompt_detector_pager.py
β β βββ prompt_detector_patterns.py
β βββ ssh/ # SSH/SFTP operations
β β βββ ssh_manager.py # High-level SSH manager
β β βββ ssh_connection.py # Connection lifecycle
β β βββ ssh_commands.py # Command execution
β β βββ ssh_io.py # Input/output streaming
β βββ state/ # Shared state management
β β βββ shared_state_conversation.py
β β βββ shared_state_monitor.py
β β βββ shared_state_transfer.py
β βββ static/ # Web terminal static assets
β β βββ fragments/ # HTML fragments
β β βββ vendor/ # xterm.js library
β β βββ terminal.css
β β βββ terminal.js
β β βββ transfer-panel.js
β βββ tools/ # MCP tool modules (modular)
β β βββ decorators.py # Tool decorators
β β βββ tools_hosts.py # Server management (main)
β β βββ tools_hosts_crud.py # Add/remove/update servers
β β βββ tools_hosts_select.py # Server selection & connection
β β βββ tools_commands.py # Command execution (main)
β β βββ tools_commands_database.py
β β βββ tools_commands_execution.py
β β βββ tools_commands_status.py
β β βββ tools_commands_system.py
β β βββ tools_conversations.py # Conversation tracking (main)
β β βββ tools_conversations_lifecycle.py
β β βββ tools_conversations_query.py
β β βββ tools_batch.py # Batch script execution (main)
β β βββ tools_batch_execution.py
β β βββ tools_batch_helpers.py
β β βββ tools_batch_management.py
β β βββ tools_recipes.py # Recipe automation (main)
β β βββ tools_recipes_create.py
β β βββ tools_recipes_crud.py
β β βββ tools_recipes_execution.py
β β βββ tools_recipes_helpers.py
β β βββ tools_recipes_modify.py
β β βββ tools_recipes_query.py
β β βββ tools_sftp.py # File transfer (main)
β β βββ tools_sftp_single.py # Single file transfer
β β βββ tools_sftp_directory.py # Directory transfer
β β βββ tools_sftp_directory_download.py
β β βββ tools_sftp_directory_upload.py
β β βββ tools_sftp_exceptions.py
β β βββ tools_sftp_utils.py
β β βββ sftp_compression.py # Compression logic
β β βββ sftp_compression_download.py
β β βββ sftp_compression_tar.py
β β βββ sftp_compression_upload.py
β β βββ sftp_decisions.py # Auto/manual compression decisions
β β βββ sftp_progress.py # Progress tracking
β β βββ sftp_transfer_compressed.py
β β βββ sftp_transfer_download.py
β β βββ sftp_transfer_scan.py
β β βββ sftp_transfer_standard.py
β β βββ sftp_transfer_upload.py
β β βββ tools_info.py # System information
β βββ utils/ # Utility functions
β β βββ utils.py
β β βββ utils_format.py
β β βββ utils_machine_id.py # Hardware/OS fingerprinting
β β βββ utils_output.py
β β βββ utils_text.py
β βββ web/ # Web terminal (WebSocket-enabled)
β β βββ web_terminal.py # Main web server
β β βββ web_terminal_ui.py # UI components
β β βββ web_terminal_websocket.py # Multi-terminal sync
β βββ mcp_server.py # MCP server entry point
β βββ shared_state.py # Global shared state
β βββ command_state.py # Command registry & tracking
β βββ hosts_manager.py # Multi-server configuration
β βββ error_check_helper.py # Error detection
βββ standalone/ # Standalone web UI (no Claude)
βββ static/
β βββ css/ # Standalone UI styles
β β βββ control-forms.css
β β βββ control-layout.css
β β βββ control-response.css
β β βββ control-styles.css # Bash syntax highlighting
β βββ js/ # Standalone UI scripts
β β βββ control-forms.js
β β βββ control-forms-fields.js
β β βββ control-forms-generation.js
β β βββ control-forms-utils.js
β β βββ control-main.js
β β βββ control-response.js
β βββ tool-schemas/ # MCP tool schemas
β βββ batch.json
β βββ commands.json
β βββ file-transfer.json
β βββ servers.json
β βββ workflows.json
βββ mcp_control.html # Control panel HTML
βββ standalone_mcp.py # Standalone server entry point
βββ standalone_mcp_endpoints.py # API endpoints
βββ standalone_mcp_startup.py # Initialization & connectionTechnology Stack
Python 3.9+ - Core language
MCP Protocol - Claude integration
Paramiko - SSH/SFTP library
NiceGUI + WebSockets - Web terminal with multi-terminal sync
SQLite - Database for history/recipes/scripts
FastAPI - Web framework
π§ Configuration
Configuration Files Location
Configuration files are automatically copied to your working directory on first run:
For PyPI users:
Set
REMOTE_TERMINAL_ROOTin Claude Desktop configFiles auto-copy to that directory on first run
Location:
%REMOTE_TERMINAL_ROOT%\config.yamlandhosts.yamlUser data preserved when reinstalling/upgrading
Default template files packaged with installation:
config/config.yaml- Default settings templateconfig/hosts.yaml.example- Server configuration template
hosts.yaml
Define your servers:
servers:
- name: production
host: 192.168.1.100
user: admin
password: secure_pass
port: 22
description: Production server
tags: production, critical
- name: development
host: 192.168.1.101
user: dev
password: dev_pass
tags: development
default_server: productionπ‘οΈ Security Considerations
Current Status
Passwords stored in plain text in
hosts.yamlWeb terminal bound to localhost only (not network-exposed)
Full command audit trail in database
SSH uses standard security (password authentication)
User config files stored outside package (preserved on reinstall)
π Performance
Token Efficiency
Average token savings on verbose commands:
Command Type | Full Output | Filtered | Savings |
apt install | ~15,000 | ~600 | 96% |
ls -la /var | ~8,000 | ~400 | 95% |
Log search | ~12,000 | ~500 | 96% |
find / | ~30,000 | ~800 | 97% |
Average: 95-98% token reduction on verbose commands
Speed Improvements
Batch execution vs sequential:
10 commands sequential: 5 minutes (10 round-trips)
10 commands batch: 30 seconds (1 round-trip)
Speed improvement: 10x faster!
π Advanced Features
Batch Script Library
Save batch scripts for reuse:
1. Run diagnostics β Script auto-saved with deduplication
2. Browse library β "List my batch scripts"
3. Execute saved script β "Execute script 5"
4. Edit existing β "Load script 3 for editing"
5. Track usage β times_used, last_used_atFeatures:
Automatic deduplication via SHA256 hash
Usage statistics tracking
Edit mode for modifications
Search and sort capabilities
Two-step deletion with confirmation
Conversation Tracking
Group related commands by goal:
Start conversation: "Configure nginx with SSL"
β [Execute multiple commands]
β End conversation: success
β Create recipe from conversationBenefits:
Organized command history
Rollback capability
Context for AI
Recipe generation
Recipe System
Save successful workflows:
# Recipe: wifi_diagnostics
1. lspci | grep -i network
2. iwconfig
3. ip link show
4. dmesg | grep -i wifi
5. systemctl status NetworkManagerReuse on any compatible server:
Execute wifi_diagnostics recipe on my new serverMachine Identity
Each server tracked by unique machine_id (hardware + OS fingerprint):
Commands tracked per physical machine
Recipes execute on compatible systems
Audit trail maintains integrity
Handles server IP changes
π Known Issues & Limitations
Current Limitations
Designed for Windows local machine
Currently optimized for Windows 10/11
Linux/Mac support possible with modifications
SSH Key Support not implemented
Password authentication only
SSH keys work with manual SSH but not integrated with MCP tools
Works with only one remote server at a time
Can configure multiple servers
Can only actively work with one server per session
Switch between servers as needed
π€ Contributing
This is Tim's personal project. If you'd like to contribute:
Test thoroughly on your setup
Document any issues found
Suggest improvements
Share recipes and scripts you create
π Version History
Version 1.3.1 (Current - February 20, 2026)
Prompt Detection Logging Overhaul:
β Production mode: 2 log lines per command (Start + Detected) instead of hundreds
β Debug mode: full verbose logging via
prompt_detection.debug_logging: truein config.yamlβ Detection summary includes: polls, lines_checked, last_non_match, matched string, total_lines
β Pager/sudo/verify events still logged in production (rare, meaningful)
Startup Config Dump:
β Full config.yaml logged at startup (passwords redacted)
β Hosts summary logged (server count + default server)
β Simplifies remote support and troubleshooting for distributed users
Auto-Default Server:
β Default server automatically updated on every successful connection
β Eliminates "connected to wrong server after restart" problem
β Persisted to hosts.yaml immediately
Buffer Overflow Fix:
β Commands no longer return [No output] after buffer reaches max_lines
β command_start_line now tracks absolute position with offset correction
β Sliding window deque buffer works correctly at any fill level
Version 1.3.0 (January 2026)
Virtual Environment Prompt Support:
β Added venv prefix support to all prompt patterns
(\(.+\)\s+)?β Supports Python venv, Conda, Poetry, Pipenv and similar tools
β Fixed GENERIC_PROMPT patterns in server selection and machine ID detection
β Fixed pattern defaults not applied when missing from config.yaml
β Fixed config file copy path for pip installations
β Fixed hosts.yaml.example template (removed invalid default field)
β All fixes tested and verified
Version 1.2.1 (December 2024)
Standalone Import Fix:
β Fixed ModuleNotFoundError in standalone modules
β Added try/except fallback imports for both source and installed package usage
Code Modularization:
β Reorganized source into modular directory structure (batch, config, database, output, prompt, ssh, state, utils, web)
β Split large tool modules into smaller focused files
β All 37 MCP tools tested and working after refactor
Version 1.2.0 (December 2024)
PyPI Package Distribution:
β Full PyPI package with modern pyproject.toml configuration
β Automatic config initialization via REMOTE_TERMINAL_ROOT environment variable
β Config files auto-copy to user directory on first run (survives upgrades)
β Enhanced list_servers tool with [CURRENT] and [DEFAULT] markers
β Fixed standalone mode crash when default server unreachable
Standalone Web UI - Help System:
β Help button (β) added to all MCP tools with comprehensive documentation
β Help modal with full usage examples and parameter descriptions
β Updated all tool schemas: workflows, commands, batch, servers, file-transfer
β Enhanced CSS with consistent button colors (green Execute, blue Help)
Recipe Management (3 new tools):
β
delete_recipe- Permanent deletion with two-step confirmationβ
create_recipe_from_commands- Manual recipe creation without executionβ
update_recipe- In-place recipe modification (preserves ID/stats)β Recipe dropdown selectors replacing manual ID entry in standalone UI
WebSocket Multi-Terminal Sync:
β Replaced HTTP polling with WebSocket broadcast architecture
β Multiple browser terminals stay perfectly synchronized
β Auto-reconnect on connection loss
Version 1.1.0 (December 2024)
Batch Script Management (5 new tools):
β
list_batch_scripts,get_batch_script,save_batch_script,execute_script_content_by_id,delete_batch_scriptβ Automatic deduplication via SHA256 content hash
β Usage statistics tracking (times_used, last_used_at)
β Edit mode for script modifications
β Two-step deletion with confirmation
β Bash syntax highlighting in standalone UI (VS Code colors)
β Tool renaming:
create_diagnostic_scriptβbuild_script_from_commands,execute_batch_scriptβexecute_script_content
Version 1.0.0 (Initial Release - December 2024)
Core Features:
β Interactive web terminal (type, paste, scroll history)
β Multi-server management with machine identity tracking
β Smart output filtering (95-98% token reduction)
β Batch script execution (10-50x faster than sequential)
β Conversation tracking with rollback support
β Recipe system for workflow automation
β SFTP file transfer with compression
β SQLite database for complete audit trail
β Full MCP integration with Claude Desktop
β Dual-stream architecture (full output to browser, filtered to Claude)
π Support
For issues or questions:
Check Documentation
Review Logs
Claude Desktop logs (Help β Show Logs)
Test Components
Use standalone mode (start_standalone.ps1)
Test SSH manually
Verify database (view_db.py)
π License
This project is for personal use by Tim. Not currently open source.
π Acknowledgments
Anthropic - Claude and MCP protocol
Paramiko - SSH library
FastAPI - Web framework
NiceGUI - UI components with WebSocket support
Ready to let Claude manage your servers? Check out QUICK_START.md to get started in 5 minutes!
Version: 1.3.1
Last Updated: February 20, 2026
Maintainer: Tim
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.