ceyhunkoc/script_wrapper_mcp_server
If you are the rightful owner of script_wrapper_mcp_server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
The MCP Script Runner is a server that allows AI agents to execute predefined bash scripts within a Dockerized environment, providing a flexible and secure interface for script execution.
run_script
Execute a configured script
list_scripts
List all available scripts
get_script_info
Get script details
get_working_directory
Get current working directory
set_working_directory
Set working directory
reload_config
Reload configuration file
MCP Script Runner
A Model Context Protocol (MCP) server that provides coding agents with a generic interface to execute developer-defined bash scripts within a Dockerized environment.
๐ Quick Start
Option 1: Docker (Recommended)
# Clone and run with Docker
git clone <repository-url>
cd devmcp
docker compose up --build -d
# Check logs
docker compose logs -f
Option 2: Local Installation
# Clone repository
git clone <repository-url>
cd devmcp
# Install dependencies
pip install -r requirements.txt
# Run the server
python -m mcp_script_runner.server
๐ Overview
The MCP Script Runner Server enables AI agents to:
- Execute predefined bash scripts with configurable arguments
- Manage working directories for different project contexts
- Get script information including descriptions and available arguments
- List available scripts dynamically
- Handle script timeouts and error conditions gracefully
๐ณ Docker Support
The project includes full Docker support for containerized execution:
- ๐ง Ready-to-use containers with all dependencies
- ๐ก๏ธ Isolated execution environment
- ๐ฆ Easy deployment with Docker Compose
- ๐ Debug capabilities with interactive shell access
See for complete Docker usage guide.
Quick Docker Commands
# Start the MCP server
docker compose up --build -d
# Interactive development shell
docker compose --profile debug up shell
# Test script execution
docker compose exec mcp-script-runner bash scripts/hello.sh
๐ ๏ธ Installation
Prerequisites
- Python 3.11+
- Docker (for containerized execution)
- Bash-compatible shell
Local Setup
# Install Python dependencies
pip install -r requirements.txt
# Verify installation
python -c "from src.mcp_script_runner.server import main; print('โ
Installation OK')"
Docker Setup
# Build container
docker build -t mcp-script-runner .
# Or use Docker Compose
docker compose up --build
โ๏ธ Configuration
Configuration File: .mcp-config.json
{
"working_directory": ".",
"scripts": {
"hello": {
"path": "scripts/hello.sh",
"description": "Simple hello world script",
"arguments": [],
"timeout": 30
},
"list_files": {
"path": "scripts/list_files.sh",
"description": "List files in directory with options",
"arguments": ["directory", "options"],
"timeout": 10
}
}
}
Script Directory Structure
project/
โโโ .mcp-config.json
โโโ scripts/
โ โโโ hello.sh
โ โโโ list_files.sh
โ โโโ system_info.sh
โโโ src/
โโโ mcp_script_runner/
๐ง Available MCP Tools
Tool | Description | Arguments |
---|---|---|
run_script | Execute a configured script | script_name , arguments[] |
list_scripts | List all available scripts | None |
get_script_info | Get script details | script_name |
get_working_directory | Get current working directory | None |
set_working_directory | Set working directory | path |
reload_config | Reload configuration file | None |
Example Tool Usage
{
"tool": "run_script",
"arguments": {
"script_name": "hello",
"arguments": []
}
}
๐โโ๏ธ Running the Server
Local Execution
# Start MCP server (listens on stdio)
python -m mcp_script_runner.server
# Or with explicit path
PYTHONPATH=src python -m mcp_script_runner.server
Docker Execution
# Background service
docker compose up -d
# Interactive mode
docker compose run --rm mcp-script-runner
# Debug shell
docker compose --profile debug up shell
๐ Example Scripts
Basic Hello Script (scripts/hello.sh
)
#!/bin/bash
echo "Hello from MCP Script Runner!"
echo "Current directory: $(pwd)"
echo "Script arguments: $@"
echo "Date: $(date)"
File Listing Script (scripts/list_files.sh
)
#!/bin/bash
DIRECTORY=${1:-.}
OPTIONS=${2:-"-la"}
echo "Listing files in: $DIRECTORY"
ls $OPTIONS "$DIRECTORY"
System Info Script (scripts/system_info.sh
)
#!/bin/bash
echo "=== System Information ==="
echo "OS: $(uname -s)"
echo "Kernel: $(uname -r)"
echo "Architecture: $(uname -m)"
echo "Uptime: $(uptime)"
echo "Disk Usage:"
df -h
๐งช Testing
Unit Tests
# Run tests locally
python -m pytest tests/
# Run tests in Docker
docker compose run --rm mcp-script-runner python -m pytest tests/
Manual Testing
# Test script execution
python -c "
import asyncio
from src.mcp_script_runner.executor import ScriptExecutor
from src.mcp_script_runner.config import ConfigManager
async def test():
cm = ConfigManager()
ex = ScriptExecutor(cm)
result = await ex.execute_script('hello')
print(f'Exit code: {result.exit_code}')
print(result.stdout)
asyncio.run(test())
"
๐ Security Considerations
- ๐ก๏ธ Containerized execution isolates script execution
- ๐ค Non-root user inside containers (
mcpuser
) - ๐ Limited file access through volume mounts
- โฑ๏ธ Script timeouts prevent runaway processes
- ๐ซ No shell injection - arguments passed safely
๐ฏ Use Cases
Development Automation
- Build and test commands
- Code generation scripts
- Development environment setup
System Administration
- System monitoring scripts
- Backup and maintenance tasks
- Configuration management
CI/CD Integration
- Deployment scripts
- Environment validation
- Automated testing workflows
Project Management
- Task automation
- Report generation
- Resource management
๐ Troubleshooting
Common Issues
MCP Server Won't Start
# Check Python path
export PYTHONPATH=src
# Verify dependencies
pip install -r requirements.txt
# Check configuration
python -c "from src.mcp_script_runner.config import ConfigManager; cm = ConfigManager(); print('Config OK')"
Script Execution Fails
# Check script permissions
chmod +x scripts/*.sh
# Test script directly
bash scripts/hello.sh
# Check Docker logs
docker compose logs mcp-script-runner
Docker Issues
# Rebuild container
docker compose up --build
# Check container status
docker compose ps
# Interactive debugging
docker compose run --rm mcp-script-runner bash
Debug Mode
# Local debug
PYTHONPATH=src python -c "
import logging
logging.basicConfig(level=logging.DEBUG)
from mcp_script_runner.server import main
import asyncio
asyncio.run(main())
"
# Docker debug
docker compose --profile debug up shell
๐ Development
Project Structure
devmcp/
โโโ ๐ README.md # This file
โโโ ๐ณ DOCKER.md # Docker usage guide
โโโ ๐ TASKS.md # Development tasks
โโโ โ๏ธ .mcp-config.json # Configuration
โโโ ๐ณ Dockerfile # Container definition
โโโ ๐ณ docker-compose.yml # Container orchestration
โโโ ๐ฆ requirements.txt # Python dependencies
โโโ ๐ฆ pyproject.toml # Python project config
โโโ ๐ง scripts/ # Example scripts
โโโ ๐ src/mcp_script_runner/ # Python source code
โโโ ๐งช tests/ # Unit tests
Adding New Scripts
- Create script in
scripts/
directory - Make executable:
chmod +x scripts/myscript.sh
- Add to
.mcp-config.json
:
{
"scripts": {
"myscript": {
"path": "scripts/myscript.sh",
"description": "My custom script",
"arguments": ["arg1", "arg2"],
"timeout": 30
}
}
}
- Reload configuration: Use
reload_config
tool
Contributing
- Fork the repository
- Create feature branch
- Add tests for new functionality
- Test with Docker:
docker compose up --build
- Submit pull request
๐ Deployment
Production Deployment
# Using Docker Compose
docker compose up -d
# Using Docker Swarm
docker stack deploy -c docker-compose.yml mcp-stack
# Using Kubernetes
kubectl apply -f k8s/
Integration with MCP Clients
Claude Desktop Configuration
{
"mcpServers": {
"script-runner": {
"command": "docker",
"args": ["compose", "-f", "/path/to/devmcp/docker-compose.yml", "run", "--rm", "mcp-script-runner"]
}
}
}
๐ License
MIT License - see LICENSE file for details.
๐ค Support
- ๐ Documentation: See for Docker usage
- ๐ Issues: Create GitHub issue
- ๐ฌ Discussions: GitHub Discussions
- ๐ง Contact: See repository contributors
Ready to get started?
๐ณ Docker users: docker compose up --build
๐ Local users: pip install -r requirements.txt && python -m mcp_script_runner.server