Provides remote file operations over SSH, with hosts discovery, file transfers, command execution, and optional UI.
Configuration
View docs{
"mcpServers": {
"jmagar-scout_mcp": {
"command": "uv",
"args": [
"run",
"--directory",
"/code/scout_mcp",
"python",
"-m",
"scout_mcp"
],
"env": {
"SCOUT_ENABLE_UI": "false",
"SCOUT_IDLE_TIMEOUT": "60",
"SCOUT_MAX_FILE_SIZE": "1048576",
"SCOUT_MAX_POOL_SIZE": "100",
"SCOUT_COMMAND_TIMEOUT": "30"
}
}
}
}Scout MCP provides remote file operations over SSH, enabling you to scout a fleet of machines with a single, secure tool. It supports listing hosts, querying files, transferring data, and optional interactive UI for file browsing and logs, all orchestrated through a unified MCP interface.
You interact with Scout MCP through your MCP client by configuring a server entry that points to the Scout MCP runtime. Once running, you can list available hosts, inspect files, execute remote commands, and transfer files between local and remote locations. You can also perform direct remote-to-remote transfers between two hosts, streaming data efficiently without intermediate files.
Prerequisites you need before you install Scout MCP are a Python runtime and a command runner available in your environment. You also need a working SSH setup since Scout MCP reads your SSH configuration to discover hosts.
# Clone the Scout MCP project
git clone https://github.com/jmagar/scout_mcp
# Change into the project directory
cd scout_mcp
# Install and sync runtime components
uv syncScout MCP discovers available hosts by reading your SSH client configuration. You can tune its behavior with environment variables to control file size limits, command timeouts, pool size, and whether to enable the user interface.
export SCOUT_MAX_FILE_SIZE=5242880 # 5MB (default: 1MB)
export SCOUT_COMMAND_TIMEOUT=60 # seconds (default: 30)
export SCOUT_IDLE_TIMEOUT=120 # seconds (default: 60)
export SCOUT_MAX_POOL_SIZE=200 # max connections (default: 100)
export SCOUT_ENABLE_UI=true # Enable MCP-UI (default: false)To expose Scout MCP as an MCP server, add it to your MCP config using the following stdio configuration. This runs via the uv runner and starts the Scout MCP module.
{
"mcpServers": {
"scout_mcp": {
"command": "uv",
"args": ["run", "--directory", "/code/scout_mcp", "python", "-m", "scout_mcp"]
}
}
}Scout MCP can provide an optional interactive UI for enhanced file browsing, logs viewing, and markdown rendering. UI is off by default to maximize compatibility. Enable it by setting the environment variable SCOUT_ENABLE_UI to true.
export SCOUT_ENABLE_UI=trueThe scout tool lets you perform common operations against hosts discovered via SSH. You can list hosts, cat a file, list a directory, and run commands remotely.
scout("hosts")
scout("hostname:/path/to/file.log")
scout("hostname:/path/to/directory")
scout("hostname:/working/dir", "rg 'pattern' -t py")
scout("hostname:~/code", "find . -name '*.md' -mtime -1")
scout("hostname:/var/log", "tail -100 app.log | grep ERROR")Scout includes beam, a simple file transfer feature using SFTP. It can upload local files to a remote destination or download remote files to your local system. The direction is auto-detected based on whether the local source file exists.
mcp__scout__scout(
target="shart:/mnt/cache/docs/report.pdf",
beam="/tmp/local-report.pdf"
)
mcp__scout__scout(
target="squirts:/var/log/app.log",
beam="/tmp/app.log"
)You can transfer files directly between two remote hosts using SFTP streaming. This avoids creating intermediate files on the MCP server and supports large files efficiently.
mcp__scout__scout(
beam_source="shart:/mnt/data/backup.tar.gz",
beam_target="squirts:/backups/backup.tar.gz"
)Scout MCP provides remote shell access and emphasizes secure configuration. Follow a quick security checklist to minimize exposure and enforce host key verification.
# Quick security checklist (examples only)
export SCOUT_API_KEYS="YOUR_API_KEY" # Enable authentication
export SCOUT_RATE_LIMIT_PER_MINUTE=60 # Rate limit
export SCOUT_HTTP_HOST="127.0.0.1" # Local access only
export SCOUT_STRICT_HOST_KEY_CHECKING=true # Enforce known hosts
export SCOUT_MAX_FILE_SIZE=5242880 # 5MB limit
uv run python -m scout_mcpRun tests and check coverage to maintain quality. Start the local server for development and testing.
uv run pytest tests/ -v
uv run pytest tests/ -v --cov=scout_mcp
uv run ruff check scout_mcp/ tests/
uv run mypy scout_mcp/
uv run python -m scout_mcpThis MCP server is designed to work with your existing SSH configuration, enabling safe and controlled remote file operations across your fleet. Keep your SSH keys secure and review the SSH config to ensure only necessary hosts are reachable through Scout MCP.
List available SSH hosts discovered from your SSH config.
Interact with Scout MCP to list hosts, view files, run remote commands, and manage paths.
Transfer files between local and remote locations using SFTP with automatic direction (upload or download) based on local file existence.
Perform direct remote-to-remote transfers between two hosts via streaming SFTP without intermediate files.