Skip to content

A robust command execution service with daily log rotation, designed to securely manage and execute system commands with safety checks and logging.

License

Notifications You must be signed in to change notification settings

HappyAny/secure-command-executor-mcp-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Secure Command Executor MCP Server

A robust command execution MCP service with daily log rotation, designed to securely manage and execute system commands with safety checks and logging. And this README.md is written by DeepSeek V3.

Features

  • Command Execution: Execute system commands with optional arguments.
  • Safety Checks: Warns and requires confirmation for dangerous commands.
  • Command Management: Add, update, remove, enable, or disable commands.
  • Logging: Daily log rotation with detailed action tracking.
  • Query Tools: Query available commands and logs with filters.

Installation

  1. Clone the repository:

    git clone https://github.com/HappyAny/secure-command-executor-mcp-server.git
    cd secure-command-executor-mcp-server
  2. Install dependencies:

    npm install minimist
    npm install @modelcontextprotocol/sdk
    npm install zod
  3. Configure the service:

    • Modify commands.json to define available commands.
    • Set environment variables (optional).

Usage

Starting the Service

node index.js --file commands.json --logs logs --port 3000

MCP Setting

{
    "mcpServers": {
        "cmd-exec": {
          "command": "node",
          "args": [
            "path_to_file/index.js",
            "--file",
            "path_to_file/commands.json",
            "--logs",
            "path_to_dict/logs"
          ]
        }
    }
}

Commands File

The commands.json file defines the available commands. Example:

[
  {
    "name": "dir",
    "description": "List directory contents",
    "example": "dir /w",
    "dangerous": false,
    "enabled": true,
    "confirmationPrompt": "",
    "consequences": ""
  },
  {
    "name": "format",
    "description": "Format disk drive",
    "example": "format C:",
    "dangerous": true,
    "enabled": false,
    "confirmationPrompt": "This will PERMANENTLY erase all data. Confirm?",
    "consequences": "Permanent data loss"
  }
]

API Endpoints

Execute a Command

curl -X POST http://localhost:3000/execute -H "Content-Type: application/json" -d '{"command": "dir", "args": "/w"}'

Query Commands

curl -X GET http://localhost:3000/queryCommands?filter=enabled&detailed=true

Manage Commands

curl -X POST http://localhost:3000/manageCommand -H "Content-Type: application/json" -d '{"action": "add", "name": "ping", "description": "Test network connection", "example": "ping example.com"}'

Query Logs

curl -X GET http://localhost:3000/queryLogs?limit=50&filter=failed

Configuration

  • Environment Variables:

    • NODE_ENV: Set to production for production mode.
    • PORT: Override the default port (3000).
  • Command-Line Arguments:

    • --file: Path to the commands file (default: commands.json).
    • --logs: Path to the logs directory (default: logs).
    • --port: Port to run the service (default: 3000).

Logging

Logs are stored in the specified directory with daily rotation. Each log file is named YYYY-MM-DD.json.

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

License

MIT

About

A robust command execution service with daily log rotation, designed to securely manage and execute system commands with safety checks and logging.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published