MCP Terminal Server

by cwmoore-ai

322 downloads Not rated yet MIT license

About

A lightweight FastAPI server that can run as a Windows service and exposes an endpoint to execute shell commands and stream their output

Details

License
MIT license

Explore

- Run as a Windows service or in debug mode
- Execute shell commands and stream their output in real-time
- API key authentication
- Rate limiting
- Configurable via environment variables or configuration file
- Robust error handling and logging
- Automatic process restart on failure

- Windows operating system
- Python 3.7 or higher
- Administrator privileges (for service installation)

1. Clone this repository or download the source code
2. Open PowerShell as Administrator
3. Navigate to the project directory
4. Run the installation script:

.\install_service.ps1

This will:
- Install required Python dependencies
- Generate a random API key (or use the one you provide)
- Create a configuration file
- Install and start the Windows service

You can customize the installation with the following parameters:

.\install_service.ps1 -ApiKey "your-api-key" -Port 8080 -Host "127.0.0.1" -LogLevel "debug"

Available parameters:
- -ApiKey: Custom API key for authentication
- -Port: Port number for the server (default: 8000)
- -Host: Host address to bind to (default: 0.0.0.0)
- -LogLevel: Log level (debug, info, warning, error, critical)
- -ConfigFile: Path to a custom configuration file

A sample configuration file (config.json.sample) is provided. You can copy this to config.json and modify it:

{
    "host": "0.0.0.0",
    "port": 8000,
    "log_level": "info",
    "log_file": "mcp_terminal_server.log",
    "max_log_size_mb": 10,
    "log_backup_count": 5,
    "restart_on_failure": true,
    "max_restart_attempts": 5,
    "restart_delay_seconds": 10,
    "shutdown_timeout_seconds": 30,
    "working_directory": null
}

You can also configure the server using environment variables:

- MCP_TERMINAL_API_KEY: API key for authentication
- MCP_HOST: Host address to bind to
- MCP_PORT: Port number for the server
- MCP_LOG_LEVEL: Log level
- MCP_LOG_FILE: Path to log file
- MCP_MAX_LOG_SIZE_MB: Maximum log file size in MB
- MCP_LOG_BACKUP_COUNT: Number of log backup files to keep
- MCP_RESTART_ON_FAILURE: Whether to restart the server on failure
- MCP_MAX_RESTART_ATTEMPTS: Maximum number of restart attempts
- MCP_RESTART_DELAY_SECONDS: Delay between restart attempts
- MCP_SHUTDOWN_TIMEOUT_SECONDS: Timeout for graceful shutdown
- MCP_WORKING_DIRECTORY: Working directory for the server

python service.py install

python service.py update

```powershell

A lightweight FastAPI server that can run as a Windows service and exposes an endpoint to execute shell commands and stream their output.

Features

- Run as a Windows service or in debug mode
- Execute shell commands and stream their output in real-time
- API key authentication
- Rate limiting
- Configurable via environment variables or configuration file
- Robust error handling and logging
- Automatic process restart on failure

Installation

Prerequisites

- Windows operating system
- Python 3.7 or higher
- Administrator privileges (for service installation)

Install Steps

1. Clone this repository or download the source code
2. Open PowerShell as Administrator
3. Navigate to the project directory
4. Run the installation script:

.\install_service.ps1

This will:
- Install required Python dependencies
- Generate a random API key (or use the one you provide)
- Create a configuration file
- Install and start the Windows service

Installation Options

You can customize the installation with the following parameters:

.\install_service.ps1 -ApiKey "your-api-key" -Port 8080 -Host "127.0.0.1" -LogLevel "debug"

Available parameters:
- -ApiKey: Custom API key for authentication
- -Port: Port number for the server (default: 8000)
- -Host: Host address to bind to (default: 0.0.0.0)
- -LogLevel: Log level (debug, info, warning, error, critical)
- -ConfigFile: Path to a custom configuration file

Configuration

The server can be configured through:

1. Environment variables
2. Configuration file (config.json)
3. Command-line arguments during installation

Configuration File

A sample configuration file (config.json.sample) is provided. You can copy this to config.json and modify it:

{
    "host": "0.0.0.0",
    "port": 8000,
    "log_level": "info",
    "log_file": "mcp_terminal_server.log",
    "max_log_size_mb": 10,
    "log_backup_count": 5,
    "restart_on_failure": true,
    "max_restart_attempts": 5,
    "restart_delay_seconds": 10,
    "shutdown_timeout_seconds": 30,
    "working_directory": null
}

Environment Variables

You can also configure the server using environment variables:

- MCP_TERMINAL_API_KEY: API key for authentication
- MCP_HOST: Host address to bind to
- MCP_PORT: Port number for the server
- MCP_LOG_LEVEL: Log level
- MCP_LOG_FILE: Path to log file
- MCP_MAX_LOG_SIZE_MB: Maximum log file size in MB
- MCP_LOG_BACKUP_COUNT: Number of log backup files to keep
- MCP_RESTART_ON_FAILURE: Whether to restart the server on failure
- MCP_MAX_RESTART_ATTEMPTS: Maximum number of restart attempts
- MCP_RESTART_DELAY_SECONDS: Delay between restart attempts
- MCP_SHUTDOWN_TIMEOUT_SECONDS: Timeout for graceful shutdown
- MCP_WORKING_DIRECTORY: Working directory for the server

Service Management

Service Commands

The service can be managed using the following commands:

```powershell

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.