Skip to main content
Version: 0.0.1

Webhook Server CLI Reference

The Slack Webhook Server provides a comprehensive command-line interface for starting and configuring both standalone and integrated server modes. This reference covers all available CLI options, usage patterns, and examples.

Basic Usage​

The webhook server can be started using multiple execution methods:

# After installation via pip/uv/poetry
slack-webhook-server [OPTIONS]

Command Options​

Server Mode Options​

--integrated​

Type: Flag
Default: False
Description: Enable integrated mode (webhook + MCP server combined).

# Standalone webhook server (default)
python -m slack_mcp.webhook

# Explicitly specify standalone mode
python -m slack_mcp.webhook --no-integrated

MCP Integration Options (Integrated Mode Only)​

--mcp-transport​

Type: Choice
Choices: sse, streamable-http
Default: sse
Description: MCP transport protocol (integrated mode only).

# Server-Sent Events (default for integrated mode)
python -m slack_mcp.webhook --integrated --mcp-transport sse

# Custom mount path for SSE
python -m slack_mcp.webhook \
--integrated \
--mcp-transport sse \
--mcp-mount-path /api/mcp

--mcp-mount-path​

Type: String
Default: /mcp
Description: Mount path for MCP SSE endpoints (SSE transport only).

# Default mount path
python -m slack_mcp.webhook --integrated --mcp-mount-path /mcp

# Custom mount path
python -m slack_mcp.webhook --integrated --mcp-mount-path /api/v1/mcp

# Root mount path
python -m slack_mcp.webhook --integrated --mcp-mount-path /

Network Options​

--host​

Type: String
Default: 0.0.0.0
Description: Host interface to bind the server.

# Local development (localhost only)
python -m slack_mcp.webhook --host 127.0.0.1

# Specific IP address
python -m slack_mcp.webhook --host 192.168.1.100

--port​

Type: Integer
Default: 3000
Range: 1-65535
Description: Port number for the webhook server.

# Default port
python -m slack_mcp.webhook --port 3000

# Custom port
python -m slack_mcp.webhook --port 8080

# Auto-assign available port
python -m slack_mcp.webhook --port 0

Authentication & Environment Options​

--slack-token​

Type: String
Default: None
Description: Override Slack bot token (alternative to environment variable).

# Override bot token via CLI
python -m slack_mcp.webhook --slack-token "xoxb-your-token-here"

# Use environment variable (recommended)
export SLACK_BOT_TOKEN="xoxb-your-token-here"
python -m slack_mcp.webhook

--env-file​

Type: String
Default: .env
Description: Path to environment file.

# Use default .env file
python -m slack_mcp.webhook

# Explicitly specify .env file
python -m slack_mcp.webhook --env-file .env

--no-env-file​

Type: Flag
Default: False
Description: Disable automatic environment file loading.

# Disable .env file loading (use only system environment variables)
python -m slack_mcp.webhook --no-env-file

# Cloud deployment without .env files
python -m slack_mcp.webhook --no-env-file --host 0.0.0.0 --port ${PORT}

Logging & Debugging Options​

--log-level​

Type: String
Choices: DEBUG, INFO, WARNING, ERROR, CRITICAL
Default: INFO
Description: Sets the logging verbosity level.

# Detailed debug information
python -m slack_mcp.webhook --log-level DEBUG

# Development with integrated mode
python -m slack_mcp.webhook --integrated --log-level DEBUG

--retry​

Type: Integer
Default: 3
Range: 0-10
Description: Maximum number of retry attempts for failed requests.

# Default retry attempts
python -m slack_mcp.webhook --retry 3

# No retries (fail fast)
python -m slack_mcp.webhook --retry 0

# High retry for unstable networks
python -m slack_mcp.webhook --retry 5

Usage Examples​

Standalone Mode Examples​

# Simple standalone webhook server
python -m slack_mcp.webhook

# Explicit configuration
python -m slack_mcp.webhook \
--host 0.0.0.0 \
--port 3000 \
--log-level INFO

Integrated Mode Examples​

# Simple integrated server (webhook + MCP)
python -m slack_mcp.webhook --integrated

# Explicit SSE transport
python -m slack_mcp.webhook \
--integrated \
--mcp-transport sse \
--mcp-mount-path /mcp

Container Deployment Examples​

# Docker container configuration
python -m slack_mcp.webhook \
--host 0.0.0.0 \
--port 3000 \
--log-level INFO \
--no-env-file

# Integrated mode in container
python -m slack_mcp.webhook \
--integrated \
--mcp-transport sse \
--host 0.0.0.0 \
--port 3000 \
--no-env-file

Environment Variable Override​

CLI options can be overridden by environment variables:

CLI OptionEnvironment VariableExample
--hostHOSTexport HOST=0.0.0.0
--portPORTexport PORT=8080
--log-levelLOG_LEVELexport LOG_LEVEL=DEBUG
--mcp-transportMCP_TRANSPORTexport MCP_TRANSPORT=sse
--mcp-mount-pathMCP_MOUNT_PATHexport MCP_MOUNT_PATH=/api
--retryRETRY_ATTEMPTSexport RETRY_ATTEMPTS=5

Precedence: CLI arguments override environment variables, which override defaults.

# Environment variable with CLI override
export PORT=8080
export LOG_LEVEL=WARNING

# This will use port 3000 and DEBUG level (CLI overrides)
python -m slack_mcp.webhook --port 3000 --log-level DEBUG

Configuration Scripts​

Startup Script Examples​

Development Script (start-webhook-dev.sh)​

#!/bin/bash
# start-webhook-dev.sh

export SLACK_BOT_TOKEN="xoxb-your-dev-token"
export SLACK_SIGNING_SECRET="your-dev-signing-secret"

echo "Starting webhook server in development mode..."
python -m slack_mcp.webhook \
--host 127.0.0.1 \
--port 3000 \
--log-level DEBUG \
--env-file .env.development

Production Script (start-webhook-prod.sh)​

#!/bin/bash
# start-webhook-prod.sh

# Load environment variables
source .env.production

echo "Starting webhook server in production mode..."
python -m slack_mcp.webhook \
--host ${HOST:-0.0.0.0} \
--port ${PORT:-8080} \
--log-level ${LOG_LEVEL:-INFO} \
--retry ${RETRY_ATTEMPTS:-5}

Integrated Mode Script (start-integrated.sh)​

#!/bin/bash
# start-integrated.sh

source .env.production

echo "Starting integrated server (webhook + MCP)..."
python -m slack_mcp.webhook \
--integrated \
--mcp-transport ${MCP_TRANSPORT:-sse} \
--mcp-mount-path ${MCP_MOUNT_PATH:-/mcp} \
--host ${HOST:-0.0.0.0} \
--port ${PORT:-8080} \
--log-level ${LOG_LEVEL:-INFO}

Process Management​

Using systemd​

Create a systemd service (/etc/systemd/system/webhook-server.service):

[Unit]
Description=Slack Webhook Server
After=network.target

[Service]
Type=simple
User=webhook
WorkingDirectory=/opt/slack-webhook-server
EnvironmentFile=/opt/slack-webhook-server/.env.production
ExecStart=/opt/slack-webhook-server/venv/bin/python -m slack_mcp.webhook \
--host 0.0.0.0 \
--port 8080 \
--log-level INFO
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

Help and Version Information​

Display Help​

# Show all available options
slack-webhook-server --help

# Show version information
slack-webhook-server --version

Troubleshooting CLI Issues​

Common Problems​

1. Port Already in Use​

# Error: Address already in use
python -m slack_mcp.webhook --port 3000

# Solution: Find and kill process or use different port
lsof -ti:3000 | xargs kill -9
# OR
python -m slack_mcp.webhook --port 3001

2. Permission Denied​

# Error: Permission denied on port 80
python -m slack_mcp.webhook --port 80

# Solution: Use non-privileged port
python -m slack_mcp.webhook --port 8080

3. Missing Environment Variables​

# Error: Missing SLACK_BOT_TOKEN
python -m slack_mcp.webhook

# Solution: Set required environment variables
export SLACK_BOT_TOKEN="xoxb-your-token"
export SLACK_SIGNING_SECRET="your-secret"
python -m slack_mcp.webhook

Debug Mode​

Enable maximum verbosity for troubleshooting:

# Maximum debug output
python -m slack_mcp.webhook \
--log-level DEBUG \
--retry 0

# Debug integrated mode
python -m slack_mcp.webhook \
--integrated \
--mcp-transport sse \
--log-level DEBUG

For comprehensive webhook server setup: