Skip to main content
Glama

Scout MCP

MCP server for remote file operations via SSH. Scout your fleet of machines with a single tool.

Installation

# Clone and install
git clone https://github.com/jmagar/scout_mcp
cd scout_mcp
uv sync

Configuration

Scout MCP reads your ~/.ssh/config to discover available hosts. Optionally configure limits:

# Environment variables (optional)
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)

# Legacy MCP_CAT_* prefix still supported for backward compatibility

Current defaults:

  • Max file size: 1MB (1,048,576 bytes)

  • Command timeout: 30 seconds

  • Idle timeout: 60 seconds

  • Max pool size: 100 connections

Usage

Add to your Claude Code MCP config:

{
  "mcpServers": {
    "scout_mcp": {
      "command": "uv",
      "args": ["run", "--directory", "/code/scout_mcp", "python", "-m", "scout_mcp"]
    }
  }
}

Interactive UI (Optional)

Scout MCP provides optional interactive UI components for enhanced file browsing.

Note: UI is disabled by default for better MCP client compatibility. To enable, set SCOUT_ENABLE_UI=true.

File Explorer

Access any directory to see an interactive file explorer:

tootie://mnt/cache/compose

Features:

  • Sortable listings

  • Search/filter

  • File type icons

  • Size and dates

Log Viewer

Log files display with syntax highlighting and filtering:

tootie://compose/plex/logs
tootie://var/log/app.log

Features:

  • Level filtering (ERROR/WARN/INFO/DEBUG)

  • Search functionality

  • Syntax highlighting

  • Line statistics

Markdown Viewer

Markdown files render with live preview:

tootie://docs/README.md

Features:

  • Live rendered preview

  • Source view toggle

  • Syntax highlighting

  • Proper formatting

File Viewer

Code and text files show with syntax highlighting:

tootie://app/main.py

Features:

  • Language detection

  • Line numbers

  • Copy to clipboard

  • Syntax highlighting

See docs/MCP-UI.md for complete UI documentation.

Tool: scout

List available hosts

scout("hosts")

Cat a file

scout("hostname:/path/to/file.log")

List a directory

scout("hostname:/path/to/directory")

Run a command

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")

File Transfers

Scout includes beam - a simple file transfer feature using SFTP:

# Upload: local file exists → transfer to remote
mcp__scout__scout(
    target="shart:/mnt/cache/docs/report.pdf",
    beam="/tmp/local-report.pdf"
)

# Download: local file doesn't exist → download from remote
mcp__scout__scout(
    target="squirts:/var/log/app.log",
    beam="/tmp/app.log"
)

Direction is auto-detected:

  • Local file exists → Upload (local → remote)

  • Local file doesn't exist → Download (remote → local)

Remote-to-Remote Transfers

Transfer files directly between two remote hosts using SFTP streaming:

# Transfer between two remote hosts
mcp__scout__scout(
    beam_source="shart:/mnt/data/backup.tar.gz",
    beam_target="squirts:/backups/backup.tar.gz"
)

Features:

  • Streams data in 64KB chunks (constant memory usage)

  • No temp files on MCP server

  • Works for files of any size

  • Auto-optimizes when MCP server is source or target

Security

Warning: Scout MCP provides remote shell access. Deploy with care.

Quick Security Checklist

  • Enable API key authentication (SCOUT_API_KEYS)

  • Enable rate limiting (SCOUT_RATE_LIMIT_PER_MINUTE)

  • Verify SSH host keys are in ~/.ssh/known_hosts

  • Set SCOUT_STRICT_HOST_KEY_CHECKING=true (default)

  • Bind to 127.0.0.1 if local-only access needed

  • Use SSH keys, not passwords

  • Limit SSH user permissions on remote hosts

  • Review ~/.ssh/config for only necessary hosts

  • Command injection prevented (allowlist)

  • SSH host verification enforced (fail-closed)

  • Docker/Compose names validated

Security Configuration

Variable

Default

Purpose

SCOUT_API_KEYS

(none)

Comma-separated API keys for authentication

SCOUT_RATE_LIMIT_PER_MINUTE

60

Rate limit per client (requests/minute)

SCOUT_KNOWN_HOSTS

~/.ssh/known_hosts

SSH host key verification

SCOUT_STRICT_HOST_KEY_CHECKING

true

Reject unknown host keys

SCOUT_HTTP_HOST

0.0.0.0

Bind address (use 127.0.0.1 for local only)

SCOUT_MAX_FILE_SIZE

1048576

Max file size in bytes (1MB)

SCOUT_COMMAND_TIMEOUT

30

Command timeout in seconds

Built-in Security Features

Scout MCP includes multiple layers of security protection:

  • API Key Authentication: Optional HTTP header-based authentication (production recommended)

  • Rate Limiting: Prevents abuse with configurable per-client request limits

  • SSH Host Key Verification: Validates remote host identity to prevent MITM attacks

  • Path Traversal Protection: Blocks ../ and other escape sequences

  • Command Injection Protection: Uses shlex.quote() for all paths and arguments

  • Input Validation: Validates hostnames and paths for malicious patterns

  • File Size Limits: Prevents memory exhaustion attacks

  • Command Timeouts: Prevents hanging operations

Example: Secure Configuration

# Production deployment (localhost only, strict security)
export SCOUT_API_KEYS="$(openssl rand -hex 32)"  # Enable authentication
export SCOUT_RATE_LIMIT_PER_MINUTE=60            # Rate limiting
export SCOUT_HTTP_HOST="127.0.0.1"
export SCOUT_STRICT_HOST_KEY_CHECKING=true
export SCOUT_MAX_FILE_SIZE=5242880  # 5MB
uv run python -m scout_mcp

See SECURITY.md for complete security documentation, threat model, and deployment best practices.

Test Coverage

Coverage

  • Total: 74%

  • Tests: 422 (374 passing)

  • Last Updated: 2025-12-10

Run tests with coverage:

uv run pytest tests/ -v --cov=scout_mcp --cov-report=term-missing --cov-report=html

HTML coverage report: open htmlcov/index.html

Development

# Run tests
uv run pytest tests/ -v

# Run tests with coverage
uv run pytest tests/ -v --cov=scout_mcp

# Lint and type check
uv run ruff check scout_mcp/ tests/
uv run mypy scout_mcp/

# Run server locally
uv run python -m scout_mcp

License

MIT

-
security - not tested
F
license - not found
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jmagar/scout_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server