MCP Terminal Server

local-only server

The server can only run on the client’s local machine because it depends on local resources.

Servidor de terminales MCP

Un servidor de ejecución de terminal seguro que implementa el Protocolo de Contexto de Modelo (MCP). Este servidor proporciona capacidades de ejecución controlada de comandos con funciones de seguridad y límites de recursos.

Características

  • Ejecución de comandos : Ejecute comandos de shell con captura de salida y manejo de errores
  • Controles de seguridad : restrinja los comandos permitidos y evite la inyección de comandos
  • Controles de recursos :
    • Tiempos de espera de comandos
    • Límites de tamaño máximo de salida
  • Compatibilidad con el protocolo MCP :
    • Formato de mensaje MCP estándar
    • Anuncio de capacidad
    • Compatibilidad con salida de streaming

Desarrollo

Configuración local

# Clone the repository git clone https://github.com/RinardNick/mcp-terminal.git cd mcp-terminal # Create and activate virtual environment using uv uv venv source .venv/bin/activate # or .venv\Scripts\activate on Windows # Install development dependencies uv pip install -e ".[dev]"

Publicación en PyPI

# Build the package uv pip install build python -m build # Upload to PyPI uv pip install twine python -m twine upload dist/*

Pruebas con MCP Inspector

La herramienta MCP Inspector se puede utilizar para probar la implementación del servidor:

# Install inspector npm install -g @modelcontextprotocol/inspector # Test server npx @modelcontextprotocol/inspector python3 src/mcp_terminal/server.py --allowed-commands "python,pip,git,ls,cd"

Ejecución de pruebas

# Run all tests pytest tests/ # Run specific test file pytest tests/test_terminal.py # Run with coverage pytest --cov=mcp_terminal tests/

Uso con Claude Desktop

Una vez que el paquete se publica en PyPI:

  1. Instalar UV (si aún no está instalado):
    pip install uv
  2. Instalar el paquete usando UV :
    uv pip install mcp-terminal
  3. Configurar Claude Desktop : edite el archivo de configuración de Claude Desktop (normalmente en ~/Library/Application Support/Claude/claude_desktop_config.json en macOS):
    { "mcpServers": { "terminal": { "command": "uv", "args": [ "pip", "run", "mcp-terminal", "--allowed-commands", "python,pip,git,ls,cd", "--timeout-ms", "30000", "--max-output-size", "1048576" ] } } }

Implementación del protocolo

El servidor implementa el Protocolo de Contexto de Modelo (MCP) con las siguientes capacidades:

Anuncio de capacidades

{ "protocol": "1.0.0", "name": "terminal", "version": "1.1.0", "capabilities": { "execute": { "description": "Execute a terminal command", "parameters": { "command": { "type": "string", "description": "The command to execute" } }, "returns": { "type": "object", "properties": { "exitCode": { "type": "number" }, "stdout": { "type": "string" }, "stderr": { "type": "string" }, "startTime": { "type": "string" }, "endTime": { "type": "string" } } } } } }

Formato del mensaje

Pedido :

{ "type": "execute", "data": { "command": "echo 'hello world'" } }

Respuesta :

{ "type": "result", "data": { "command": "echo 'hello world'", "exitCode": 0, "stdout": "hello world\n", "stderr": "", "startTime": "2024-01-20T12:34:56.789Z", "endTime": "2024-01-20T12:34:56.790Z" } }

Error :

{ "type": "error", "data": { "message": "command not allowed" } }

Consideraciones de seguridad

  1. Validación de comandos :
    • Sólo se pueden ejecutar los comandos permitidos
    • Los operadores de Shell están bloqueados
    • Se evitan los intentos de inyección de comandos
  2. Protección de recursos :
    • Los tiempos de espera de los comandos evitan que se cuelguen
    • Los límites de tamaño de salida evitan el agotamiento de la memoria
    • Manejo de errores para todos los casos de falla
  3. Mejores prácticas :
    • Establezca siempre allowed-commands en producción
    • Utilice límites de tamaño y tiempo de espera conservadores
    • Supervisar los registros de ejecución de comandos

Contribuyendo

  1. Bifurcar el repositorio
  2. Crea tu rama de funciones ( git checkout -b feature/amazing-feature )
  3. Confirme sus cambios ( git commit -m 'Add some amazing feature' )
  4. Empujar a la rama ( git push origin feature/amazing-feature )
  5. Abrir una solicitud de extracción

Licencia

Este proyecto está licenciado bajo la licencia MIT: consulte el archivo de LICENCIA para obtener más detalles.

You must be authenticated.

A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

Un servidor de ejecución de terminal seguro que permite la ejecución controlada de comandos con funciones de seguridad y límites de recursos a través del Protocolo de Contexto de Modelo (MCP).

  1. Features
    1. Development
      1. Local Setup
      2. Publishing to PyPI
      3. Testing with MCP Inspector
      4. Running Tests
    2. Using with Claude Desktop
      1. Protocol Implementation
        1. Capabilities Advertisement
        2. Message Format
      2. Security Considerations
        1. Contributing
          1. License
            ID: 0bqnw26cni